We realized we couldn’t use the “standard” version of VTKm (with GPU backends) for this work. The GPU backends can’t use mechanisms such as pointer dereferencing and access to random iterators which are needed in some SMPTools functions. (e.g in
vtkSMPTools::Fill support non indexed arrays such as
After some reflection we wondered why the SMPTools doesn’t support GPU whereas the name SMP would suggest it does. Moreover we could technically support it through VTKm (the idea here is not to add a new GPU backend) and allow us to use the full potential of VTKm GPU backends.
But it may be incompatible with the current implementation of
Fill and with some recent new suggestions (e.g. add
std::set support for
Finally if we don’t want to support the GPU backends we need to find a way to only use the CPU version of VTKm, one of them would be to compile twice VTKm: one for vtk algorithms and the other for the smptools (with CPU backends only). But as VTKm is quite long to compile it wouldn’t be perfect.
What future for the SMP tools, to become vtkMultiThreadTools, or to handle GPU with the according constraints?