On Mon, Jan 12, 2015 at 3:56 AM, Dr. Roman Grothausmann < [email protected]> wrote:
> Dear mailing list members, > > Since I already started to create and use a modified version of > vtkGaussianSplatter I now wonder if it were possible to make > vtkGaussianSplatter run multi-threaded. I'd expect that this is possible if > getting and setting pixel values is thread-safe. In vtkGaussianSplatter > pixel values are stored in a vtkDoubleArray and read with GetValue and > written with SetTuple. There is no info in the docs whether SetTuple (in > the way used) is thread-safe. Although GetValue seems to exist, I cannot > find any hint in the docs that vtkDoubleArray offers this function, however > a thread-safe version of GetTuple exists. > So is there any reason vtkGaussianSplatter cannot be made multi-threaded > with VTK6? > The SetTuple/GetTuple methods don't lock the array, so they equivalent to (but slower than) raw memory reads and writes. And writing memory is not thread safe if threads can write to the same memory address or (depending on alignment) to adjacent addresses. For vtkGaussianSplatter, any performance gains that could be had by multi-threading would depend on the threads all being able to write at the same time, therefore any sort of "lock" would kill the performance by essentially serializing the writes. Hence, in order for vtkGaussianSplatter to be properly multi-threaded, each thread must write to its own block of output memory. After the splatting is done these must be composited together. I wrote a multi-threaded splatting filter once (for ultrasound reconstruction), and in that case I divided my input points such that each thread would write to different (but adjacent) memory regions within the output. It performed well but wasn't completely thread-safe, because it was possible for memory collisions to occur on the border between the regions. In summary: properly multi-threading vtkGaussianSplatter would be a moderately difficult task. I haven't heard of anyone who has done it yet. - David
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
