Using Ascent with Damaris
Damaris can use Ascent as an in situ visualization library via the Damaris Python interface. The procedure below builds the Ascent Python library.
There is an example Python script that can be run via Damaris that then uses the Ascent library. It is designed to run via the OPM Flow simulator software that has been compiled with Damaris support.
Assumes HDF5 and MPI as runtime dependencies. git, curl and cmake for build.
- Set some global variables
# root_dir is where we are installing the source files
root_dir=/home/$USER/paraview
build_jobs=4
install_dir=/home/$USER/local
# Path to be added to PYTHONPATH
python_modules=/home/$USER/mypylib
if [[ ! -d $python_modules} ]] ; then
echo "Cannot find directory ${python_modules}"
fi
cd $root_dir
- Install VTK-m
####################
# VTK-m
####################
# The latest Ascent uses VTK-m v2 or higher
# vtkm_version=v1.9.0
vtkm_version=v2.0.0
vtkm_src_dir=${root_dir}/vtk-m-${vtkm_version}
vtkm_build_dir=${root_dir}/build/vtk-m-${vtkm_version}
vtkm_install_dir=${install_dir}
vtkm_tarball=vtk-m-${vtkm_version}.tar.gz
if [ ! -d ${vtkm_src_dir} ]; then
echo "**** Downloading ${vtkm_tarball}"
curl -L https://gitlab.kitware.com/vtk/vtk-m/-/archive/${vtkm_version}/${vtkm_tarball} -o ${vtkm_tarball}
tar -xzf ${vtkm_tarball}
fi
mkdir -p $vtkm_build_dir
cd $vtkm_build_dir
# This cmake recipie fialed: Fails to find mpi.h include file
# echo "**** Configuring VTK-m ${vtkm_version}"
# cmake -S ${vtkm_src_dir} -B ${vtkm_build_dir} \
# -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON\
# -DCMAKE_BUILD_TYPE=Release \
# -DBUILD_SHARED_LIBS=ON\
# -DVTKm_NO_DEPRECATED_VIRTUAL=ON \
# -DVTKm_USE_64BIT_IDS=OFF \
# -DVTKm_USE_DOUBLE_PRECISION=ON \
# -DVTKm_USE_DEFAULT_TYPES_FOR_ASCENT=ON \
# -DVTKm_ENABLE_MPI=ON \
# -DVTKm_ENABLE_OPENMP=ON \
# -DVTKm_ENABLE_RENDERING=ON \
# -DVTKm_ENABLE_TESTING=OFF \
# -DBUILD_TESTING=OFF \
# -DVTKm_ENABLE_BENCHMARKS=OFF \
# -DVTKm_ENABLE_HDF5_IO=ON \
# -DHDF5_DIR=/usr/lib/x86_64-linux-gnu/hdf5/openmpi \
# -DHDF5_CXX_INCLUDE_DIRS=/usr/lib/x86_64-linux-gnu/hdf5/openmpi/include \
# -DHDF5_C_INCLUDE_DIR=/usr/lib/x86_64-linux-gnu/hdf5/openmpi/include \
# -DHDF5_IS_PARALLEL=ON \
# -DHDF5_hdf5_LIBRARY_RELEASE=/usr/lib/x86_64-linux-gnu/hdf5/openmpi/lib/libhdf5.so \
# -DVTKm_INSTALL_EXAMPLES=ON \
# -DVTKm_Vectorization=native \
# -DCMAKE_INSTALL_PREFIX=/home/$USER/local
# This one works (no HDF support):
cmake -S ${vtkm_src_dir} -B ${vtkm_build_dir} \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON\
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON\
-DVTKm_NO_DEPRECATED_VIRTUAL=ON \
-DVTKm_USE_64BIT_IDS=OFF \
-DVTKm_USE_DOUBLE_PRECISION=ON \
-DVTKm_USE_DEFAULT_TYPES_FOR_ASCENT=ON \
-DVTKm_ENABLE_MPI=ON \
-DVTKm_ENABLE_OPENMP=ON \
-DVTKm_ENABLE_RENDERING=ON \
-DVTKm_ENABLE_TESTING=OFF \
-DBUILD_TESTING=OFF \
-DVTKm_ENABLE_BENCHMARKS=OFF \
-DVTKm_INSTALL_EXAMPLES=ON \
-DVTKm_Vectorization=native \
-DCMAKE_INSTALL_PREFIX=/home/$USER/local
echo "**** Building VTK-m ${vtkm_version}"
cmake --build ${vtkm_build_dir} -j${build_jobs}
echo "**** Installing VTK-m ${vtkm_version}"
cmake --install ${vtkm_build_dir}
- Install Conduit
####################
# Conduit
####################
# HDF5 path on Ubuntu:
hdf5_dir=/usr/lib/x86_64-linux-gnu/hdf5/openmpi
conduit_install_dir=${install_dir}
conduit_src_dir=${root_dir}/conduit/src
conduit_build_dir=${root_dir}/build/conduit
cd ${root_dir}
git clone --recursive https://github.com/llnl/conduit.git
cd conduit
git submodule init
git submodule update
cd ..
mkdir -p ${conduit_build_dir}
cd ${conduit_build_dir}
cmake -S ${conduit_src_dir} -B ${conduit_build_dir} \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=${install_dir} \
-DENABLE_MPI=ON \
-DENABLE_FIND_MPI=ON \
-DENABLE_EXAMPLES=ON \
-DENABLE_UTILS=ON \
-DENABLE_PYTHON=ON \
-DHDF5_DIR=${hdf5_dir} \
-DPYTHON_MODULE_INSTALL_PREFIX=${python_modules}
make -j${build_jobs} ; make install
- Install Ascent
#############################
# Ascent
####################
cd ${root_dir}
git clone --recursive https://github.com/Alpine-DAV/ascent.git
cd ascent
git submodule init
git submodule update
ascent_src_dir=${root_dir}/ascent/src
ascent_build_dir=${root_dir}/build/ascent
mkdir -p ${ascent_build_dir}
cd ${ascent_build_dir}
echo "**** Configuring Ascent"
cmake -S ${ascent_src_dir} -B ${ascent_build_dir} \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-L /home/$USER/local/lib" \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=${install_dir} \
-DEXAMPLE_OUTPUT_DIRECTORY=${install_dir}/examples/ascent \
-DENABLE_MPI=ON \
-DMPI_EXECUTABLE=/bin/mpiexec \
-DVTKm_Vectorization=native \
-DENABLE_OPENMP=ON \
-DENABLE_FIND_MPI=ON \
-DENABLE_FORTRAN=OFF \
-DENABLE_VALGRID=OFF \
-DENABLE_TESTS=OFF \
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=/bin/python3 \
-DBLT_CXX_STD=c++14 \
-DCONDUIT_DIR=${conduit_install_dir} \
-DVTKM_DIR=${vtkm_install_dir} \
-DENABLE_VTKH=ON
make -j${build_jobs} ; make install