|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +############################################################################### |
| 4 | +# Copyright (c) 2017-23, Lawrence Livermore National Security, LLC |
| 5 | +# and RAJA project contributors. See the RAJAPerf/LICENSE file for details. |
| 6 | +# |
| 7 | +# SPDX-License-Identifier: (BSD-3-Clause) |
| 8 | +############################################################################### |
| 9 | + |
| 10 | +if [[ $# -lt 2 ]]; then |
| 11 | + echo |
| 12 | + echo "You must pass 2 or more arguments to the script (in this order): " |
| 13 | + echo " 1) compiler version number" |
| 14 | + echo " 2) HIP compute architecture" |
| 15 | + echo " 3...) optional arguments to cmake" |
| 16 | + echo |
| 17 | + echo "For example: " |
| 18 | + echo " toss4_amdclang_asan.sh 5.7.0 gfx90a" |
| 19 | + exit |
| 20 | +fi |
| 21 | + |
| 22 | +COMP_VER=$1 |
| 23 | +COMP_ARCH=$2 |
| 24 | +shift 2 |
| 25 | + |
| 26 | +HOSTCONFIG="hip_3_X" |
| 27 | + |
| 28 | +if [[ ${COMP_VER} == 4.* ]] |
| 29 | +then |
| 30 | +##HIP_CLANG_FLAGS="-mllvm -amdgpu-fixed-function-abi=1" |
| 31 | + HOSTCONFIG="hip_4_link_X" |
| 32 | +elif [[ ${COMP_VER} == 3.* ]] |
| 33 | +then |
| 34 | + HOSTCONFIG="hip_3_X" |
| 35 | +else |
| 36 | + echo "Unknown hip version, using ${HOSTCONFIG} host-config" |
| 37 | +fi |
| 38 | + |
| 39 | +BUILD_SUFFIX=lc_toss4-amdclang-${COMP_VER}-${COMP_ARCH}-asan |
| 40 | +RAJA_HOSTCONFIG=../tpl/RAJA/host-configs/lc-builds/toss4/${HOSTCONFIG}.cmake |
| 41 | + |
| 42 | +echo |
| 43 | +echo "Creating build directory build_${BUILD_SUFFIX} and generating configuration in it" |
| 44 | +echo "Configuration extra arguments:" |
| 45 | +echo " $@" |
| 46 | +echo |
| 47 | +echo "To get cmake to work you may have to configure with" |
| 48 | +echo " -DHIP_PLATFORM=amd" |
| 49 | +echo |
| 50 | +echo "To use fp64 HW atomics you must configure with these options when using gfx90a and hip >= 5.2" |
| 51 | +echo " -DCMAKE_CXX_FLAGS=\"-munsafe-fp-atomics\"" |
| 52 | +echo |
| 53 | + |
| 54 | +rm -rf build_${BUILD_SUFFIX} >/dev/null |
| 55 | +mkdir build_${BUILD_SUFFIX} && cd build_${BUILD_SUFFIX} |
| 56 | + |
| 57 | + |
| 58 | +module load cmake/3.23.1 |
| 59 | + |
| 60 | +# unload rocm to avoid configuration problems where the loaded rocm and COMP_VER |
| 61 | +# are inconsistent causing the rocprim from the module to be used unexpectedly |
| 62 | +# module unload rocm |
| 63 | + |
| 64 | +if [[ ${COMP_VER} =~ .*magic.* ]]; then |
| 65 | + ROCM_PATH="/usr/tce/packages/rocmcc/rocmcc-${COMP_VER}" |
| 66 | +else |
| 67 | + ROCM_PATH="/usr/tce/packages/rocmcc-tce/rocmcc-${COMP_VER}" |
| 68 | +fi |
| 69 | + |
| 70 | +cmake \ |
| 71 | + -DCMAKE_BUILD_TYPE=Release \ |
| 72 | + -DROCM_ROOT_DIR="${ROCM_PATH}" \ |
| 73 | + -DHIP_ROOT_DIR="${ROCM_PATH}/hip" \ |
| 74 | + -DHIP_PATH=${ROCM_PATH}/llvm/bin \ |
| 75 | + -DCMAKE_C_COMPILER=${ROCM_PATH}/llvm/bin/amdclang \ |
| 76 | + -DCMAKE_CXX_COMPILER=${ROCM_PATH}/llvm/bin/amdclang++ \ |
| 77 | + -DCMAKE_HIP_ARCHITECTURES="${COMP_ARCH}:xnack+" \ |
| 78 | + -DGPU_TARGETS="${COMP_ARCH}:xnack+" \ |
| 79 | + -DAMDGPU_TARGETS="${COMP_ARCH}:xnack+" \ |
| 80 | + -DCMAKE_C_FLAGS="-fsanitize=address -shared-libsan" \ |
| 81 | + -DCMAKE_CXX_FLAGS="-fsanitize=address -shared-libsan" \ |
| 82 | + -DBLT_CXX_STD=c++14 \ |
| 83 | + -C ${RAJA_HOSTCONFIG} \ |
| 84 | + -DENABLE_HIP=ON \ |
| 85 | + -DENABLE_OPENMP=ON \ |
| 86 | + -DENABLE_CUDA=OFF \ |
| 87 | + -DCMAKE_INSTALL_PREFIX=../install_${BUILD_SUFFIX} \ |
| 88 | + "$@" \ |
| 89 | + .. |
| 90 | + |
| 91 | +echo |
| 92 | +echo "***********************************************************************" |
| 93 | +echo |
| 94 | +echo "cd into directory build_${BUILD_SUFFIX} and run make to build RAJAPerf" |
| 95 | +echo |
| 96 | +echo " Please note that you have to have a consistent build environment" |
| 97 | +echo " when you make RAJA as cmake may reconfigure; load the appropriate" |
| 98 | +echo " rocm and rocmcc modules (${COMP_VER}) when building." |
| 99 | +echo |
| 100 | +echo " module load rocm/COMP_VER rocmcc/COMP_VER" |
| 101 | +echo " srun -n1 make" |
| 102 | +echo |
| 103 | +echo " Run with these environment options when using asan" |
| 104 | +echo " ASAN_OPTIONS=print_suppressions=0:detect_leaks=0" |
| 105 | +echo " HSA_XNACK=1" |
| 106 | +echo |
| 107 | +echo "***********************************************************************" |
0 commit comments