VTK-m’s First Code Sprint

At the start of September the VTK-m project had it's first code sprint at the LLNL HPC Innovation Center. VTK-m is library for scientific visualization algorithms for GPU's and Coprocessors's. VTK-m is designed around fine-grained concurrency and provides abstract data and execution models that can be applied to a variety of algorithms. The code sprint brought the core VTK-m developer team together with a range of people from HPC community, and experts in both device hardware and software. The code sprint was designed to both teach people how to use VTK-m algorithms, but also how to contribute back to the project be through new algorithms, features or examples.

The code sprint started early Tuesday morning with two concurrent presentations the first gave an overview of the VTK-m project (presentation), and the second provided a technical overview of how to do simulation integration.

After the presentations teams where formed, with some of the goals being:

  • An example showing VTK-m's interoperability with OpenGL.
  • An example showing the VTK-m MarchingCubes algorithm
  • Improve the existing VTK-m MarchingCubes algorithm to handle more cell types
  • Improve the existing of VTK-m's VertexClustering algorithm.
  • Look at coupling VTK-m with LULESH, pyFR, and AVF-LESLIE.
  • Port an existing ray tracer over to use VTK-m.
  • Optimize VTK-m's point coordinate code when used with UniformGrids.
  • Improve VTK-m's CUDA usage, mainly by focusing on better Thrust performance.
  • Improve the testing infrastructure of VTK-m by adding arbitrary hexahedra and tetrahedra data sets generation, and the creation of file I/O routines for basic VTK files.
  • Extend VTK-m's documentation.


As the first day wrapped up each team presented what it had accomplished, and talked about what they needed to do on the second day. Surprisingly numerous groups had already accomplished all there goals and therefore talked about new things they wanted to-do on the final day.

Code Sprint Attendees

The second and final day of the code sprint started with a flurry of merge requests on the VTK-m project as groups started to publish the work they had previously shown off. At one point the VTK-m continuous integration build machines had over 25 pending jobs, a new record for the project. After a quick lunch break ( and longer debate

over east coast versus west coast pizza ) we had a breakout presentation from NVidia on performance profiling, and advanced Thrust usage. Afterwards groups had only a couple more hours to finish there projects.

As the final day wrapped up we recorded the accomplishments of the coding sprint and where amazed with how many things we accomplished. Below is a summary of some of the work we did.

Work Status
Example of Isocontour and Rendering Merged
Optimized Uniform Point Coordinates Merged
Improvements of thrust inclusive scan Merged
OpenGL interop example Merged
Cell to point topology map Merged
Fixed bugs in isosurface Merged
Integration to AVF-LESLIE Finished
Access PyFR data in VTK-m Finished
Proxy simulation wrapping Finished
General hexahedra isosurface Merge request
Generate hexahedra and tetrahedra data sets Merge request
Vertex clustering improvements Merge request
Thrust sort perform better Merge request
VTK unstructured grid file reader Merge request
Composite vectors for coordinate systems In progress
Built independent project example In progress
Point locator acceleration structure In progress
Ray tracing In progress

 First I would like to thank LLNL for hosting the coding sprint, Eric Brugger for keeping us well caffeinated, and for NVidia for providing lunch and technical expertise. Lastly I would like to thank all the participants for producing amazing results in a very limited amount of time:

  • Chris Sewell (LANL)
  • Olli Lo (LANL)
  • Cyrus Harrison (LLNL)
  • Eric Brugger (LLNL)
  • Hari Krishnan (LBL)
  • David Camp (LLBL)
  • Jeremy Meredith (ORNL)
  • Dave Pugmire (ORNL)
  • Ken Moreland (SNL)
  • Hank Childs (U. of Oregon / LBNL)
  • Matt Larsen (U. of Oregon)
  • Brent Lessley (U. of Oregon)
  • Ryan Bleile (U. of Oregon)
  • James Kress (U. of Oregon)
  • Tyson Neuroth (UC Davis)
  • Huu Tan Nguyen (UC Davis)
  • Brad Whitlock (Intelligent Light)
  • Berk Geveci (Kitware)
  • Sujin Philip (Kitware) 
  • Tom Fogal (NVidia)
  • Peter Messmer (NVidia)
  • Robert Crovella (NVidia)
  • Steven Dalton (NVidia)
  • Steven Parker (NVidia)
  • Bhushan Desam (NVidia)


Questions or comments are always welcome!