AMD ROCm 软件
ROCm是一个开源堆栈,主要由开源软件组成,专为图形处理单元(GPU)计算而设计。ROCm由一系列驱动程序、开发工具和API组成,使GPU编程能够从低级内核到最终用户应用程序。
使用ROCm,可以自定义GPU软件以满足特定需求。可以在免费、开源、集成和安全的软件生态系统中开发、协作、测试和部署应用程序。ROCm特别适合GPU加速的高性能计算(HPC)、人工智能(AI)、科学计算和计算机辅助设计(CAD)。
ROCm由AMD的异构计算接口可移植性(HIP)提供支持,HIP是一种开源软件C++GPU编程环境及其相应的运行时。HIP允许ROCm开发人员通过在从专用游戏GPU到百亿亿次HPC集群的一系列平台上部署代码,在不同平台上创建可移植应用程序。
ROCm支持OpenMP和OpenCL等编程模型,并包括所有必要的开源软件编译器、调试器和库。ROCm已完全集成到机器学习(ML)框架中,如PyTorch和TensorFlow。
1. 获取ROCm源代码
AMD ROCm是由开源软件构建的。因此,可以通过下载源代码并重建组件来修改ROCm的各个组件。ROCm组件的源代码可以使用git从每个GitHub存储库中克隆。为了便于下载这些工具的正确版本,ROCm存储库包含一个名为default.xml的repo清单文件。可以使用此清单文件下载ROCm软件的源代码。
2. 安装repo工具
Google的repo工具允许同时管理多个git存储库。运行以下命令安装repo工具:
mkdir -p ~/bin/
curl */git-repo-downloads/repo > ~/bin/repo[1] [2]
chmod a+x ~/bin/repo
注意:~/bin/文件夹仅作为示例。如果需要,可以指定一个不同的文件夹来安装repo工具。
3. 安装git-lfs
一些ROCm项目使用Git大文件存储(LFS)格式,这可能需要安装Git LFS。例如,要为Ubuntu安装git-lfs,使用以下命令:
sudo apt-get install git-lfs
4. 下载ROCm源代码
以下示例显示了如何使用repo工具下载ROCm源代码。如果选择~/bin/以外的目录来安装repo工具,则必须在代码中使用所选目录,如下所示:
mkdir -p ~/ROCm/
cd ~/ROCm/
~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.0.x
~/bin/repo sync
使用此示例代码将导致repo工具下载与指定ROCm版本相关的开源代码。在下载之前,确保计算机上为GitHub ID配置了ssh密钥,如使用ssh连接GitHub所述。
5. 构建ROCm源代码
每个ROCm组件存储库都包含构建该组件的说明,例如rocSPARSE文档Linux安装和构建。
6. 从源代码构建ROCm
将使用尽可能多的处理器进行并行构建。一些编译器可能会消耗高达10GB的RAM,因此确保有足够的交换空间!
默认情况下,ROCm构建将针对所有支持的GPU架构进行编译,大约需要500个CPU小时。如果使用如下所述的环境变量GPU_ARCHS来限制需要构建的GPU架构,那么构建时间将大大减少。
# --------------------------------------
# 第一步:克隆源代码
# --------------------------------------
mkdir -p ~/WORKSPACE/ # 或WORKSPACE以外的任何文件夹名称
cd ~/WORKSPACE/
export ROCM_VERSION=6.2.0
~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.2.x -m tools/rocm-build/rocm-${ROCM_VERSION}.xml
~/bin/repo sync
# 步骤2:准备构建环境
# --------------------------------------
#选项1:启动docker容器
#提取所需的基本docker镜像:
# Ubuntu20.04 built from ROCm/tools/rocm-build/docker/ubuntu20/Dockerfile
docker pull rocm/rocm-build-ubuntu-20.04:6.2
# Ubuntu22.04 built from ROCm/tools/rocm-build/docker/ubuntu22/Dockerfile
docker pull rocm/rocm-build-ubuntu-22.04:6.2
# Ubuntu24.04 built from ROCm/tools/rocm-build/docker/ubuntu24/Dockerfile
docker pull rocm/rocm-build-ubuntu-24.04:6.2
# 启动docker容器并挂载源代码文件夹:
docker run -ti \
-e ROCM_VERSION=${ROCM_VERSION} \
-e CCACHE_DIR=$HOME/.ccache \
-e CCACHE_ENABLED=true \
-e DOCK_WORK_FOLD=/src \
-w /src \
-v $PWD:/src \
-v /etc/passwd:/etc/passwd \
-v /etc/shadow:/etc/shadow \
-v ${HOME}/.ccache:${HOME}/.ccache \
-u $(id -u):$(id -g) \
<replace_with_required_ubuntu_base_docker_image> bash
# 选项2:将所需的软件包安装到主机中
# 对于ubuntu20.04系统
cd ROCm/tools/rocm-build/docker/ubuntu20
cp * /tmp && cd /tmp
bash install-prerequisites.sh
# 对于ubuntu22.04系统
cd ROCm/tools/rocm-build/docker/ubuntu22
cp * /tmp && cd /tmp
bash install-prerequisities.sh
# 对于ubuntu24.04系统
cd ROCm/tools/rocm-build/docker/ubuntu24
cp * /tmp && cd /tmp
bash install-prerequisites.sh
# --------------------------------------
# 步骤3:运行构建命令行
# --------------------------------------
# 在构建之前选择GPU目标:
# 当未设置GPU_ARCHS时,将使用ROCm6.1支持的默认GPU目标。
# 要针对GFX架构的子集进行构建,可以使用以下env变量。
# Support MI300 (gfx940, gfx941, gfx942).
export GPU_ARCHS="gfx942" # Example
export GPU_ARCHS="gfx940;gfx941;gfx942" # Example
#在docker容器中选择并运行构建命令:
#构建rocm-dev软件包
make -f ROCm/tools/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} rocm-dev
# 构建所有ROCm包
make -f ROCm/tools/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} all
# 列出所有ROCm组件以查找所需组件
make -f ROCm/tools/rocm-build/ROCm.mk list_components
# 构建单个ROCm包
make -f ROCm/tools/rocm-build/ROCm.mk T_rocblas
# 在ubuntu20.04中查找内置包:
out/ubuntu-20.04/20.04/deb/
# 在ubuntu20.04中查找内置包:
out/ubuntu-22.04/22.04/deb/
# 在ubuntu20.04中查找内置包:
out/ubuntu-24.04/24.04/deb/
# 在ubuntu22.04中查找内置日志:
out/ubuntu-20.04/20.04/logs/
# 在ubuntu22.04中查找内置日志:
out/ubuntu-22.04/22.04/logs/
# 在ubuntu22.04中查找内置日志:
out/ubuntu-24.04/24.04/logs/
# 所有与故障组件相关的日志都以.errrors扩展名结尾。
out/ubuntu-22.04/22.04/logs/rocblas.errors # 示例
# 所有与建筑组件相关的日志都以.inprogress扩展名结尾。
out/ubuntu-22.04/22.04/logs/rocblas.inprogress # 示例
# 所有与传递的组件相关的日志,请使用组件名称。
out/ubuntu-22.04/22.04/logs/rocblas # 示例
7. ROCm文件
此存储库包含ROCm版本、更改日志和版本信息的清单文件。
default.xml文件包含用于构建当前ROCm版本的所有存储库和相关提交的信息;default.xml使用清单格式存储库。
文档的源代码位于大多数ROCm存储库的/docs文件夹中。存储库的开发分支包含下一个ROCm版本的内容。
ROCm文档主页是ROCm.docs.amd.com。
8. 构建文档
为了快速开始构建,请使用以下代码。
cd docs
pip3 install -r sphinx/requirements.txt
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en. _build/html
或者,支持CMake构建。
cmake -B build
cmake --build build --target=doc