ubuntu 23.04从源码编译安装rocm运行tensorflow-rocm

因为ubuntu22.04的RDP不支持声音转发,所以下载了ubuntu23.04.但官方的rocm二进制包最高只支持ubuntu22.04,不支持ubuntu 23.04,只能自己从源码编译虽然有网友告诉我可以用docker运行rocm。但是我已经研究了好几天,沉没成本太多,无奈只能继续硬着头皮研究,终于搞定了。记录下结果,可能有遗漏,顺序也可能不对,仅供参考。如果CMAKE有错误可以试试添加或者删除-DCMAKE_PREFIX_PATH="/opt/rocm/",毕竟为了避免冲突,rocm的库独立于系统主库了。

首先,要明确一点,rocm安装的位置在/opt/rocm/目录下,而rocm-llvm工具链安装目录为/opt/rocm/llvm这个可以通过解包官方的deb包来知道。注意不要把/opt/rocm/llvm目录下的东西安装到/opt/rocm/目录下不然会报错,注意这个-DCMAKE_INSTALL_PREFIX="/opt/rocm/"参数指定安装位置(默认是/usr/local)。

如果不小心装错位置了,可以使用命令

bash 复制代码
sudo grep -lrIZ "https://llvm.org/LICENSE.txt " . | sudo xargs -0 rm -f --

删除LLVM/opt/rocm/lib目录下相关的库。

一、编译安装llvm-rocm工具链

安装这个工具链之前,确保已经有其他工具链已经被安装。可以是llvm也可以是gnu。建议第一次make install的时候不要加sudo,避免装错位置。

bash 复制代码
mkdir -p /opt/rocm/llvm
cd
git clone https://github.com/RadeonOpenCompute/llvm-project.git -b amd-stg-open
cd 
mkdir build
cd build/
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lld" 
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;compiler-rt"
-DLLVM_TARGETS_TO_BUILD='AMDGPU;X86'
-DCMAKE_INSTALL_PREFIX=/opt/rocm/llvm
 ../llvm
sudo make install
cd ../amd/device-libs
mkdir build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_PREFIX_PATH="/opt/rocm/llvm" \
    -DCMAKE_INSTALL_PREFIX=/opt/rocm/ \
    ..
sudo make install
cd ../amd/comgr
mkdir build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_PREFIX_PATH="/opt/rocm/llvm;/opt/rocm/" \
    -DCMAKE_INSTALL_PREFIX=/opt/rocm/ \
    ..
sudo make install

二、编译安装hip工具链

参考:https://github.com/ROCm-Developer-Tools/HIP/blob/develop/docs/developer_guide/build.md

bash 复制代码
sudo apt-get install -y libelf-dev
export ROCM_BRANCH=rocm-5.7.x
git clone -b "$ROCM_BRANCH" https://github.com/ROCm-Developer-Tools/clr.git
git clone -b "$ROCM_BRANCH" https://github.com/ROCm-Developer-Tools/hip.git
git clone -b "$ROCM_BRANCH" https://github.com/ROCm-Developer-Tools/HIPCC.git hipcc
export CLR_DIR="$(readlink -f clr)"
export HIP_DIR="$(readlink -f hip)"
export HIPCC_DIR="$(readlink -f hipcc)"
cd "$HIPCC_DIR"
mkdir -p build; cd build
cmake  ..
make -j4
cd "$CLR_DIR"
mkdir -p build; cd build
cmake -DHIP_COMMON_DIR=$HIP_DIR -DHIP_PLATFORM=amd -DCMAKE_PREFIX_PATH="/opt/rocm/" -DCMAKE_INSTALL_PREFIX=/opt/rocm/ -DHIPCC_BIN_DIR=$HIPCC_DIR/build -DHIP_CATCH_TEST=0 -DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF ..
make -j$(nproc)
sudo make install

三、编译安装rocm-runtime

参考:https://github.com/RadeonOpenCompute/ROCR-Runtime/tree/master/src

bash 复制代码
git clone https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface.git
mkdir -p ROCT-Thunk-Interface/build
cd ROCT-Thunk-Interface/build
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocm ..
sudo make install
git clone https://github.com/RadeonOpenCompute/ROCR-Runtime.git
mkdir -p src/build
cd src/build
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocm ..
sudo make install

四、编译安装rCCL

时间比较长占用内存六十多个G,如果内存不够的话可以加大swap文件或者使用zRAM。

bash 复制代码
sudo apt install zram-config
sudo nano /usr/bin/init-zram-swapping

把里面的mem=$((totalmem / 2 * 1024)) 改为mem=$((totalmem * 2 * 1024))

然后reboot重启,这样就能使用自身内存两倍的zram

bash 复制代码
git clone https://github.com/RadeonOpenCompute/rocminfo.git -b rocm-5.7.x
cd rocminfo/
mkdir -p build
cd build
cmake -DCMAKE_PREFIX_PATH=/opt/rocm ..
sudo make install


python3 -m pip install CppHeaderParser 
git clone https://github.com/RadeonOpenCompute/rocm_smi_lib.git
cd rocm_smi_lib/
mkdir -p build
cd build
cmake ..
sudo make install 
git clone https://github.com/ROCmSoftwarePlatform/rccl.git
cd rccl
sudo ./install.sh -i

五、设置环境变量

参考:https://docs.amd.com/en/docs-5.1.3/deploy/linux/os-native/install.html

bash 复制代码
sudo tee --append /etc/ld.so.conf.d/rocm.conf <<EOF
/opt/rocm/lib
/opt/rocm/lib64
EOF
sudo ldconfig

六、安装tensorflow-rocm测试

bash 复制代码
sudo apt install tensorflow-rocm scikit-learn scipy matplotlib

然后测试

可能遇到的错误:

Could not find NUMA using the following names: numa

解决办法:

bash 复制代码
apt-get install libnuma-dev

rocm_smi/rocm_smi.h' file not found

解决办法: 参考步骤四安装smi库

importError: cannot import name 'np_utils' from 'keras.utils'

解决办法: 修改代码,直接ffrom keras import utils 然后 utils.to_categorical(...)

librccl.so.1: cannot open shared object file: No such file or directory

解决方法:完成步骤四

lang: error: invalid target ID 'gfx941'; format is a processor name followed by an optional colon-delimited list of features followed by an enable/disable sign (e.g., 'gfx908:sramecc+:xnack-')

解决方法:完成步骤一、安装最新rocm-llvm工具链且确保设置-DCMAKE_PREFIX_PATH="/opt/rocm/"

Could not find a configuration file for package "hsa-runtime64"

解决方法:完成步骤三

相关推荐
人猿泰飞13 分钟前
在Ubuntu-22.04.5中安装ONLYOFFICE DocSpace(协作空间)【注意:安装失败,谨慎参考!】
java·linux·运维·python·ubuntu·项目管理·onlyoffice
CAE虚拟与现实15 分钟前
修改wsl中发行版Ubuntu的主机名
linux·运维·ubuntu·wsl·wsl2·修改主机名
开发小能手-roy18 分钟前
Ubuntu服务器性能调优指南:从基础工具到系统稳定性提升
linux·运维·服务器·ubuntu
潘yi.25 分钟前
Shell编程之正则表达式与文本处理器
linux·运维·正则表达式
涛涛讲AI33 分钟前
wkhtmltopdf 实现批量对网页转为图片的好工具,快速实现大量卡片制作
linux·服务器·windows·windows效率工具
破刺不会编程1 小时前
什么是进程?
linux·运维·服务器
大数据魔法师1 小时前
Redis(一) - Redis安装教程(Windows + Linux)
linux·windows·redis
Y1anoohh2 小时前
驱动学习专栏--字符设备驱动篇--2_字符设备注册与注销
linux·c语言·驱动开发·学习
.R^O^2 小时前
计算机知识
linux·服务器·网络·安全
卡戎-caryon3 小时前
【Linux网络与网络编程】11.数据链路层mac帧协议&&ARP协议
linux·服务器·网络·笔记·tcp/ip·数据链路层