概述
文章目录
- 编译安装流程
- 遇到的报错及解决方式
- 更换rocm的版本
编译安装流程
注意:编译中用到的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缺少哪个包就安装哪个包!
最后
以上就是靓丽蜜蜂为你收集整理的在centos7上基于rocm成功源码编译pytorch(pytorch1.6.0 + rocm3.3 + vision0.7.0)以及rocm的更换版本步骤编译安装流程遇到的报错及解决方式更换rocm的版本的全部内容,希望文章能够帮你解决在centos7上基于rocm成功源码编译pytorch(pytorch1.6.0 + rocm3.3 + vision0.7.0)以及rocm的更换版本步骤编译安装流程遇到的报错及解决方式更换rocm的版本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复