Merge pull request #5 from hpc-io/develop #59
This file contains 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: 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 uuid-dev | |
# hdf5 | |
wget https://github.com/HDFGroup/hdf5/releases/download/hdf5_1.14.5/hdf5-1.14.5.tar.gz | |
tar xzf hdf5-1.14.5.tar.gz | |
mv hdf5-1.14.5 hdf5 | |
# libfabric 1.20.1 | |
wget https://github.com/ofiwg/libfabric/archive/refs/tags/v1.20.1.tar.gz | |
tar xf v1.20.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.20.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 | |
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.2.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/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 |