[vtk-developers] vtkCheckerboardSplatter

Aashish Chaudhary aashish.chaudhary at kitware.com
Mon Feb 16 11:25:27 EST 2015


This is an excellent news! And will be useful for some of the projects I am
involved with.  We will come up with some numbers for your information.

- Aashish

On Sun, Feb 15, 2015 at 6:28 PM, Will Schroeder <will.schroeder at kitware.com>

> *Summary:*
> In our continuing effort to speed up VTK and add in new parallel computing
> support, we just implemented a new version of vtkGaussianSplatter. The new
> class, vtkCheckerboardSplatter, is much faster in serial mode, and if you
> enable threading (e.g., use TBB through vtkSMPTools) it is >10x faster
> depending on the number of threads and particulars of the input data.
> While I was at it, I also multithreaded a portion of vtkGaussianSplatter
> so this class is a bit faster too when threading is enabled.
> The code is undergoing review in gerrit:
> http://review.source.kitware.com/#/c/19269/
> *Background:*
> Surprisingly vtkGaussianSplatter is still in widespread use, mainly to
> convert unstructured data (by sampling with points), or data without
> topology, into a volumetric dataset. The resulting volume can then be
> isocontoured, volume rendered, etc. The problem with this class is that it
> was originally written over 20 years ago as a demonstration and has lots of
> other cobwebs in evidence. Most importantly, this original implementation
> does not lend itself to effective shared memory parallel processing. As a
> result, we created the vtkCheckerboardSplatter that threads across the
> splat footprint, as well as splatting multiple points simultaneously.
> The basic idea is to use a 8-way checkerboarding to splat points in safely
> separated regions of the volume so that the splat operations can write into
> the output volume without write contention. Think of creating blocks
> consisting of checkerboard squares (like an octree) each one of eight
> colors, where the points resident in one of the colors/squares can be
> simultaneously splatted in parallel. The splat operation, for big enough
> splat footprints, is threaded as well.
> There were some other modifications to the API, mainly the splat footprint
> is separated from the Gaussian radius. Also, the accumulation process is
> slightly different, and the input and output types have been expanded to
> include combinations of (float,double).
> If you are interested, please try it out and provide feedback. I'm also
> looking for candidates for other classes to multithread / speed up, so
> please let me know via separate email. At some point I'll write up a paper
> but I'm having too much fun coding now to be slowed down by that sort of
> thing :-)


*| Aashish Chaudhary | Technical Leader         | Kitware Inc.            *
*| http://www.kitware.com/company/team/chaudhary.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150216/0d5f1fd7/attachment.html>

More information about the vtk-developers mailing list