折腾了一周了吧,终于是在自己的电脑上编译完成,并且可以跑通Pytorch训练代码了。我也是小白一个,如果有专业词汇使用不当,还请见谅。
编译过程参考了官方编译文档, JC大神的博文以及github里面的一些Issue集合而成。向他们表示诚挚的感谢。

  • 简单介绍一下硬件:
    CPU :I5 9400F
    GPU:AMD Radeon VII
    内存:64G

  • 软件环境:
    Ubuntu 16.04 LTS
    Anaconda3 (python=3.6)
    Rocm 3.0

  • 编译过程:

  1. 安装rocm,按照官方的文档安装即可
  2. 配置编译需要的环境,确保所需的包是安装了的。
sudo apt update
sudo apt install rock-dkms rocm-dev rocm-libs miopen-hip miopengemm hipsparse  rccl rocthrust hipcub roctracer-dev
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
pip install enum34 numpy pyyaml setuptools typing cffi future hypothesis
  • 1
  • 2
  • 3
  • 4
  1. clone Pytorch源码
cd ~
git clone https://github.com/pytorch/pytorch.git or git clone https://github.com/ROCmSoftwarePlatform/pytorch.git
cd pytorch
git submodule update --init --recursive
  • 1
  • 2
  • 3
  • 4
  1. 参考这个Issue的指示,修改对应的文件

  2. 遵循官方指示:

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
  • 1
  • 2
  • 3
  • 4

另外建议加入以下两行,是我在编译失败过程中新加的

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
  • 1
  • 2

然后在pytorch/cmake/External/rccl.cmake 里添加set(RCCL_DIR"/opt/rocm/rccl/lib/cmake/rccl")

  1. 删除conda环境中的ld(可选,仅针对使用anaconda)。
cd ~/anaconda3/envs/$YOUR_ENV_NAME$/compiler_compat
mv ld ld-tmp
cd
  • 1
  • 2
  • 3
  1. Hipify CUDA的函数
    注意,如果这里报错的话一定不要忽略,找到错误的根源进行修改或者直接删除了重新clone。这个过程很快,会有部分skipped 和 ok,只要不是报错都没问题。
cd pytorch
python tools/amd_build/build_amd.py
  • 1
  • 2
  1. 配置你的GPU类型。目前ROCm支持gfx803, gfx900和gfx906这三种GPU。官方的安装指南里面包含了这一步,如果不能确定,可以通过以下命令获取/opt/rocm/bin/rocm_agent_enumerator。通过设置环境变量,指明编译针对的GPU类型,我的设置为:
    export PYTORCH_ROCM_ARCH=gfx906
    而且,参考了官方的docker安装指南以后,我又加了
    export HCC_AMDGPU_TARGET=gfx906
    不知道是否是必要的
  2. 开始编译Pytorch,其中官方说明注明,MAX_JOBS = n时,占用的内存约为4nGB,也就是说16G内存的话可以考虑设为4,内存够大可以设置得大一点。
USE_ROCM=1 USE_LMDB=1 USE_OPENCV=1 MAX_JOBS=4 python setup.py install --user
  • 1
  1. 编译完成Pytorch之后(如果成功的话),编译torchvision,
git clone https://github.com/pytorch/vision
cd vision
python setup.py install
cd ..
  • 1
  • 2
  • 3
  • 4
  1. 全部编译完成后进行测试
PYTORCH_TEST_WITH_ROCM=1 python test/run_test.py --verbose
  • 1

其他

如果按照上面的步骤操作完仍然不能跑通你的代码(至少python -c "import torch"不报错),那么你可以尝试一下几点:

  1. 第三步git源码的部分换一个源进行clone。
  2. 仔细注意第3.5步issue里面的比较官方的回复(即apply that patch)
  3. 按照报的错仔细去查找,如果在configuration阶段报错关于RCCL的,可以尝试加
sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rccl/lib/cmake/rccl/rccl-config.cmake
export LIBRARY_PATH="/opt/rocm/rccl/lib/"
  • 1
  • 2
  1. 如果以上你都检查过还是报错,那么建议拷贝错误的地方去谷歌上搜索一下,百度上是搜不到什么干货的,我也是多次google到对我很有价值的信息。
  2. 如果你ROCM或者什么其他相关的包下载的很慢(或者经常遇到异常EOF),去挂个代理吧,相关的方法可以在网上查,或者在最开始提到的JC大神的博客中学习。

AMD的GPU拿来跑深度学习,Rocm3.0Pytorch@Ubuntu16 编译记录相关推荐

  1. AMD的GPU拿来跑深度学习?Rocm3.0Pytorch@Ubuntu16编译实录

    折腾了一周了吧,终于是在自己的电脑上编译完成,并且可以跑通Pytorch训练代码了.我也是小白一个,如果有专业词汇使用不当,还请见谅. 编译过程参考了官方编译文档, JC大神的博文以及github里面 ...

  2. 新手小白如何租用GPU云服务器跑深度学习

    最近刚学深度学习,自己电脑的cpu版本的pytorch最多跑个LexNet,AlexNet直接就跑不动了,但是作业不能不写,实验不能不做.无奈之下,上网发现还可以租服务器这种操作,我租的服务器每小时0 ...

  3. 不是Nvidia(英伟达)显卡可以安装CUDA跑深度学习算法吗?

    不是Nvidia(英伟达)显卡可以安装CUDA跑深度学习算法吗? 答:不行! Cuda主要是面向Nvidia的GPU的.Intel和AMD的显示芯片都不能进行.所以,想要让cuda环境搭建在自己的Wi ...

  4. CPU和GPU跑深度学习差别有多大?

    作者:带萝卜 链接:https://www.zhihu.com/question/273812506/answer/1271840613 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  5. 英伟达新禁令:不能随便用GeForce显卡跑深度学习(挖矿可以)

    维金 允中 发自 凹非寺 量子位 出品 | 公众号 QbitAI 终于藏不住了. 正值西方国家欢度佳节之时,一份英伟达的surprise终于被发现. 是一条关于GeForce的禁令. 这款备受AI&q ...

  6. 用于跑深度学习的嵌入式硬件平台资料整理(二)

    博主之前已经有一篇博客有这方面的介绍,这段时间自己也熟悉了下树莓派(前面已有很多关于此的系列博客),所以这篇博客探讨的会更深入些,为后面的实战做准备. 用于跑深度学习的嵌入式硬件平台资料整理_竹叶青l ...

  7. Windows 下安装 CUDA 和 Pytorch 跑深度学习

    Windows 下安装 CUDA 和 Pytorch 跑深度学习 一.安装cuda 11.3 1.1 download cuda 11.3 1.2 双击解压 1.3 测完安装是否成功 二.安装Anac ...

  8. TVM 优化 ARM GPU 上的移动深度学习

    TVM 优化 ARM GPU 上的移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与桌面平台上所做的类似,在移动设备中使用 GPU 既有利于推理速度,也有利于能源 ...

  9. TVM在ARM GPU上优化移动深度学习

    TVM在ARM GPU上优化移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率.但是,大 ...

最新文章

  1. SAP生产订单预留(下)
  2. 银河麒麟v10更新异常问题
  3. tgz文件linux打开,tgz文件扩展名,tgz文件怎么打开?
  4. 五十六、从高中碾转相除法、更相减损术算法谈起
  5. crc16的c语言函数 计算ccitt_C语言为何如此重要
  6. cassandra常用操作总结
  7. java okhttp3 工具类,Retrofit+okhttp+Rxjava网络请求工具类
  8. 2021-2025年中国电动婴儿车行业市场供需与战略研究报告
  9. scala 学习笔记--集合
  10. tcp协议和udp协议区别_TCP和UDP协议有什么区别?
  11. mac 用 VMware Fusion 安装 ubuntu
  12. day06笔记(2021-09-28)-OOP:面向对象+封装+继承+多态
  13. 与合作伙伴合作,如何正确的“吵架”
  14. Bootstrap框架----标签Tag输入用法--Bootstrap-tagsinput
  15. 延期年金(deferred annuity)
  16. 工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
  17. 【unittest学习】unittest框架主要功能
  18. c语言编写“输入密码,是否登录成功的程序”
  19. GitHub上最火的Android开源项目
  20. PHP连锁美业收银系统源码

热门文章

  1. SAS 学习笔记(六)— SAS与属性数据分析
  2. 一个BUG(缺陷)的生命周期
  3. Java中的向上转型及向下转型
  4. python机器人编程——四轴UARM机械臂的运动控制(逆解)原理及python实现(上)
  5. VScode mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring it
  6. Deauth Flood 攻击
  7. 干谷净重694.27公斤 滦南国稻种芯-517功能性苦瓜稻北方旱作
  8. NFS(网络文件系统)简介及搭建
  9. 端口隔离port-isolate(二层隔离)
  10. java的Callable接口