Pass contiguous buffer to H5Dwrite in 2D/3D append and overwrite #367
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: h5bench (HDF5 develop test) | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| h5bench: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 60 | |
| continue-on-error: true | |
| env: | |
| OMPI_ALLOW_RUN_AS_ROOT: 1 | |
| OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 | |
| OMPI_MCA_rmaps_base_oversubscribe: "yes" | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: true | |
| - name: Dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install cmake gcc gdb libtool zlib1g-dev python3 libopenmpi-dev -y | |
| # HDF5 | |
| git clone https://github.com/HDFGroup/hdf5.git | |
| # VOL-ASYNC | |
| git clone --recursive https://github.com/hpc-io/vol-async.git --branch develop /opt/vol-async | |
| python3 -m pip install pytest | |
| - name: Build HDF5 develop | |
| run: | | |
| export HDF5_DIR=/opt/hdf5 | |
| mkdir $HDF5_DIR | |
| mkdir hdf5/build | |
| cd hdf5/build | |
| CC=mpicc cmake \ | |
| -DCMAKE_INSTALL_PREFIX=$HDF5_DIR \ | |
| -DHDF5_ENABLE_PARALLEL=ON \ | |
| -DHDF5_ENABLE_THREADSAFE=ON \ | |
| -DHDF5_ALLOW_UNSUPPORTED=ON \ | |
| -DBUILD_TESTING=OFF \ | |
| -DHDF5_BUILD_HL_LIB=OFF \ | |
| -DHDF5_BUILD_EXAMPLES=OFF \ | |
| -DHDF5_BUILD_TOOLS:BOOL=OFF \ | |
| -DBUILD_STATIC_LIBS=OFF \ | |
| -DCMAKE_C_COMPILER=mpicc .. | |
| make -j 2 | |
| make install | |
| - name: Build Argobots | |
| run: | | |
| export ABT_DIR=/opt/argobots | |
| cd /opt/vol-async/argobots | |
| ./autogen.sh | |
| ./configure --prefix=$ABT_DIR | |
| make -j 2 | |
| make install | |
| - name: Build VOL-ASYNC | |
| run: | | |
| export HDF5_DIR=/opt/hdf5 | |
| export ABT_DIR=/opt/argobots | |
| export ASYNC_DIR=/opt/vol-async | |
| cd $ASYNC_DIR | |
| mkdir build | |
| cd build | |
| cmake .. -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=$ASYNC_DIR -DCMAKE_PREFIX_PATH=$HDF5_DIR -DENABLE_WRITE_MEMCPY=ON | |
| make | |
| make install | |
| - name: Test VOL-ASYNC | |
| run: | | |
| export HDF5_DIR=/opt/hdf5 | |
| export HDF5_HOME=$HDF5_DIR | |
| export ABT_DIR=/opt/argobots | |
| export ASYNC_DIR=/opt/vol-async | |
| export LD_LIBRARY_PATH=$ASYNC_DIR/lib:$HDF5_DIR/lib:$ABT_DIR/lib:$LD_LIBRARY_PATH | |
| export HDF5_PLUGIN_PATH="$ASYNC_DIR/include" | |
| export HDF5_VOL_CONNECTOR="async under_vol=0;under_info={}" | |
| cd $ASYNC_DIR/build | |
| export LD_PRELOAD=$ASYNC_DIR/lib/libh5async.so:$ABT_DIR/lib/libabt.so:$HDF5_DIR/lib/libhdf5.so | |
| ctest | |
| - name: Build h5bench SYNC | |
| run: | | |
| export HDF5_DIR=/opt/hdf5 | |
| export HDF5_HOME=$HDF5_DIR | |
| export LD_LIBRARY_PATH=$HDF5_HOME/lib:$LD_LIBRARY_PATH | |
| mkdir build-sync | |
| cd build-sync | |
| cmake .. \ | |
| -DH5BENCH_ALL=ON | |
| make | |
| sudo make install | |
| sudo ldconfig | |
| - name: Build h5bench ASYNC | |
| run: | | |
| export HDF5_HOME=/opt/hdf5 | |
| export ABT_HOME=/opt/argobots | |
| export ASYNC_HOME=/opt/vol-async | |
| export LD_LIBRARY_PATH=$ASYNC_HOME/lib:$HDF5_HOME/lib:$ABT_HOME/lib:$LD_LIBRARY_PATH | |
| mkdir build-async | |
| cd build-async | |
| cmake .. \ | |
| -DWITH_ASYNC_VOL:BOOL=ON \ | |
| -DCMAKE_C_FLAGS="-I$ASYNC_HOME/include -L$ASYNC_HOME/lib" \ | |
| -DH5BENCH_ALL=ON | |
| make | |
| sudo make install | |
| sudo ldconfig | |
| - name: Test h5bench SYNC | |
| run: | | |
| export HDF5_DIR=/opt/hdf5 | |
| export ABT_DIR=/opt/argobots | |
| export ASYNC_DIR=/opt/vol-async | |
| cd build-sync | |
| # Restrict to h5bench's own tests (all registered as h5bench-*). | |
| # add_subdirectory(openpmd)/(amrex) pull in those projects' own | |
| # ctest suites (e.g. CLI.help.pipe.py); -R keeps the run scoped to | |
| # what this repository owns. | |
| ctest --verbose -R '^h5bench-' . | |
| - name: Test h5bench ASYNC | |
| run: | | |
| export HDF5_DIR=/opt/hdf5 | |
| export ABT_DIR=/opt/argobots | |
| export ASYNC_DIR=/opt/vol-async | |
| export HDF5_ASYNC_MAX_MEM_MB=1024 | |
| cd build-async | |
| # See the SYNC step — keep ctest scoped to h5bench-* tests only. | |
| ctest --verbose -R '^h5bench-' . | |
| - name: Upload artifact | |
| if: always() | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: test | |
| path: | | |
| build*/storage/**/std* | |
| build*/h5bench_e3sm-prefix/src/h5bench_e3sm-stamp/h5bench_e3sm-build-*.log | |
| retention-days: 5 |