-
Notifications
You must be signed in to change notification settings - Fork 1
125 lines (109 loc) · 4.28 KB
/
linux.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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