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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901836.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐几本专著1《AI芯片开发核心技术详解》、2《智能汽车传感器:原理设计应用》、3《TVM编译器原理与实践》、4《LLVM编译器原理与实践》

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

《自然语言处理实战 : 从入门到项目实践》 | PDF免费下载

《自然语言处理实战:从入门到项目实践》系统讲解 NLP 基础知识与核心技术,涵盖文本分类、情感分析、机器翻译等内容,并通过实际项目演示如何应用深度学习模型解决 NLP 问题。适合 AI 初学者、开发者及数据科学家,助力高效掌握 NLP 技能。《自然语言处理实战 : 从入门到项目…

数组与指针的区别

一、理解数组类型 指针存储的是内存的地址,而内存的地址实际上是一个64位无符号的整数。我们可以发现指针实际上是内存上的一处空间的值保存着另一处空间的地址。1、算数方法获取相邻内存的值 首先定义 x 和 y 两个变量,然后分别输出他们的地址。 int x = 1; int y = 123; co…

《自然语言处理实战 : 预训练模型应用及其产品化》 | PDF免费下载

《自然语言处理实战:预训练模型应用及其产品化》系统讲解了 NLP 领域的最新技术,涵盖 BERT、GPT 等预训练模型的应用,并结合实际案例展示如何将 NLP 技术产品化。适合开发者、数据科学家及 AI 从业者,助力高效落地 NLP 解决方案。点击下载 书籍信息 作者: Ankur A. Patel /…

[以太网/汽车网络] 车载服务通信(SOME/IP)设计实践 [转]

序 1 引入在SOA架构中,服务是构成系统的基本单元,它代表了系统中的某个功能或操作。服务通过明确的接口与外界进行交互,实现了功能的封装和重用。 SOA架构的核心就是服务: 它通过将应用程序划分为一系列的服务来降低系统的复杂度,提高系统的灵活性和可维护性。 在SOA中,服…

小白尖叫!DeepSeek安装竟偷占C盘?这样做路径配置 直接根治存储焦虑!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注前言 之前给大家讲解了关于Ollama+DeepSeek的使用和本地部署, 有些朋友表示遇到一些问题,无法解决! …

智能工厂搭建:系统数量与选型的深度剖析

当今制造业加速迈向智能化的时代,智能工厂成为众多企业追求的目标。它宛如一座现代化的智慧堡垒,融合了先进技术与高效管理流程,能大幅提升生产效率、优化产品质量。然而,构建智能工厂并非一蹴而就,其中一个关键且容易让人困惑的问题便是:究竟要引入多少系统?搞懂这一点…

20款好用的SSH客户端工具,你在用哪个?

20款好用的SSH客户端工具,你在用哪个? 有些小伙伴购买了Linux服务器之后,不知道该用什么工具来实现本地连接,而不是每次打开服务器厂家所提供的 web 命令页面来操作。操作步骤:登录账号 - 找到服务器 - 打开web命令页面SSH工具:打开软件 - 配置连接通过SSH工具大大减少了…

Spring AOP 的实现原理

一、AOP的基本概念 将横切关注点(日志、事务、权限)从业务逻辑中分离出来,提高代码的可维护性。 下面将解释,AOP专属名词,切面、连接点、切点、通知、目标对象、代理对象:切面:切面是封装横切关注点的模块,比如日志记录。 @Aspect 修饰类,如 LoggingAspect 连接点:连…

drm study

学习过程 0319:对于任何驱动来说,buffer是最重要的,知道了buffer的创建使用这个驱动就会一半了;现在感觉是一个无头苍蝇,感觉非常复杂:数据结构非常多,之间的关系也非常复杂;不过没关系,先研究buffer通路;可以看见应用层对mmap写入的hello world,驱动中vkms_obj->…

pcie 简介及引脚定义

随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。 PCI总线使用并行总线结构,在同一条总线上的所有…

C++ 基础(1)

0x01 第一个C++程序 #include <iostream>int main() {std::cout << "Hello World!\n"; } // std::cout 向控制台输出内容的指令 // << 输出的运算符 // "" 字符串内容的边界符 // \n 输出换行 // Hello World 输出字符…