xref: /aosp_15_r20/external/pytorch/.ci/docker/common/install_rocm_magma.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1#!/bin/bash
2# Script used in CI and CD pipeline
3
4set -ex
5
6
7MKLROOT=${MKLROOT:-/opt/conda/envs/py_$ANACONDA_PYTHON_VERSION}
8
9# "install" hipMAGMA into /opt/rocm/magma by copying after build
10git clone https://bitbucket.org/icl/magma.git
11pushd magma
12
13# Version 2.7.2 + ROCm related updates
14git checkout a1625ff4d9bc362906bd01f805dbbe12612953f6
15
16cp make.inc-examples/make.inc.hip-gcc-mkl make.inc
17echo 'LIBDIR += -L$(MKLROOT)/lib' >> make.inc
18if [[ -f "${MKLROOT}/lib/libmkl_core.a" ]]; then
19    echo 'LIB = -Wl,--start-group -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -Wl,--end-group -lpthread -lstdc++ -lm -lgomp -lhipblas -lhipsparse' >> make.inc
20fi
21echo 'LIB += -Wl,--enable-new-dtags -Wl,--rpath,/opt/rocm/lib -Wl,--rpath,$(MKLROOT)/lib -Wl,--rpath,/opt/rocm/magma/lib -ldl' >> make.inc
22echo 'DEVCCFLAGS += --gpu-max-threads-per-block=256' >> make.inc
23export PATH="${PATH}:/opt/rocm/bin"
24if [[ -n "$PYTORCH_ROCM_ARCH" ]]; then
25  amdgpu_targets=`echo $PYTORCH_ROCM_ARCH | sed 's/;/ /g'`
26else
27  amdgpu_targets=`rocm_agent_enumerator | grep -v gfx000 | sort -u | xargs`
28fi
29for arch in $amdgpu_targets; do
30  echo "DEVCCFLAGS += --offload-arch=$arch" >> make.inc
31done
32# hipcc with openmp flag may cause isnan() on __device__ not to be found; depending on context, compiler may attempt to match with host definition
33sed -i 's/^FOPENMP/#FOPENMP/g' make.inc
34make -f make.gen.hipMAGMA -j $(nproc)
35LANG=C.UTF-8 make lib/libmagma.so -j $(nproc) MKLROOT="${MKLROOT}"
36make testing/testing_dgemm -j $(nproc) MKLROOT="${MKLROOT}"
37popd
38mv magma /opt/rocm
39