Skip to content

Latest commit

 

History

History
102 lines (64 loc) · 3.51 KB

README_zh_CN.md

File metadata and controls

102 lines (64 loc) · 3.51 KB

navi10

English Version

最简单的办法是设置一个环境变量,把hsa版本覆盖为gfx1030。 ROCm会使用gfx1030的二进制在gfx1010上运行,不需要重新编译。

export HSA_OVERRIDE_GFX_VERSION=10.3.0

Date: 2022-07-05

社区希望ROCm支持navi10 - RX5700XT好长时间了。

感谢比特币大跌,让我有一个机会用低于2000元买到RX5700XT。

最终,让我们结束这个持续了对我来说已经两年的问题吧。对背景讨论感兴趣的同学可以看这个链接 ROCm/ROCm#887


这里是针对navi10 GPU - RX5700XT的实验性构建脚本。

AMD官方还不支持navi10,就算编译成功也无法保证ROCm能支持RX5700XT。


代码基于 ROCm-5.2.0,请参考 https://github.com/xuhuisheng/rocm-build/blob/master/README_zh_CN.md 准备构建环境,OS是 Ubuntu-20.04.4。

提前说一句,构建ROCm很花时间,而且需要大内存。如果内存小于32G,建议使用swap交换内存,避免内存不足。 虽然swap交换内存会让构建花费更长时间,但是至少不会崩。


现在可以开始实验了。

首先按照ROCm官方文档准备环境。https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html#ubuntu

首先安装rocm-dev。这部分已经支持navi10了,不用重新编译。主要也是因为llvm-project编译太慢,可能要花几个小时。

然后获取rocm-build。切换到master分支。 比如,我们把rocm-build放在/home/work/rocm-build目录下。

cd /home/work

git clone https://github.com/xuhuisheng/rocm-build
cd rocm-build
git checkout master

source env.sh

修改env.sh,找到AMDGPU_TARGETS,改为AMDGPU_TARGETS="gfx1010",gfx1010对应navi10,RX5700XT。 我们强制ROCm对navi10进行编译,这一步不需要实际的硬件。执行source env.sh初始化环境变量。

首先编译rocBLAS,因为它有一点儿复杂,因为它依赖另一个名叫Tensile项目。Tensile已经包含在ROCm的repo源码里,我们需要打一个补丁。 比如,ROCm使用repo将源码复制到/home/work/ROCm目录下。

然后执行bash navi10/22.rocblas.sh编译rocBLAS,脚本里会自动打好补丁。(非常慢)

要确认navi10/22.rocblas.sh里的Tensile_TEST_LOCAL_PATH与Tensile的目录位置一致。

其他组件就比较简单了。直接执行脚本进行编译和安装。 除了rocBLAS,还需要为navi10重新编译另外4个组件。

  1. 执行 bash 21.rocfft.sh 编译 rocFFT。 (超级超级慢)
  2. 执行 bash 24.rocrand.sh 编译 rocRAND。 (很快)
  3. 执行 bash navi10/25.rocsparse.sh 编译 rocSPARSE,需要打个补丁。(很慢)
  4. 执行 bash 27.rccl.sh 编译 rccl. (很慢)

最后一步,编译Pytorch-1.12.0 (超级超级慢)

sudo ln -f -s /usr/bin/python3 /usr/bin/python

git clone https://github.com/ROCmSoftwarePlatform/pytorch
cd pytorch
git checkout release/1.12
git submodule update --init --recursive

sudo apt install -y libopencv-highgui-dev libopenblas-dev python3-dev python3-pip cmake ninja-build git
pip3 install -r requirements.txt
export PATH=/opt/rocm/bin:$PATH \
    ROCM_PATH=/opt/rocm \
    HIP_PATH=/opt/rocm/hip 
export PYTORCH_ROCM_ARCH=gfx1010
python3 tools/amd_build/build_amd.py
USE_ROCM=1 USE_NINJA=1 python3 setup.py bdist_wheel

pip3 install dist/torch-1.12.0a0+git67ece03-cp38-cp38-linux_x86_64.whl

这样,我们就得到了一个只能在navi10下运行的pytorch。


mnist在RX5700XT运行成功。

祝好运