vtkStreamTracer recent changes

FYI vtkStreamTracer had been threaded (one thread per streamline). This is a complex change and there may be residual issues - please let me know if you come across anything.

One issue I am seeing on a few Rogue Research testing machines (e.g., wrt TestEvenlySpacedStreamlines2D). It appears that these machines do not build a “Sequential” backend which I think is a problem. It means that code like that below does not work properly. There are some situations where serial execution is required (note the SerialExecution flag) and without a sequential backend the system uses std::thread which results in a sigabrt

  if (numSeeds < VTK_ST_THREADING_THRESHOLD || this->SerialExecution)
  { // Serial
    vtkSMPTools::LocalScope(vtkSMPTools::Config{ static_cast<std::string>("Sequential") },
      [&]() { vtkSMPTools::For(0, numSeeds, ti); });
  }
  else
  {
    vtkSMPTools::For(0, numSeeds, ti);
  }

Will. for the sequential part, you could just manually invoke the operator and give it the range (0, numSeeds), no? You might need to call Reduce as well. That way you won’t need to depend on a Sequential backend build option being enabled. Or is it not that easy?

It’s easy and I will do it this afternoon when I return to the office…

Yes, handling the case properly rather than assuming the backend is present would be nice. If you want to do the check properly, #if VTK_SMP_ENABLE_SEQUENTIAL from vtkSMP.h is the thing to check.