1+ #! /bin/sh
2+
3+ # Copyright 2021, Oak Ridge National Laboratory.
4+ # MGARD-X: MultiGrid Adaptive Reduction of Data Portable across GPUs and CPUs
5+ # Author: Jieyang Chen (chenj3@ornl.gov)
6+ # Date: April 2, 2021
7+ # Script for building MGARD-X
8+
9+ set -e
10+ set -x
11+
12+ module load rocm/5.1.0
13+ module load cmake
14+
15+ # ####### User Configurations ########
16+ # Source directory
17+ mgard_x_src_dir=.
18+ # Build directory
19+ build_dir=./build-hip-crusher
20+ # Number of processors used for building
21+ num_build_procs=$1
22+ # Installtaion directory
23+ install_dir=./install-hip-crusher
24+
25+ # build ZSTD
26+ zstd_dir=${build_dir} /zstd
27+ zstd_src_dir=${zstd_dir} /src
28+ zstd_build_dir=${zstd_dir} /build
29+ zstd_install_dir=${install_dir}
30+ if [ ! -d " ${zstd_src_dir} " ]; then
31+ git clone -b v1.5.0 https://github.com/facebook/zstd.git ${zstd_src_dir}
32+ fi
33+ mkdir -p ${zstd_build_dir}
34+ cmake -S ${zstd_src_dir} /build/cmake -B ${zstd_build_dir} \
35+ -DZSTD_MULTITHREAD_SUPPORT=ON\
36+ -DCMAKE_C_COMPILER=amdclang\
37+ -DCMAKE_CXX_COMPILER=amdclang++\
38+ -DCMAKE_INSTALL_LIBDIR=lib\
39+ -DCMAKE_INSTALL_PREFIX=${zstd_install_dir}
40+ cmake --build ${zstd_build_dir} -j ${num_build_procs}
41+ cmake --install ${zstd_build_dir}
42+
43+
44+ # build Protobuf
45+ protobuf_dir=${build_dir} /protobuf
46+ protobuf_src_dir=${protobuf_dir} /src
47+ protobuf_build_dir=${protobuf_dir} /build
48+ protobuf_install_dir=${install_dir}
49+ if [ ! -d " ${protobuf_src_dir} " ]; then
50+ git clone -b v3.19.4 --recurse-submodules https://github.com/protocolbuffers/protobuf.git ${protobuf_src_dir}
51+ fi
52+ mkdir -p ${protobuf_build_dir}
53+ cmake -S ${protobuf_src_dir} /cmake -B ${protobuf_build_dir} \
54+ -DCMAKE_C_COMPILER=amdclang\
55+ -DCMAKE_CXX_COMPILER=amdclang++\
56+ -Dprotobuf_BUILD_SHARED_LIBS=ON\
57+ -DCMAKE_INSTALL_PREFIX=${protobuf_install_dir}
58+ cmake --build ${protobuf_build_dir} -j ${num_build_procs}
59+ cmake --install ${protobuf_build_dir}
60+
61+
62+ # build MGARD
63+ mgard_x_build_dir=${build_dir} /mgard
64+ mgard_x_install_dir=${install_dir}
65+ mkdir -p ${mgard_x_build_dir}
66+ cmake -S ${mgard_x_src_dir} -B ${mgard_x_build_dir} \
67+ -DCMAKE_PREFIX_PATH=" ${zstd_install_dir} /lib/cmake/zstd;${protobuf_install_dir} " \
68+ -DMGARD_ENABLE_SERIAL=ON\
69+ -DMGARD_ENABLE_HIP=ON\
70+ -DCMAKE_CXX_COMPILER=amdclang++\
71+ -DCMAKE_HIP_ARCHITECTURES=" gfx90a" \
72+ -DCMAKE_BUILD_TYPE=Release\
73+ -DCMAKE_INSTALL_PREFIX=${mgard_x_install_dir}
74+ cmake --build ${mgard_x_build_dir} -j ${num_build_procs}
75+ cmake --install ${mgard_x_build_dir}
76+
77+
78+ # build ADIOS2
79+ adios2_dir=${build_dir} /adios2
80+ adios2_src_dir=${adios2_dir} /src
81+ adios2_build_dir=${adios2_dir} /build
82+ adios2_install_dir=${install_dir}
83+ if [ ! -d " ${adios2_src_dir} " ]; then
84+ git clone -https://github.com/ornladios/ADIOS2.git ${adios2_src_dir}
85+ fi
86+ mkdir -p ${adios2_build_dir}
87+ cmake -S ${adios2_src_dir} -B ${adios2_build_dir} \
88+ -DADIOS2_USE_CUDA=OFF \
89+ -DADIOS2_USE_MGARD=ON \
90+ -DMGARD_ROOT=${mgard_x_install_dir} \
91+ -DCMAKE_BUILD_TYPE=Release \
92+ -DBUILD_TESTING=ON \
93+ -DADIOS2_USE_MPI=ON \
94+ -DCMAKE_INSTALL_PREFIX=${adios2_install_dir}
95+ cmake --build ${adios2_build_dir} -j ${num_build_procs}
96+ cmake --install ${adios2_build_dir}
97+
98+ # build ADIOS2
99+ adios2_dir=${build_dir} /adios2
100+ adios2_src_dir=${adios2_dir} /src
101+ adios2_build_dir=${adios2_dir} /build
102+ adios2_install_dir=${install_dir}
103+ if [ ! -d " ${adios2_src_dir} " ]; then
104+ git clone -https://github.com/ornladios/ADIOS2.git ${adios2_src_dir}
105+ fi
106+ mkdir -p ${adios2_build_dir}
107+ cmake -S ${adios2_src_dir} -B ${adios2_build_dir} \
108+ -DADIOS2_USE_CUDA=OFF \
109+ -DADIOS2_USE_MGARD=ON \
110+ -DMGARD_ROOT=${mgard_x_install_dir} \
111+ -DCMAKE_BUILD_TYPE=Release \
112+ -DBUILD_TESTING=ON \
113+ -DADIOS2_USE_MPI=ON \
114+ -DCMAKE_INSTALL_PREFIX=${adios2_install_dir}
115+ cmake --build ${adios2_build_dir} -j ${num_build_procs}
116+ cmake --install ${adios2_build_dir}
0 commit comments