ROCm 是一个主要由开源软件构成的开源堆栈,专为图形处理单元(GPU)计算而设计。ROCm 包含一系列驱动程序、开发工具和 API,支持从底层内核到终端应用程序的 GPU 编程。
借助 ROCm,您可以定制 GPU 软件以满足特定需求。您可以在一个免费、开源、集成且安全的软件生态系统中开发、协作、测试和部署应用程序。ROCm 特别适用于 GPU 加速的高性能计算(HPC)、人工智能(AI)、科学计算和计算机辅助设计(CAD)。
ROCm 的核心是 AMD 的 异构计算可移植性接口(HIP),这是一个开源的 C++ GPU 编程环境及其对应的运行时。HIP 允许 ROCm 开发人员通过将代码部署在从专用游戏 GPU 到百亿亿次级 HPC 集群的各种平台上,来创建可移植的应用程序。
ROCm 支持 OpenMP 和 OpenCL 等编程模型,并包含所有必需的开源软件编译器、调试器和库。ROCm 已完全集成到 PyTorch 和 TensorFlow 等机器学习(ML)框架中。
AMD ROCm 基于开源软件构建。因此,可以通过下载源代码并重新构建组件来修改 ROCm 的各个部分。ROCm 组件的源代码可以使用 git 从各个 GitHub 仓库克隆。为了便于下载这些工具的正确版本,ROCm 仓库包含一个名为 default.xml 的 repo 清单文件。您可以使用此清单文件下载 ROCm 软件的源代码。
Google 的 repo 工具允许您同时管理多个 git 仓库。运行以下命令安装 repo 工具:
mkdir -p ~/bin/
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
注意: 示例中使用了 ~/bin/ 文件夹。您可以根据需要指定其他文件夹来安装 repo 工具。
一些 ROCm 项目使用 Git 大文件存储(LFS)格式,可能需要您安装 git-lfs。更多信息请参考 Git 大文件存储。例如,要在 Ubuntu 上安装 git-lfs,请使用以下命令:
sudo apt-get install git-lfs
以下示例展示了如何使用 repo 工具下载 ROCm 源代码。如果您选择了 ~/bin/ 以外的目录来安装 repo 工具,则必须在代码中使用该目录,如下所示:
mkdir -p ~/ROCm/
cd ~/ROCm/
export ROCM_VERSION=6.3.2
~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.3.x -m tools/rocm-build/rocm-${ROCM_VERSION}.xml
~/bin/repo sync
注意: 使用此示例代码将使 repo 工具下载与指定 ROCm 版本相关的开源代码。请确保在下载前已为您的 GitHub ID 在机器上配置好 ssh 密钥,如 使用 SSH 连接到 GitHub 中所述。
每个 ROCm 组件仓库都包含构建该组件的说明,例如 rocSPARSE 文档中的 Linux 安装与构建。请参考特定组件的文档以获取构建仓库的说明。
每个 ROCm 软件版本都支持特定的硬件和软件配置。有关当前支持的硬件和操作系统,请参考 系统要求(Linux)。
构建过程将使用尽可能多的处理器进行并行编译。某些编译任务可能消耗高达 10GB 的内存,因此请确保有足够的交换空间!
默认情况下,ROCm 构建会为所有支持的 GPU 架构进行编译,大约需要 500 个 CPU 小时。如果通过使用下面提到的环境变量 GPU_ARCHS 来限制需要构建的 GPU 架构,构建时间将显著减少。
# --------------------------------------
# 步骤1:克隆源代码
# --------------------------------------
mkdir -p ~/WORKSPACE/ # 或使用 WORKSPACE 以外的任何文件夹名
cd ~/WORKSPACE/
export ROCM_VERSION=6.3.2
~/bin/repo init -u http://github.com/ROCm/ROCm.git -b develop -m tools/rocm-build/rocm-${ROCM_VERSION}.xml
~/bin/repo sync
# --------------------------------------
# 步骤 2:准备构建环境
# --------------------------------------
# 选项 1:启动一个 Docker 容器
# 拉取所需的基础 Docker 镜像:
# Ubuntu20.04 基于 ROCm/tools/rocm-build/docker/ubuntu20/Dockerfile 构建
docker pull rocm/rocm-build-ubuntu-20.04:6.3
# Ubuntu22.04 基于 ROCm/tools/rocm-build/docker/ubuntu22/Dockerfile 构建
docker pull rocm/rocm-build-ubuntu-22.04:6.3
# Ubuntu24.04 基于 ROCm/tools/rocm-build/docker/ubuntu24/Dockerfile 构建
docker pull rocm/rocm-build-ubuntu-24.04:6.3
# 启动 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 架构进行构建,可以使用下面的环境变量。
# 支持 MI300 (gfx940, gfx941, gfx942)。
export GPU_ARCHS="gfx942" # 示例
export GPU_ARCHS="gfx940;gfx941;gfx942" # 示例
# 在 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/
# 在 ubuntu22.04 中查找构建好的包:
out/ubuntu-22.04/22.04/deb/
# 在 ubuntu24.04 中查找构建好的包:
out/ubuntu-24.04/24.04/deb/
# 在 ubuntu20.04 中查找构建日志:
out/ubuntu-20.04/20.04/logs/
# 在 ubuntu22.04 中查找构建日志:
out/ubuntu-22.04/22.04/logs/
# 在 ubuntu24.04 中查找构建日志:
out/ubuntu-24.04/24.04/logs/
# 所有与失败组件相关的日志,以 .errors 扩展名结尾。
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 # 示例
注意:ROCm.mk 概述
此仓库包含 ROCm 版本的 清单文件、变更日志和发布信息。
default.xml 文件包含所有仓库的信息以及用于构建当前 ROCm 版本的相关提交;default.xml 使用了 清单格式仓库。
我们文档的源代码位于大多数 ROCm 仓库的 /docs 文件夹中。仓库的 develop 分支包含下一个 ROCm 版本的内容。
ROCm 文档主页是 rocm.docs.amd.com。
有关如何为 ROCm 文档做出贡献的信息,请参阅 为 ROCm 文档做贡献。
有关旧版 ROCm 的发布信息,请参考 ROCm 发布历史。