Skip to content

Update README.md

Update README.md #52

Workflow file for this run

name: linux
on:
pull_request:
branches: [ main ]
push:
branches: [ main ]
paths-ignore:
- '**.md'
- '**.txt'
- 'docs/**'
# Allows to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
vol-pdc:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v2
- name: Setup
run: |
voldir="$PWD"
voldirbase="$(basename $(pwd))"
cd ..
mkdir vol-pdc-workspace
cd vol-pdc-workspace
workspace="$PWD"
mv $voldir $workspace
cd ..
mv ./vol-pdc-workspace ./vol-pdc
cd vol-pdc/vol-pdc
export VOL_DIR="$PWD"
cd ..
- name: Dependencies
run: |
sudo apt-get update
sudo apt-get install libtool
sudo apt install cmake
# hdf5
git clone https://github.com/HDFGroup/hdf5.git
# libfabric 1.12.1
wget https://github.com/ofiwg/libfabric/archive/refs/tags/v1.12.1.tar.gz
tar xf v1.12.1.tar.gz
# mercury
git clone https://github.com/mercury-hpc/mercury.git --recursive
# mpi
sudo apt-get install libopenmpi-dev
# zlib
# sudo apt-get install zlib1g-dev
# python3
sudo apt-get install python3
# pdc
git clone https://github.com/hpc-io/pdc.git
- name: Installation
run: |
mydir="$PWD"
export HDF5_DIR=$mydir/hdf5/install
export HDF5_INCLUDE_DIR=$mydir/hdf5/install/include
export HDF5_LIBRARY=$mydir/hdf5/install/lib/libhdf5.so
export VOL_DIR=$mydir/vol-pdc
export MERCURY_DIR=$mydir/mercury/install
export LIBFABRIC_DIR=$mydir/libfabric-1.12.1/install
export PDC_DIR=$mydir/pdc/install
export LD_LIBRARY_PATH="$LIBFABRIC_DIR/lib:$MERCURY_DIR/lib:$PDC_DIR/lib:$VOL_DIR/install/lib:$LD_LIBRARY_PATH"
export PATH="$LIBFABRIC_DIR/include:$LIBFABRIC_DIR/lib:$MERCURY_DIR/include:$MERCURY_DIR/lib:$PATH"
# Compile HDF5
mkdir $HDF5_DIR
cd hdf5
git checkout hdf5-1_14_1-2
export HDF5_LIBTOOL=/usr/bin/libtoolize
./autogen.sh
./configure CC=mpicc --prefix=$HDF5_DIR --enable-parallel --disable-tests --disable-hl --disable-fortran
make -j2 && make install
# Compile libfabric
mkdir $LIBFABRIC_DIR
cd $LIBFABRIC_DIR
cd ..
./autogen.sh
./configure --disable-usnic --disable-mrail --disable-rstream --disable-perf --disable-efa --disable-psm2 --disable-psm --disable-verbs --disable-shm --disable-static --disable-silent-rules
make -j2 && sudo make install
make check
# Compile Mercury
mkdir $MERCURY_DIR
cd $MERCURY_DIR
git checkout v2.1.0
cmake ../ -DCMAKE_C_COMPILER=gcc -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DNA_USE_OFI=ON -DNA_USE_SM=OFF -DMERCURY_USE_CHECKSUMS=OFF
make -j2 && sudo make install
ctest
# Compile PDC
mkdir $PDC_DIR
cd $PDC_DIR
git checkout develop
cmake ../ -DBUILD_MPI_TESTING=ON -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DCMAKE_INSTALL_PREFIX=$PDC_DIR -DPDC_ENABLE_MPI=ON -DMERCURY_DIR=$MERCURY_DIR -DCMAKE_C_COMPILER=mpicc
make -j2 && sudo make install
# Compile VOL-PDC
cd $VOL_DIR
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=$VOL_DIR/install -DHDF5_INCLUDE_DIR=$HDF5_INCLUDE_DIR -DHDF5_LIBRARY=$HDF5_LIBRARY -DBUILD_SHARED_LIBS=ON -DHDF5_DIR=$HDF5_DIR -DPDC_DIR=$PDC_DIR/share/cmake/pdc -DBUILD_EXAMPLES=ON
make && sudo make install
export HDF5_PLUGIN_PATH=$VOL_DIR/install/lib
export HDF5_VOL_CONNECTOR="pdc under_vol=0;under_info={}"
export LD_PRELOAD=$VOL_DIR/install/lib/libhdf5_vol_pdc.so
# Run test
mpirun -N 1 -n 1 -c 1 $PDC_DIR/bin/pdc_server.exe &
mpirun -N 1 -n 1 -c 1 ./bin/h5pdc_vpicio test
mpirun -N 1 -n 1 -c 1 $PDC_DIR/bin/close_server
- name: Setup tmate session
if: ${{ failure() }}
uses: mxschmitt/action-tmate@v3