| #!/bin/bash |
| |
| set -ex |
| |
| # "install" hipMAGMA into /opt/rocm/magma by copying after build |
| git clone https://bitbucket.org/icl/magma.git |
| pushd magma |
| |
| # Version 2.7.2 + ROCm related updates |
| git checkout a1625ff4d9bc362906bd01f805dbbe12612953f6 |
| |
| cp make.inc-examples/make.inc.hip-gcc-mkl make.inc |
| echo 'LIBDIR += -L$(MKLROOT)/lib' >> make.inc |
| echo 'LIB += -Wl,--enable-new-dtags -Wl,--rpath,/opt/rocm/lib -Wl,--rpath,$(MKLROOT)/lib -Wl,--rpath,/opt/rocm/magma/lib' >> make.inc |
| echo 'DEVCCFLAGS += --gpu-max-threads-per-block=256' >> make.inc |
| export PATH="${PATH}:/opt/rocm/bin" |
| if [[ -n "$PYTORCH_ROCM_ARCH" ]]; then |
| amdgpu_targets=`echo $PYTORCH_ROCM_ARCH | sed 's/;/ /g'` |
| else |
| amdgpu_targets=`rocm_agent_enumerator | grep -v gfx000 | sort -u | xargs` |
| fi |
| for arch in $amdgpu_targets; do |
| echo "DEVCCFLAGS += --offload-arch=$arch" >> make.inc |
| done |
| # hipcc with openmp flag may cause isnan() on __device__ not to be found; depending on context, compiler may attempt to match with host definition |
| sed -i 's/^FOPENMP/#FOPENMP/g' make.inc |
| make -f make.gen.hipMAGMA -j $(nproc) |
| LANG=C.UTF-8 make lib/libmagma.so -j $(nproc) MKLROOT=/opt/conda/envs/py_$ANACONDA_PYTHON_VERSION |
| make testing/testing_dgemm -j $(nproc) MKLROOT=/opt/conda/envs/py_$ANACONDA_PYTHON_VERSION |
| popd |
| mv magma /opt/rocm |