在centos7上基于rocm成功源码编译pytorch(pytorch1.6.0 + rocm3.3 + vision0.7.0)以及rocm的更换版本步骤

本文详细记录了在ROCm平台上编译安装PyTorch和其依赖库的过程,包括遇到的错误及解决方法。重点介绍了如何处理编译错误、升级GCC和Python版本、修改ROCm配置、安装PyTorch及其vision模块,并提供了针对gfx803显卡的版本兼容建议。此外,还分享了更换ROCM版本的步骤,强调了版本兼容性和环境清理的重要性。
摘要由CSDN通过智能技术生成

编译安装流程

注意:编译中用到的rocm为二进制直接安装,非源码安装。

(如果是ubuntu用apt,centos用yum)

1.提高gcc版本(本次编译用的是gcc 7包含及以上的版本),python版本为3.6,pip版本为21

2.将apt(yum)更新至最新

sudo apt update

yum update

3.确保ROCm的包已经完全安装

sudo apt install rock-dkms rocm-dev rocm-libs miopen-hip miopengemm hipsparse  rccl rocthrust hipcub roctracer-dev

yum install ……

4.安装编译所需要的一些工具,编译完成后可以选择删除:

sudo apt install git python-pip libopenblas-dev cmake libnuma-dev autoconf build-essential ca-certificates curl libgoogle-glog-dev libhiredis-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libpthread-stubs0-dev libsnappy-dev sudo vim libprotobuf-dev protobuf-compiler

(这些包在yum下找不到完全同名的包,先yum search到类似的包,在yum install……

5.安装PyTorch的Python依赖包:

pip3 install enum34 numpy pyyaml setuptools typing cffi future hypothesis
git clone https://github.com/pytorch/pytorch.git
cd pytorch

git tag(查看标签)
git branch(查看分支 如果不是所需分支 就git checkout v1.6.0
如果因为已改动不能切换,在不保存改动的情况下先git stash来清空修改)

8.拉取pytorch子模块
git submodule update --init --recursive (不是必须都拉完,有些模块实际上不需要用到)

9.配置GPU版本

export PYTORCH_ROCM_ARCH=gfx803

10.配置环境:

export PATH=/opt/rocm/bin:/opt/rocm/hip/bin:/opt/rocm/llvm/bin:$PATH

(echo $PATH查看环境变量)

11.ROCm平台还存在一些缺陷,因此编译PyTorch需要修改ROCm平台。修改后的ROCm平台可能不能编译或者运行其他深度学习框架。在root权限下运行以下命令(若新版的ROCm平台修复此问题,请忽略该步骤)

sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rocsparse/lib/cmake/rocsparse/rocsparse-config.cmake
sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rocfft/lib/cmake/rocfft/rocfft-config.cmake
sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/miopen/lib/cmake/miopen/miopen-config.cmake
sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rocblas/lib/cmake/rocblas/rocblas-config.cmake
sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/hipsparse/lib/cmake/hipsparse/hipsparse-config.cmake
sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rccl/lib/cmake/rccl/rccl-config.cmake

然后在pytorch/cmake/External/rccl.cmake 里添加

set(RCCL_DIR"/opt/rocm/rccl/lib/cmake/rccl")

12.使用AMD提供的脚本将PyTorch中的CUDA函数白嫖重用为ROCm中的hip函数。

python3 tools/amd_build/build_amd.py

13.编译安装pytorch

export USE_NINJA=1 # 可选
USE_ROCM=1 USE_LMDB=1 BUILD_CAFFE2_OPS=0 BUILD_TEST=0 USE_OPENCV=1 MAX_JOBS=4 python3 setup.py build

14.如果编译错误,改错后继续编译,或者rm -fr build/ 后重新编译(或者python3 setup.py clean清空编译环境)

15.编译安装成功后python3 setup.py install
(测试:import torch)

继续安装vision部分
16.安装依赖

sudo apt-get install libopenblas-dev cython3 libatlas-base-dev m4 libblas-dev cmake

(centos上则yum search到对应的包再yum install ……

pip3 install numpy pyyaml cpython setuptools wheel pillow
git clone https://github.com/pytorch/vision
cd vision
git checkout v0.7.0
python3 setup.py build

如果编译错误,改错后继续编译,或者rm -fr build/ 后重新编译

python3 setup.py install
(测试:import torchvision)

19.全都编译安装通过后,跑个训练和推理试一试。选择了个用cnn模型识别mnist数据集的例子,能跑通!欢喜!

遇到的报错及解决方式

在此过程中遇到很多种报错,试过不同版本的组合,因为现只有gfx803显卡,而官网上的说明是高版本的rocm不再支持gfx803,所以保险起见,尝试rocm3.3。

版本兼容很重要!pytorch1.6.0 + rocm3.3 + vision0.7.0 保证正确!

1.缺少某头文件

检查环境变量,可能是没识别到。

export PATH=/opt/rocm/bin:/opt/rocm/hip/bin:/opt/rocm/llvm/bin:$PATH

或者export CPLUS_INCLUDE_PATH=……

2.fbgemm中出现部分函数参数不符
把third_party文件夹下的fbgemm文件夹删掉,再git submodule update --init --recursive 重新拉取再重新编译。什么文件夹有问题就删掉重拉,当然为了保险起见,把删掉的文件夹备份一下,如果不能重新拉就需要找别的原因了。

3.generating AMD GCN kernel fail in HCC-Specific opt passes for target
检查HIP-clang,HCC版本,重装了clang。因为编译这套版本前还用过其他版本的rocm,所以环境并不算干净,所以可能存在很多包版本不对,所以找到了重新装就行。

4.internel compiler error:段错误
编译器问题,本人把它理解为服务器突然瓦特了,反复重新编就行。

5.no model of xxx
少python的什么模块,pip3 install xxx

6.找不到rocm某一模块(如rocclr)

yum search rocclar
yum install rocclr-xxxxxxx(版本号)

更换rocm的版本

其实最好在干净的环境安装某一版本的rocm,但实际上我们只有一台服务器搞来搞去,那就尽量先删干净吧!
1.设置/etc/ 的yum.repos.d/rocm.rep 文件,将参数改为对应版本

2.删除原版本
1)删除同源 yum remove $(yum list installed | grep ‘@rocm’ | awk ‘{print $1}’)(或者yum remove $(yum list installed | grep ‘@ROCm’ | awk ‘{print $1}’),与rocm.rep 保持一致)
2)删除软链接rocm和rocm文件夹
3)搜索hsa hip roc opencl 等所有对应版本的小模块然后都删掉

yum list installed| grep xxx
yum remove xxx

3.Enable extra repositories:

yum --enablerepo=extras install -y epel-release

4.# Install the ROCm rpms:

sudo yum clean all
sudo yum install -y rocm-dev
yum install -y rocm-dkms
sudo yum install -y hipblas hipcub hipsparse miopen-hip miopengemm rccl rocblas rocfft rocprim rocrand

如果没安装成功某一个包,先删除先安装的那个包,再重新安装。

5.在后续使用中,rocm缺少哪个包就安装哪个包!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值