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.
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)