使用源码编译安装AMD ROCm

1 什么是ROCm

AMD ROCm是Radeon Open Compute的缩写,是AMD公司的一套为HPC和超大规模GPU计算提供的开源软件开发平台,AMD ROCm为GPU计算带来了极简主义和模块化软件开发的UNIX理念。

ROCm包含一些列的开发工具、软件框架、库、编译工具、编程模型等,其中包含有:

  • frameworks :Tensorflow / PyTorch / Kokkos

  • libraries :MIOpen / Blas / RCCL / ROC*

  • programming model:HIP / OpenCL

  • Intermediate runtimes and compilers:LLVM based clang (HIP Clang)

  • Programmer and system tools: debug / profile

  • Kernel Driver:

等等。

ROCm全部组件如下:

2 如何安装ROCm

AMD官方提供了完整的安装包,安装比较简单,或者可以使用虚拟机/docker。本文介绍如何通过源码来安装ROCm的部分组件。

ROCm代码仓库存放在https://github.com/RadeonOpenCompute,通过android的代码管理工具repo管理。

2.1 下载源码

# 使用roc-4.3.x分支
repo init -u https://github.com/RadeonOpenCompute/ROCm.git -b roc-4.3.x
repo sync

sync仓库时间比较长。完成之后会将ROCm所有组件的代码全部下载下来:

qihangkong@ubuntu:~/git/rocm$ ls
AMDMIGraphX   MIOpen      ROCK-Kernel-Driver    ROCdbgapi             ROCm-OpenCL-Runtime  
clang-ocl     hipFFT      openmp-extras         rocBLAS               rocSOLVER   
rocm_bandwidth_test       rocr_debug_agent
HIP           MIOpenGEMM  ROCR-Runtime          ROCgdb                ROCmValidationSuite  
half          hipSPARSE   rccl                  rocFFT                rocSPARSE   
rocm_smi_lib  roctracer   HIP-Examples          MIVisionX             ROCT-Thunk-Interface 
ROCm-CompilerSupport      Tensile               hipBLAS               hipfort       
rdc           rocPRIM     rocThrust             rocminfo              HIPIFY        RCP
ROCclr        ROCm-Device-Libs                  atmi                  hipCUB     
llvm-project  rocALUTION     rocRAND  rocm-cmake  rocprofiler

2.2 编译源码

ROCm源码目录下没有一个统一的安装脚本,所以需要一个一个的编译组件,并且编译安装各组件之间有相互依赖关系。可以按照如下安装顺序进行:

  • llvm-project


mkdir -p build; cd build
cmake ../llvm -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH} -DLLVM_ENABLE_ASSERTIONS=1 -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;compiler-rt"
make -j ${JOB_NUM}; make install
  • ROCm-Device-Libs


mkdir -p build; cd build
cmake ../ -DLLVM_DIR=${LLVM_BUILD_PATH} -DLLVM_ENABLE_WERROR=1 -DLLVM_ENABLE_ASSERTIONS=1 -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install
  • ROCm-CompilerSupport


mkdir -p build; cd build
cmake ../ -DCMAKE_PREFIX_PATH="${LLVM_BUILD_PATH};${DEVICELIBS_BUILD_PATH}" -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install
  • ROCT-Thunk-Interface


mkdir -p build; cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install
  • ROCR-Runtime


mkdir -p build; cd build
cmake ../  -DCMAKE_PREFIX_PATH="${LLVM_BUILD_PATH}" -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install
  • ROCclr


mkdir -p build; cd build
cmake ../ -DOPENCL_DIR=${BUILD_TOP_PATH}/ROCm-OpenCL-Runtime -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install
  • OpenCL Runtime


mkdir -p build; cd build
cmake ../ -DUSE_COMGR_LIBRARY=ON -DCMAKE_PREFIX_PATH="${ROCCLR_BUILD_PATH};${TO_INSTALL_PATH}" -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install
  • HIP


mkdir -p build; cd build
cmake ../ -DCMAKE_PREFIX_PATH="${ROCCLR_BUILD_PATH};${TO_INSTALL_PATH}" -DCMAKE_INSTALL_PREFIX=${TO_INSTALL_PATH} -DHSA_PATH=${TO_INSTALL_PATH}
make -j ${JOB_NUM}; make install

3 汇总编译脚本

上面的编译安装过程经过好几遍的重复编译,参数设置的问题,所以将上述过程写成一个脚本,直接复制下面脚本运行即可正确编译安装:

脚本地址:

qihangkong/build_rocm (gitee.com)

如果没有阅读源码的需求,还是建议通过安装包的形式安装,编译安装有很多问题

TODO:

  • 编译安装其余组件

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马师傅哈哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值