AMD ROCm 软件

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

posted @ 2025-03-20 06:09  吴建明wujianming  阅读(174)  评论(0)    收藏  举报