I wanted to make a pitch for the Google Summer of Code topics listed below. Better support for shared-memory parallelism is essential for a healthy VTK for many years to come. If you are a student, please consider writing a proposal for one of these topics. If you are a professor/mentor, please encourage strong developers in your institution to apply.
Shared Memory Parallelism in VTK
Brief explanation: Development of multi-threaded algorithms in VTK. Multiple R&D efforts are leading the creation of an infrastructure to support next generation multi-threaded parallel algorithm development in VTK. These efforts are based on modern parallel libraries such as Intel TBB and Inria KAAPI. The main goal of this project will be the development of algorithms that leverage this infrastructure. The focus will be on upgrading existing core algorithms such as iso-surfacing, clipping, cutting, warping etc. to be parallel. Ideally, this will include modernization of the old multi-threading code in the imaging pipeline.
Expected results: A number of algorithms that execute in parallel using shared memory. Scalability of new algorithms will have to be measured and documented. Development of regression tests and examples will be also expected.
Prerequisites: Experience in C++ and multi-threaded code development. Understanding of core visualization algorithms and data structures. Some experience in VTK ideally but not necessary.
Mentor: Berk Geveci (berk dot geveci at kitware dot com) and David Gobbi (david dot gobbi at gmail dot com)
Fine-Grained Parallelism in VTK-m
Brief explanation: VTK-m is a toolkit of scientific visualization algorithms for emerging processor architectures ( GPU's and Coprocessors's ). VTK-m is designed for fine-grained concurrency and provides abstract data and execution models that can be applied to a variety of algorithms. The goal of the project will be on developing algorithms such as Slice by implicit surface, Gradient, Streamlines, External Faces, Resample, etc. using VTKM-m data and execution model.
Expected results: A collection of algorithms that are processor architecture agnostic and execute on GPU's and Coprocessor's using VTK-m's data and execution model. Performance of new algorithms will have to be measured and documented. Development of regression tests and examples will be also expected.
Prerequisites: Experience in templated C++ development, visualization algorithms, data structures and highly parallel architectures such as GPU's. Some experience in VTK or CUDA or OpenCL would be ideal but not necessary.
Mentor: Robert Maynard (robert dot maynard at kitware dot com) and Kenneth Moreland (kmorel at sandia dot gov)