ParaView Spatio-Temporal Parallelism Revised
As Andy Bauer described a long while back in the Kitware blog, ParaView provides a way to generate more efficient batch scripts for temporal data processing. The strategy is to make the temporal domain the primary axis of parallel decomposition in an MPI job. That is, groups of nodes in a cluster simultaneously process different time steps. For tasks like generating movies, where you make sequences of thousands of more or less independent images, this can cut wait times down substantially.
There hasn’t been a lot of development on this feature since its introduction, but we’ve had a chance to revisit it recently. What we’ve done is to promote this spatio-temporal batch parallel capability out of the dusty non-default plugin dungeon to mainstream ParaView and to revamp the user interface. The new and improved version just barely missed ParaView 5.6, but it is available in master and the nightly binaries today. The work extends upon the new and improved Catalyst Script generation that is in ParaView 5.6.
To create a spatio-temporal script, create a visualization pipeline with some representative input and then use the Catalyst Export Inspector to define the image and data captures that the batch script should produce at run time. This much is common to both Catalyst and temporal scripts. In fact, the process differs only in that there are two additional choices to make and that you pick Export Temporal Script from the Catalyst menu rather than Export Catalyst Script when you are ready to save out the python script. The two additional choices are in the Spatio-Temporal Controls section at the bottom of the export inspector. The options are advanced so use search or the gear icon to see them. In Time Compartment Size tell the script how many nodes on the cluster you need to process a single time step. Tell the script what files the compartments should read with the Input File Pattern, where the “*” will be replaced at run time by a step number.
After you export the script, run it through your cluster’s MPI with some variation of the following.
mpiexec -np N pvbatch –symmetric my_saved_temporal_script.py
Where N is any multiple of the time compartment size. The run will give you the same results as a normal ParaView batch script would but potentially much faster.