Using Simulation Memory in Catalyst Co-Processing
As computational simulations are used to solve larger problems at higher resolutions, their memory requirements grow quickly. A sufficiently complex simulation can easily consume most of a processing node’s RAM, leaving few resources available for “live” (in-situ) analysis of the running simulation. Kitware‘s open-source ParaView-based Catalyst library, which provides powerful in-situ visualization and analysis capabilities, has new features for building lightweight analysis pipelines that are less demanding on system resources.
Until now, a simulation’s Catalyst adapter needed to copy all of the simulation dataset’s geometry, topology, and attributes into standard VTK data structures, such as vtkUnstructuredGrid, vtkDoubleArray, etc. This meant that two copies of the dataset needed to exist in memory simultaneously during any in-situ coprocessing — one for the simulation, and one for Catalyst.
New interfaces have been added that allow developers to adapt a simulation’s memory layout into a VTK wrapper, allowing Catalyst to reuse the external simulation data in an analysis pipeline. Coordinate and attribute data are mapped through the vtkMappedDataArray interface, while topology information is accessed via the vtkMappedUnstructuredGrid API. Using these new techniques lessen the coprocessing overhead, making in-situ analysis feasible for calculations on larger datasets.
The details of using and implementing these interfaces are provided on this VTK wiki page.