|
1 | | -# Installation Instructions for Cori Machines |
| 1 | +# Installation Instructions |
2 | 2 |
|
3 | | -## Install libfabric |
4 | | -``` |
5 | | -0. wget https://github.com/ofiwg/libfabric/archive/v1.11.2.tar.gz |
6 | | -1. tar xvzf v1.11.2.tar.gz |
7 | | -2. cd libfabric-1.11.2 |
8 | | -3. mkdir install |
9 | | -4. export LIBFABRIC_DIR=$(pwd)/install |
10 | | -5. ./autogen.sh |
11 | | -6. ./configure --prefix=$LIBFABRIC_DIR CC=cc CFLAG="-O2" |
12 | | -7. make -j8 |
13 | | -8. make install |
14 | | -9. export LD_LIBRARY_PATH="$LIBFABRIC_DIR/lib:$LD_LIBRARY_PATH" |
15 | | -10. export PATH="$LIBFABRIC_DIR/include:$LIBFABRIC_DIR/lib:$PATH" |
16 | | -``` |
| 3 | +## Install PDC and its dependent libraries |
| 4 | + |
| 5 | +Please follow the instructions in the [PDC documentation website](https://pdc.readthedocs.io/en/latest/getting_started.html#installing-pdc-from-source-code) to install libfabric, mercury, and PDC. We recommend using the PDC develop branch. |
17 | 6 |
|
18 | | -## Install Mercury |
19 | | -Make sure the ctest passes. PDC may not work without passing all the tests of Mercury. |
20 | 7 |
|
21 | | -Step 2 in the following is not required. It is a stable commit that has been used to test when these these instructions were written. One may skip it to use the current master branch of Mercury. |
22 | | -``` |
23 | | -0. git clone https://github.com/mercury-hpc/mercury.git |
24 | | -1. cd mercury |
25 | | -2. git checkout e741051fbe6347087171f33119d57c48cb438438 |
26 | | -3. git submodule update --init |
27 | | -4. export MERCURY_DIR=$(pwd)/install |
28 | | -5. mkdir install |
29 | | -6. cd install |
30 | | -7. cmake ../ -DCMAKE_INSTALL_PREFIX=$MERCURY_DIR -DCMAKE_C_COMPILER=cc -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DNA_USE_OFI=ON -DNA_USE_SM=OFF -DCMAKE_C_FLAGS="-dynamic" -DCMAKE_CXX_FLAGS="-dynamic" |
31 | | -8. make |
32 | | -9. make install |
33 | | -10. ctest -DMPI_RUN_CMD=srun |
34 | | -11. export LD_LIBRARY_PATH="$MERCURY_DIR/lib:$LD_LIBRARY_PATH" |
35 | | -12. export PATH="$MERCURY_DIR/include:$MERCURY_DIR/lib:$PATH" |
36 | | -``` |
37 | | -## Install PDC |
38 | | -ctest contains both sequential and MPI tests for the PDC settings. These can be used to perform regression tests. |
39 | | -``` |
40 | | -0. git clone https://github.com/hpc-io/pdc.git |
41 | | -1. cd pdc |
42 | | -2. git checkout stable |
43 | | -3. cd src |
44 | | -4. mkdir install |
45 | | -5. cd install |
46 | | -6. export PDC_DIR=$(pwd) |
47 | | -7. 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=cc -DCMAKE_C_FLAGS="-dynamic" |
48 | | -8. make -j8 |
49 | | -9. ctest -DMPI_RUN_CMD=srun |
50 | | -``` |
51 | 8 | ## Environmental variables |
52 | | -During installation, we have set some environmental variables. These variables may disappear after the close the current session ends. |
53 | | -We recommend adding the following lines to ~/.bashrc. (One may also execute them manually after logging in). |
54 | | -The MERCURY_DIR and LIBFABRIC_DIR variables should be identical to the values that were set during the installation of Mercury and libfabric. |
55 | | -The install path is the path containing bin and lib directory, instead of the one containing the source code. |
| 9 | +The following environment variables should be set before continuing. |
56 | 10 | ``` |
57 | | -export PDC_DIR="where/you/installed/your/pdc" |
58 | | -export MERCURY_DIR="where/you/installed/your/mercury" |
59 | | -export LIBFABRIC_DIR="where/you/installed/your/libfabric" |
| 11 | +export PDC_DIR="where/you/install/your/pdc" |
| 12 | +export VOL_DIR="where/you/install/your/vol-pdc" |
| 13 | +export HDF5_DIR="where/you/install/your/hdf5" |
| 14 | +export MERCURY_DIR="where/you/install/your/mercury" |
| 15 | +export LIBFABRIC_DIR="where/you/install/your/libfabric" |
60 | 16 | export LD_LIBRARY_PATH="$LIBFABRIC_DIR/lib:$MERCURY_DIR/lib:$LD_LIBRARY_PATH" |
61 | 17 | export PATH="$LIBFABRIC_DIR/include:$LIBFABRIC_DIR/lib:$MERCURY_DIR/include:$MERCURY_DIR/lib:$PATH" |
62 | 18 | ``` |
63 | 19 |
|
64 | 20 | ## Install HDF5 |
65 | 21 | ``` |
66 | | -0. wget "https://www.hdfgroup.org/package/hdf5-1-12-1-tar-gz/?wpdmdl=15727&refresh=612559667d6521629837670" |
67 | | -1. mv index.html?wpdmdl=15727&refresh=612559667d6521629837670 hdf5-1.12.1.tar.gz |
68 | | -2. tar zxf hdf5-1.12.1.tar.gz |
69 | | -3. cd hdf5-1.12.1 |
70 | | -4. ./configure --prefix=/global/homes/../<username>/hdf5 |
71 | | -5. make |
72 | | -6. make check |
73 | | -7. make install |
74 | | -8. make check-install |
| 22 | +git clone https://github.com/HDFGroup/hdf5.git |
| 23 | +cd hdf5 |
| 24 | +git checkout hdf5-1_14_1-2 |
| 25 | +export HDF5_LIBTOOL=/usr/bin/libtoolize |
| 26 | +./autogen.sh |
| 27 | +./configure CC=mpicc --prefix=$HDF5_DIR --enable-parallel --disable-tests --disable-hl --disable-fortran |
| 28 | +make && make install |
75 | 29 | ``` |
76 | 30 |
|
77 | 31 | ## Building vol-pdc |
78 | | -CMakeLists.txt seem to be heavily adapted from the [mercury](https://github.com/mercury-hpc/mercury) git repo. Building should be very similar. |
79 | 32 | ``` |
80 | | -0. git clone https://github.com/hpc-io/vol-pdc.git |
81 | | -1. cd vol-pdc |
82 | | -2. mkdir build |
83 | | -3. cd build |
84 | | -4. ccmake .. |
85 | | -5. set BUILD_SHARED_LIBS to ON (default OFF) |
86 | | -6. set HDF5_DIR to where HDF5 is installed |
87 | | -7. set HDF5_INCLUDE_DIR to the include directory in the HDF5 package |
88 | | -8. set HDF5_LIBRARY to the lib directory in the HDF5 package |
89 | | -9. press [c] to configure then exit |
90 | | -10. cmake .. |
| 33 | +git clone https://github.com/hpc-io/vol-pdc.git |
| 34 | +cd vol-pdc |
| 35 | +mkdir build |
| 36 | +cd build |
| 37 | +cmake ../ -DCMAKE_INSTALL_PREFIX=$VOL_DIR -DBUILD_SHARED_LIBS=ON -DHDF5_DIR=$HDF5_DIR -DPDC_DIR=$PDC_DIR/share/cmake/pdc -DBUILD_EXAMPLES=ON |
91 | 38 | ``` |
92 | 39 |
|
93 | 40 | # Notes |
94 | 41 |
|
95 | | -The following functions have yet to be implemented and are either currently do nothing, or don't do anything relevant to the VOL: |
| 42 | +The following functions have yet to be implemented and either currently do nothing, or don't do anything relevant to the VOL: |
96 | 43 |
|
97 | 44 | - H5VL_pdc_attr_get |
98 | 45 | - H5VL_pdc_attr_close |
|
0 commit comments