[vtk-developers] Gentle introduction to vtkSMPTools and vision for parallel computing including VTK-m

Will Schroeder will.schroeder at kitware.com
Thu Nov 12 07:48:02 EST 2015


Work is continuing using vtkSMPTools
<http://www.kitware.com/blog/home/post/915> and on VTK-m <http://m.vtk.org>.
Here is a another quick update focused on vtkSMPTools-related work.

+ vtkCheckerboardSplatter is in and I have not heard complaints so far.
+ vtkSpanSpace can be used to accelerated unstructured isocontouring. It
builds the space in parallel.
+ vtkFlyingEdges3D/2D was presented at the recent LDAV workshop at IEEE Vis
2015. A draft of the paper is here
<https://www.researchgate.net/publication/282975362_Flying_Edges_A_High-Performance_Scalable_Isocontouring_Algorithm>
.
+ We pushed a vtkFlyingEdgesPlaneCutter to process volumes. It is running
~30-40x faster than the previous vtkSynchronizedTemplatesCutter3D (when
using my 8-thread Windows development laptop).
+ A new vtkStaticPointLocator has just been pushed (Merge Request #898).
It's about 6-12x faster (to build the locator) than vtkPointLocator, and
even faster if you take into account the cost to delete the locator
instance (again on my 8-thread system and very large data).
+ There is a vtkSMPTools::Sort() available that is a drop-in replacement
for std::sort.

We are slowly adding and testing these classes/capabilities into VTK
classes that use them; and major flagship applications like ParaView
<http://www.paraview.org/>, Slicer <http://www.slicer.org/>, and TomViz
<http://www.tomviz.org/>. If you are not doing so already, we recommend
that you start developing with threading in mind (using both vtkSMPTools
and VTK-m which is ripening nicely BTW). Make sure to build optimized code
as the templated C++ needs this to realize full performance. Also any
feedback that you can provide regarding usage and issues is welcome.

On the list for current and future development:
+ vtkCellDataToPointData
+ Variants of vtkFlyingEdgesPlaneCutter for other structured data forms
+ Variants of Flying Edges for: clipping and cutting structured data forms
+ Variants of Flying Edges for: vtkDiscreteMarchingCubes (i.e., contouring
label maps, IMO one of the most useful and least publicized classes in VTK
written by Bill Lorensen and Jim Miller.)
+ Faster quadric clustering
+ Threaded, unstructured grid contouring using vtkSpanSpace, etc.
+ Replacing std::sort() with vtkSMPTools::Sort()
+ vtkShepardMethod filter
+ Replacing vtkPointLocator with vtkStaticPointLocator where it makes sense

(If anyone out there wants to tackle one of these over the holiday season I
am happy to work with you. Give yourself and your loved ones the gift of
coding :-))

Best,
W

On Sat, Jun 13, 2015 at 12:56 PM, David Gobbi <david.gobbi at gmail.com> wrote:

> I grepped the code to see how many classes directly use the old
> vtkMultiThreader for SMP.  It's an amazingly small number, because
> multithreading was nicely consolidated into base classes like
> vtkThreadedImageAlgorithm and vtkStreamer:
>
>     Common/ExecutionModel/vtkThreadedImageAlgorithm.cxx (base class)
>     Filters/FlowPaths/vtkStreamer.cxx (base class)
>     Filters/Hybrid/vtkImplicitModeller.cxx
>     Rendering/Core/vtkImageMapper3D.cxx
>     Rendering/Volume/vtkEncodedGradientEstimator.cxx (base class)
>     Rendering/Volume/vtkFixedPointVolumeRayCastMapper.cxx
>     Rendering/Volume/vtkUnstructuredGridVolumeRayCastMapper.cxx
>     Rendering/Volume/vtkVolumeRayCastMapper.cxx
>
> http://www.vtk.org/Wiki/VTK/Replacing_vtkMultiThreader_with_vtkSMPTools
>
> Our GSoC student has been doing a great job updating the
> vtkThreadedImageAlgorithm to use vtkSMPTools.  I'll tackle the ImageMapper,
> since it's one of my own classes, and I might be able to take a look at the
> implicit modeller.
>
>  - David
>
>
> On Sat, Jun 13, 2015 at 6:28 AM, Will Schroeder <
> will.schroeder at kitware.com> wrote:
>
>> FYI- There is a lot of recent work going on in VTK to address parallel
>> computing, ranging from multi-core, shared memory approaches (vtkSMPTools)
>> to GPU's and co-processors (VTK-m), to rewriting algorithms for parallel
>> computation. Here's a high-level introduction.
>>
>> http://www.kitware.com/blog/home/post/915
>>
>> There's a ton of work to do so if you are interested let's start some
>> threads (no pun intended) and coordinate our efforts.
>>
>> W
>>
>
>


-- 
William J. Schroeder, PhD
Kitware, Inc.
28 Corporate Drive
Clifton Park, NY 12065
will.schroeder at kitware.com
http://www.kitware.com
(518) 881-4902
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20151112/6ba5cf21/attachment.html>


More information about the vtk-developers mailing list