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:
-
编译安装其余组件