build and test hdf5 in transit infrastructure in VM with VTK, VisIt, and Catalyst
Currently the HDF5 transport is failing to build in the VM with the Catalyst back end. Error messages follow below.
One issue is that if the user does nothing serial HDF5 is detected. This can be partially worked around by setting HDF5_C_COMPILER_EXECUTABLE
to the path of h5pcc
. However, this should be automatic since the HDF5 transport requires parallel HDF5.
A second issue is that even though CMake reports finding and using parallel HDF5, the build fails as if it were using a serial HDF5. See below for more information on this.
Tasks
- Make sure our CMake code finds the parallel HDF5, not the serial one without any user intervention.
- Make sure the HDF5 transport builds in all supported configurations on the VM. This includes with Catalyst, Libsim, and VTK back ends.
- Document the build process in the read-the docs site. A readme file would suffice for now.
Configuration script
#!/bin/bash
cmake -DCMAKE_CXX_FLAGS="-fPIC -std=c++11 -Wall -Wextra -O3 -march=x86-64 -mtune=generic" \
-DCMAKE_C_FLAGS="-fPIC -Wall -Wextra -O3 -march=x86-64 -mtune=generic" \
-DENABLE_PYTHON=ON -DENABLE_CATALYST=ON -DENABLE_CATALYST_PYTHON=ON \
-DParaView_DIR=/home/sensei/sensei_insitu/software/paraview/builds/PV-5.5.2/ \
-DENABLE_VTK_IO=ON -DENABLE_VTK_MPI=ON \
-DENABLE_ADIOS1=ON \
-DADIOS1_DIR=/home/sensei/sensei_insitu/software/adios/1.13.1 \
-DENABLE_HDF5=ON -DHDF5_DIR=/usr/lib/x86_64-linux-gnu/hdf5/openmpi/ \
-DHDF5_C_COMPILER_EXECUTABLE=`which h5pcc` \
-DCMAKE_INSTALL_PREFIX=/home/sensei/sensei_insitu/software/sensei/2.1.1-catalyst-shared \
$*
CMake output
-- HDF5: Using hdf5 compiler wrapper to determine C configuration
-- Found HDF5: /usr/lib/x86_64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "1.10.0.1") found components: C
-- HDF5 found? TRUE /usr/include/hdf5/openmpi /usr/include/hdf5/openmpi
Build Errors
/home/sensei/sensei_insitu/software/sensei/builds/sensei_smic/sensei/HDF5Schema.cxx: In constructor ‘senseiHDF5::BasicStream::BasicStream(MPI_Comm, bool)’:
/home/sensei/sensei_insitu/software/sensei/builds/sensei_smic/sensei/HDF5Schema.cxx:732:3: error: ‘H5Pset_fapl_mpio’ was not declared in this scope
H5Pset_fapl_mpio(m_PropertyListId, comm, MPI_INFO_NULL);
^~~~~~~~~~~~~~~~
/home/sensei/sensei_insitu/software/sensei/builds/sensei_smic/sensei/HDF5Schema.cxx:732:3: note: suggested alternative: ‘H5Pset_fapl_stdio’
H5Pset_fapl_mpio(m_PropertyListId, comm, MPI_INFO_NULL);
^~~~~~~~~~~~~~~~
H5Pset_fapl_stdio
/home/sensei/sensei_insitu/software/sensei/builds/sensei_smic/sensei/HDF5Schema.cxx: In member function ‘void senseiHDF5::BasicStream::SetCollectiveTxf()’:
/home/sensei/sensei_insitu/software/sensei/builds/sensei_smic/sensei/HDF5Schema.cxx:742:7: error: ‘H5Pset_dxpl_mpio’ was not declared in this scope
H5Pset_dxpl_mpio(m_CollectiveTxf, H5FD_MPIO_COLLECTIVE);
^~~~~~~~~~~~~~~~
/home/sensei/sensei_insitu/software/sensei/builds/sensei_smic/sensei/HDF5Schema.cxx:742:7: note: suggested alternative: ‘H5Pset_fapl_stdio’
H5Pset_dxpl_mpio(m_CollectiveTxf, H5FD_MPIO_COLLECTIVE);
^~~~~~~~~~~~~~~~
H5Pset_fapl_stdio
sensei/CMakeFiles/senseiCore.dir/build.make:806: recipe for target 'sensei/CMakeFiles/senseiCore.dir/HDF5Schema.cxx.o' failed
make[2]: *** [sensei/CMakeFiles/senseiCore.dir/HDF5Schema.cxx.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:262: recipe for target 'sensei/CMakeFiles/senseiCore.dir/all' failed
make[1]: *** [sensei/CMakeFiles/senseiCore.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2