<div dir="ltr">Work is continuing using <a href="http://www.kitware.com/blog/home/post/915" target="_blank">vtkSMPTools</a> and on <a href="http://m.vtk.org" target="_blank">VTK-m</a>. Here is a another quick update focused on vtkSMPTools-related work.<div><br><div>+ vtkCheckerboardSplatter is in and I have not heard complaints so far.</div><div>+ vtkSpanSpace can be used to accelerated unstructured isocontouring. It builds the space in parallel.</div>+ vtkFlyingEdges3D/2D was presented at the recent LDAV workshop at IEEE Vis 2015. A draft of the paper is <a href="https://www.researchgate.net/publication/282975362_Flying_Edges_A_High-Performance_Scalable_Isocontouring_Algorithm" target="_blank">here</a>.<div>+ 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).</div><div>+ 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).</div></div><div>+ There is a vtkSMPTools::Sort() available that is a drop-in replacement for std::sort.</div><div><br></div><div>We are slowly adding and testing these classes/capabilities into VTK classes that use them; and major flagship applications like <a href="http://www.paraview.org/" target="_blank">ParaView</a>, <a href="http://www.slicer.org/" target="_blank">Slicer</a>, and <a href="http://www.tomviz.org/" target="_blank">TomViz</a>. 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.</div><div><br></div><div>On the list for current and future development:</div><div>+ vtkCellDataToPointData</div><div>+ Variants of vtkFlyingEdgesPlaneCutter for other structured data forms</div><div>+ Variants of Flying Edges for: clipping and cutting structured data forms</div><div>+ 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.)</div><div>+ Faster quadric clustering</div><div>+ Threaded, unstructured grid contouring using vtkSpanSpace, etc.</div><div>+ Replacing std::sort() with vtkSMPTools::Sort()</div><div>+ vtkShepardMethod filter</div><div>+ Replacing vtkPointLocator with vtkStaticPointLocator where it makes sense</div><div><br></div><div>(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 :-))</div><div><br></div><div>Best,</div><div>W</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 13, 2015 at 12:56 PM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>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:</div><div><br></div><div>    Common/ExecutionModel/vtkThreadedImageAlgorithm.cxx (base class)<br></div><div><div>    Filters/FlowPaths/vtkStreamer.cxx (base class)</div><div>    Filters/Hybrid/vtkImplicitModeller.cxx</div><div>    Rendering/Core/vtkImageMapper3D.cxx</div><div>    Rendering/Volume/vtkEncodedGradientEstimator.cxx (base class)</div><div>    Rendering/Volume/vtkFixedPointVolumeRayCastMapper.cxx</div><div>    Rendering/Volume/vtkUnstructuredGridVolumeRayCastMapper.cxx</div><div>    Rendering/Volume/vtkVolumeRayCastMapper.cxx</div></div><div><br></div><div><a href="http://www.vtk.org/Wiki/VTK/Replacing_vtkMultiThreader_with_vtkSMPTools" target="_blank">http://www.vtk.org/Wiki/VTK/Replacing_vtkMultiThreader_with_vtkSMPTools</a><br></div><div><br></div><div>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.</div><span><font color="#888888"><div><br></div><div> - David</div></font></span><div><div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 13, 2015 at 6:28 AM, Will Schroeder <span dir="ltr"><<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">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.<br clear="all"><div><br></div><a href="http://www.kitware.com/blog/home/post/915" target="_blank">http://www.kitware.com/blog/home/post/915</a><br>
<div><br></div><div>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.</div><span><font color="#888888"><div><br>W</div></font></span></div></blockquote></div><br></div></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>William J. Schroeder, PhD<br>Kitware, Inc.<br>28 Corporate Drive<br>Clifton Park, NY 12065<br><a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br><a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a><br><a href="tel:%28518%29%20881-4902" value="+15188814902" target="_blank">(518) 881-4902</a></div>
</div></div>