ParaView Editions
When Catalyst, the ParaView-based in situ analysis and visualization library, was created, it became apparent fairly quickly that one of the challenges with adoption of a ParaView-based library for in situ applications was the complexity of building ParaView.
While those challenges exist even for the standalone application, for in situ use-cases the build-matrix can get fairly involved very quickly since compilers and dependent libraries like MPI, HDF5, netcdf etc. needed to match between ParaView and the simulation codes. To address this issue, we created Catalyst editions. Simply speaking, a Catalyst edition is a subset of ParaView. A small set of Catalyst editions were created. The Catalyst editions, however, were separate source archives generated from ParaView source using a script. That made it trickier to maintain. Also, generating new editions was a non-trivial task. With these challenges in mind, we undertook a major rework of the ParaView / VTK CMake build scripts. Besides modernizing the CMake build files, an objective was to make it easier to build variants of ParaView for various use-cases. To help ease the development process, Catalyst editions were temporarily removed in ParaView 5.7 release. With ParaView 5.8, this capability is now back in the form of simply ParaView Editions.
Simply speaking, a new CMake setting, PARAVIEW_BUILD_EDITION, is now available at configure time that indicates which edition of ParaView to build. No more separate source tarballs for editions. The new VTK/ParaView module system makes it easier to enable/disable modules. An edition is simply a predefined collection of modules. 5 standard editions are available with ParaView 5.8. Custom ones can be created by starting with one of these editions and the manually enabling additional modules using the VTK_MODULE_ENABLE_<name> settings.
Once an edition is chosen, you can enable/disable capabilities such as MPI (PARAVIEW_USE_MPI), Python (PARAVIEW_USE_PYTHON), etc. using appropriate PARAVIEW_USE_<capability> settings.
Standard Editions with v5.8
Five standard editions are provided with ParaView 5.8: CORE, RENDERING, CATALYST, CATALYST_RENDERING and CANONICAL. The details are as follows:
CORE: This is most basic edition that is required to build a package that includes core ParaView functionality necessary for client-server and distributed computing.
RENDERING: This is same a CORE but includes additional modules to bring in support for rendering including 3D views, plotting views and representations.
CORE and RENDERING are intended for advanced users who want to fine tune the modules to enable explicitly. For most other users including those building in situ Catalyst libraries, the following three editions may be more appropriate.
CATALYST: This is an edition intended for in situ use-cases without rendering. It includes most of standard ParaView modules expect optional I/O libraries like HDF5, CGNS, NetCDF. In our experience getting these optional dependencies built on HPC systems for in situ applications can be challenging since it requires these libraries to match between the simulation code and the ParaView code.
CATALYST_RENDERING: This is same as CATALYST but also includes other rendering related modules.
CANONICAL (default): This is the default setting and results in a ParaView build with the standard collection of modules enabled including rendering and optional I/O. This edition is currently required if you want to build the Qt-based ParaView desktop client.
Things to note
CANONICAL is the default. If you are intended to do a non-CANONICAL build, it is advisable to pass the PARAVIEW_BUILD_EDITION setting on the command line to CMake before the figure configure e.g. `cmake -DPARAVIEW_BUILD_EDITION:STRING=CATALYST …`. This will ensure that optional features and plugins are defaulted to a value more appropriate for the chosen edition.
Plugins are generally disabled for non-CANONICAL builds. If you enable a plugin it may fail to configure and complain about missing module is all the modules that plugin needs are not enabled in that edition. In which case you can either enable the module or choose an appropriate edition.
PARAVIEW_BUILD_ and PARAVIEW_USE_ CMake settings affect all editions. Thus, you can use these to control the build state or capabilities enabled for each of the editions. For example, to enable Python support for any edition, simply turn on PARAVIEW_USE_PYTHON setting.
Acknowledgements
The work was funded by Sandia National Laboratories.
Sandia National Laboratories is a multimission laboratory managed and operated by National Technology and Engineering Solutions of Sandia, LLC., a wholly owned subsidiary of Honeywell International, Inc., for the U.S. Department of Energy’s National Nuclear Security Administration under contract DE-NA0003525.