== How to build !ParaView with support for in-situ visualization [[PageOutline]] Building a parallel version of !ParaView on your system allows you to configure !ParaView that way, that it uses your MPI library and compiler to avoiding incompatibilities. If you do not need any special configuration use the prebuild packages provided here ([http://www.paraview.org/download link])! In the following we demonstrate how to build !ParaView on the example of !ParaView 5.3.0 (from 04/2017) on JURECA. \\ Please ensure you always use the latest version and replace "PV_VERSION" or "PV_VERSION_SHORT" by the appropriate numbers. All 3rd-party libs and their required versions used by kiteware can be found [http://www.paraview.org/Wiki/ParaView/Binaries here]. \\ \\ === QUICK HOWTO {{{ #!ShellExample PV_VERSION=5.3.0 PV_VERSION_SHORT=5.3 wget "http://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=source&os=all&downloadFile=ParaView-v${PV_VERSION}.tar.gz" mv "download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=source&os=all&downloadFile=ParaView-v${PV_VERSION}.tar.gz" ParaView-v${PV_VERSION}.tar.gz tar -xzf ParaView-v${PV_VERSION}.tar.gz wget "http://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=data&os=all&downloadFile=ParaViewData-v${PV_VERSION}.tar.gz" mv "download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=data&os=all&downloadFile=ParaViewData-v${PV_VERSION}.tar.gz" ParaViewData-v${PV_VERSION}.tar.gz tar -xzf ParaViewData-v${PV_VERSION}.tar.gz }}} {{{ #!ShellExample mkdir build cd build ccmake ../ParaView-v${PV_VERSION}-source make -j }}} \\ \\ === DETAILED HOWTO More Infos can be found [http://www.paraview.org/Wiki/ParaView:Build_And_Install here]. The following shows how !ParaView was compiled on JURECA in 04/2017: ==== 1) download/extract !ParaView source {{{ #!ShellExample #!/bin/sh PV_VERSION=5.3.0 PV_VERSION_SHORT=5.3 wget "http://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=source&os=all&downloadFile=ParaView-v${PV_VERSION}.tar.gz" mv "download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=source&os=all&downloadFile=ParaView-v${PV_VERSION}.tar.gz" ParaView-v${PV_VERSION}.tar.gz tar -xzf ParaView-v${PV_VERSION}.tar.gz wget "http://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=data&os=all&downloadFile=ParaViewData-v${PV_VERSION}.tar.gz" mv "download.php?submit=Download&version=v${PV_VERSION_SHORT}&type=data&os=all&downloadFile=ParaViewData-v${PV_VERSION}.tar.gz" ParaViewData-v${PV_VERSION}.tar.gz tar -xzf ParaViewData-v${PV_VERSION}.tar.gz }}} ==== 2) load required modules {{{ #!ShellExample #!/bin/sh module --force purge module load Stages/Devel-2017a module load Intel module load ParaStationMPI module load CMake module load VirtualGL/default module load Python/2.7.13 module load SciPy-Stack/2017a-Python-2.7.13 module load tbb/2017.4.174 export CMAKE_INCLUDE_PATH=$EBROOTTBB/tbb/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTTBB/tbb/lib:$CMAKE_LIBRARY_PATH module load Boost/1.63.0-Python-2.7.13 export CMAKE_INCLUDE_PATH=$EBROOTBOOST/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTBOOST/lib:$CMAKE_LIBRARY_PATH module load X11/20170129 export CMAKE_INCLUDE_PATH=$EBROOTX11/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTX11/lib:$CMAKE_LIBRARY_PATH module load libGLU/.9.0.0 export CMAKE_INCLUDE_PATH=$EBROOTLIBGLU/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTLIBGLU/lib:$CMAKE_LIBRARY_PATH module load bzip2/.1.0.6 export CMAKE_INCLUDE_PATH=$EBROOTBZIP2/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTBZIP2/lib:$CMAKE_LIBRARY_PATH module load HDF5/1.8.18 export CMAKE_INCLUDE_PATH=$EBROOTHDF5/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTHDF5/lib:$CMAKE_LIBRARY_PATH module load FFmpeg/.3.2.4 export CMAKE_INCLUDE_PATH=$EBROOTFFMPEG/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTFFMPEG/lib:$CMAKE_LIBRARY_PATH module load OSPRay/1.2.1-lib export CMAKE_INCLUDE_PATH=$EBROOTOSPRAY/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTOSPRAY/lib:$CMAKE_LIBRARY_PATH module load libpng/.1.6.28 export CMAKE_INCLUDE_PATH=$EBROOTLIBPNG/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTLIBPNG/lib:$CMAKE_LIBRARY_PATH module load expat/.2.2.0 export CMAKE_INCLUDE_PATH=$EBROOTEXPAT/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTEXPAT/lib:$CMAKE_LIBRARY_PATH module load freetype/.2.7.1 export CMAKE_INCLUDE_PATH=$EBROOTFREETYPE/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTFREETYPE/lib:$CMAKE_LIBRARY_PATH module load libjpeg-turbo/.1.5.1 export CMAKE_INCLUDE_PATH=$EBROOTLIBJPEGMINTURBO/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTLIBJPEGMINTURBO/lib:$CMAKE_LIBRARY_PATH module load libxml2/.2.9.4 export CMAKE_INCLUDE_PATH=$EBROOTLIBXML2/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTLIBXML2/lib:$CMAKE_LIBRARY_PATH module load LibTIFF/.4.0.7 export CMAKE_INCLUDE_PATH=$EBROOTLIBTIFF/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTLIBTIFF/lib:$CMAKE_LIBRARY_PATH module load zlib/.1.2.11 export CMAKE_INCLUDE_PATH=$EBROOTZLIB/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTZLIB/lib:$CMAKE_LIBRARY_PATH module load netCDF/4.4.1.1 export CMAKE_INCLUDE_PATH=$EBROOTNETCDF/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTNETCDF/lib:$CMAKE_LIBRARY_PATH module load netCDF-C++/4.2 export CMAKE_INCLUDE_PATH=$EBROOTNETCDFMINCPLUSPLUS/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTNETCDFMINCPLUSPLUS/lib:$CMAKE_LIBRARY_PATH module load netCDF-Fortran/4.4.4 export CMAKE_INCLUDE_PATH=$EBROOTNETCDFMINFORTRAN/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTNETCDFMINFORTRAN/lib:$CMAKE_LIBRARY_PATH module load mpi4py/2.0.0-Python-2.7.13 export CMAKE_INCLUDE_PATH=$EBROOTMPI4PY/include:$CMAKE_INCLUDE_PATH export CMAKE_LIBRARY_PATH=$EBROOTMPI4PY/lib:$CMAKE_LIBRARY_PATH module load Qt5/5.8.0 # Qt5 must be loaded last, as some packages might with Qt4 dependency for their GUIs (eg. OSPRay) module load nvidia-libs/375.26-glvnd }}} ==== 3) configure !ParaView {{{ #!ShellExample #!/bin/sh PWD=$(pwd) mkdir install mkdir build cd build configopts="-DCMAKE_INSTALL_PREFIX=${PWD}/install/ParaView-v${PV_VERSION} " configopts="-DCMAKE_C_COMPILER=icc $configopts" configopts="-DCMAKE_CXX_COMPILER=icpc $configopts" ### --- general settings --- ### configopts="-DCMAKE_VERBOSE_MAKEFILE=ON $configopts" configopts="-DCMAKE_CXX_STANDARD=11 $configopts" configopts="-DCXX_STANDARD_REQUIRED=ON $configopts" configopts="-DCMAKE_CXX_EXTENSIONS=OFF $configopts" # eg.-std=c++11 rather than -std=gnu++11 configopts="-DVTK_USE_CXX11_FEATURES=ON $configopts" configopts="-DBUILD_TESTING=ON $configopts" configopts="-DBUILD_EXAMPLES=ON $configopts" configopts="-DCMAKE_BUILD_TYPE=Debug $configopts" configopts="-DZLIB_LIBRARY_DEBUG=$EBROOTZLIB/lib/libz.so $configopts" configopts="-DPARAVIEW_BUILD_QT_GUI=ON $configopts" configopts="-DPARAVIEW_QT_VERSION=5 $configopts" configopts="-DBUILD_SHARED_LIBS=ON $configopts" configopts="-DPARAVIEW_ENABLE_PYTHON=ON $configopts" configopts="-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON $configopts" ### --- parallel (on-node) --- ### configopts="-DVTK_MAX_THREADS=64 $configopts" #configopts="-DPARAVIEW_USE_VTKM=ON $configopts" configopts="-DVTK_SMP_IMPLEMENTATION_TYPE=TBB $configopts" # https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ # TBB settings (cmake-autodetect fails and finds libs in OSPRay subdir) configopts="-DTBB_ROOT=$EBROOTTBB/tbb $configopts" configopts="-DTBB_LIBRARY=$EBROOTTBB/tbb/lib/libtbb.so.2 $configopts" configopts="-DTBB_LIBRARY_DEBUG=$EBROOTTBB/tbb/lib/libtbb_debug.so.2 $configopts" configopts="-DTBB_LIBRARY_MALLOC=$EBROOTTBB/tbb/lib/libtbbmalloc.so.2 $configopts" configopts="-DTBB_LIBRARY_MALLOC_DEBUG=$EBROOTTBB/tbb/lib/libtbbmalloc_debug.so.2 $configopts" ### --- parallel (distributed) --- ### configopts="-DPARAVIEW_USE_ICE_T=ON $configopts" configopts="-DPARAVIEW_USE_MPI=ON -DPARAVIEW_USE_MPI_SSEND=OFF $configopts" ### --- parallel IO --- ### # XDMF configopts="-DPARAVIEW_ENABLE_XDMF3=ON $configopts" configopts="-DVTK_XDMF_USE_MPI=ON $configopts" configopts="-DXDMF_BUILD_MPI=ON $configopts" configopts="-DXDMF_USE_BZIP2=ON $configopts" configopts="-DXDMF_USE_GZIP=ON $configopts" # HDF5 configopts="-DVTK_USE_SYSTEM_HDF5=ON $configopts" # NetCDF configopts="-DVTK_USE_SYSTEM_NETCDF=ON $configopts" configopts="-DNETCDF_CXX_ROOT=$EBROOTNETCDFMINCPLUSPLUS $configopts" configopts="-DNETCDF_F77_ROOT=$EBROOTNETCDFMINFORTRAN $configopts" configopts="-DNETCDF_F90_ROOT=$EBROOTNETCDFMINFORTRAN $configopts" ### --- large data --- ### configopts="-DVTK_USE_64BIT_IDS=ON $configopts" configopts="-DVTK_USE_LARGE_DATA=ON $configopts" ### --- rendering --- ### configopts="-DVTK_RENDERING_BACKEND:STRING=OpenGL2 $configopts" # needed for NVIDIA IndeX plugin (depends on libvtkRenderingVolumeOpenGL2-pv*) # OpenGL (hardware) configopts="-DVTK_OPENGL_HAS_OSMESA=OFF $configopts" # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D configopts="-DVTK_USE_X=ON $configopts" configopts="-DVTK_USE_OFFSCREEN=OFF $configopts" configopts="-DOPENGL_gl_LIBRARY=$NVIDIALIBDIR/libGL.so $configopts" configopts="-DOSMESA_INCLUDE_DIR=IGNORE $configopts" conifgopts="-DOSMESA_LIBRARY=IGNORE $configopts" # OSPRay configopts="-DPARAVIEW_USE_OSPRAY=ON $configopts" # https://blog.kitware.com/kitware-and-intel-further-maximize-rendering-efficiency/ configopts="-DOSPRAY_INSTALL_DIR=$EBROOTOSPRAY $configopts" configopts="-DModule_vtkRenderingOSPRay=ON $configopts" ### --- extra libs --- ### configopts="-DPARAVIEW_ENABLE_FFMPEG=ON $configopts" configopts="-DModule_vtkIOFFMPEG=ON $configopts" ### --- coupling --- ### configopts="-DPARAVIEW_USE_VISITBRIDGE=ON $configopts" configopts="-DPARAVIEW_ENABLE_CATALYST=ON $configopts" ### --- development & testing --- ### configopts="-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON $configopts" configopts="-DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF $configopts" configopts="-DCTEST_TEST_TIMEOUT=10800 $configopts" configopts="-DExternalData_TIMEOUT_INACTIVITY=0 $configopts" configopts="-DBUILD_DOCUMENTATION=OFF $configopts" ### --- VTK external libraries --- ### configopts="-DVTK_USE_SYSTEM_EXPAT=ON $configopts" configopts="-DVTK_USE_SYSTEM_FREETYPE=ON $configopts" configopts="-DVTK_USE_SYSTEM_HDF5=ON $configopts" configopts="-DVTK_USE_SYSTEM_JPEG=ON $configopts" configopts="-DVTK_USE_SYSTEM_LIBXML2=ON $configopts" configopts="-DVTK_USE_SYSTEM_MPI4PY=ON $configopts" configopts="-DVTK_USE_SYSTEM_PNG=ON $configopts" configopts="-DVTK_USE_SYSTEM_PYGMENTS=ON $configopts" configopts="-DVTK_USE_SYSTEM_SIX=ON $configopts" configopts="-DVTK_USE_SYSTEM_TIFF=ON $configopts" configopts="-DVTK_USE_SYSTEM_ZLIB=ON $configopts" echo $configopts }}} ==== 3) build/install/test !ParaView {{{ #!ShellExample #!/bin/sh ccmake $configopts ../ParaView-v${PV_VERSION} make -j make install make test }}} \\ \\ === IMPORTANT COMMENTS * more details: \\ http://www.paraview.org/Wiki/ParaView:Build_And_Install ---- any feedback welcomed - h.zilken@fz.juelich.de, goebbert@jara.rwth-aachen.de