AMD ROCm软件栈组件介绍

AMD ROCm™ Platform

1.1 ROCm简介

参考:https://github.com/RadeonOpenCompute/ROCm

ROCm(Radeon Open Compute)开源软件栈。

在NVIDIA GPU上,术语“CUDA”通常是指GPU编程编译器、API和运行时库,但ROCm不那么单一,通常根据其组件进行描述。

图1显示了ROCm中涉及的主要组件堆栈。

ROCm的顶部面向用户的组件通常是HIPAPI可移植性接口,它与CUDA几乎相同,主要的实际区别只是API函数的名称。

HIP程序中的GPU内核使用LLVM编译器的AMD GPU后端进行编译,并使用ROCclr(ROCm公共语言运行时)运行时库运行。

ROCclr下面是一个实现HSA(异构系统架构)API的低级用户空间库,它创建和管理驱动程序和硬件的内存映射队列和命令。

图 1:ROCm 软件栈的组成部分

ROCm是一个开源软件栈,主要由开源软件(OSS)组成,设计用于图形处理单元(GPU)计算。

ROCm由一组驱动程序、开发工具和api组成,支持从低级内核到最终用户应用程序的GPU编程。使用ROCm,您可以自定义GPU软件以满足您的特定需求。您可以在免费、开源、集成和安全的软件生态系统中开发、协作、测试和部署您的应用程序。

ROCm特别适合gpu加速的高性能计算(HPC)、人工智能(AI)、科学计算和计算机辅助设计(CAD)。

ROCm由AMD的可移植性异构计算接口(HIP)、OSS c++ GPU编程环境及其相应的运行时提供支持。HIP允许ROCm开发人员通过在一系列平台(从专用游戏gpu到百亿亿级HPC集群)上部署代码,在不同的平台上创建便携式应用程序。

ROCm支持编程模型,如OpenMP和OpenCL,并包括所有必要的OSS编译器、调试器和库。ROCm完全集成到机器学习(ML)框架中,如PyTorch和TensorFlow。

1.1.1 ROCm主要组件

ROCm是AMD的开源GPU计算软件堆栈,旨在提供一个可移植、高性能的GPU计算平台。

ROCm支持AMD的GPU和APU,以及x86和ARM架构的处理器,提供了与CUDA相似的编程模型,使得在AMD GPU上编写和运行GPU计算应用程序变得更加容易。

ROCm的主要组件包括:

ROCm驱动程序:用于管理AMD GPU和APU的硬件资源,提供GPU计算所需的基本功能。

ROCm编译器:包括AMD的HIP编译器和HCC编译器,用于将HIP和C++ AMP代码编译为底层GPU指令。

ROCm运行时库:包括AMD的HIP运行时库和HCC运行时库,提供GPU计算所需的核心功能,如内存管理、线程调度、并发控制等。

ROCm工具集:包括AMD的GPU调试器、性能分析器、代码优化工具等,用于帮助开发人员调试和优化GPU计算应用程序。

ROCm的目标是成为一个全面的GPU计算平台,支持各种编程语言和应用场景。它已经得到了广泛的应用,尤其是在深度学习、科学计算和大数据分析等领域。

ROC —— Radeon Open Computing,即 “Radeon 开放计算”。其中,Radeon 是 AMD GPU 产品的品牌名。

ROCm——ROC platforM 的简称,是基于一系列开源项目的 AMD GPU 计算生态。ROCm 之于 AMD GPU,基本上相当 于 CUDA 之于 NVIDIA GPU。除 ROCm 外,还有一系列 ROCx 的简称,如 ROCr —— ROC Runtime,ROCk —— ROC kernel driver, ROCt —— ROC Thunk 等。

HSA——Heterogeneous system architecture,可以简单理解为硬件上的一层抽象。 AMD 等为支持 CPU+GPU 混合计算生态而成立了非赢利组织 HSA 基金,提供 runtime 和架构 API 标准。现成员包括 AMD、三星、高通、ARM、TI、Imagination、MTK等。

GCN——Graphics Core Next,是 AMD 11年推出的全新架构,以区别于之前基于基于 VLIW (超长指令字)的架构。由于现在所有 AMD GPU 都建于 GCN 架构,失去 ”next“ 的对象,因此,GCN 可以简单理解为 AMD GPU 架构

1.2 ROCm与CUDA对比

主要模块的对比

了解 ROCm 最快的方式可能是和 CUDA 对比。表1给出了主要模块的对比。

CUDA

ROCm

备注

CUDA API

HIP

C++ 扩展语法

NVCC

HCC

编译器

CUDA 函数库

ROC 库、HC 库

Thrust

Parallel STL

HCC 原生支持

Profiler

ROCm Profiler

CUDA-GDB

ROCm-GDB

nvidia-smi

rocm-smi

DirectGPU RDMA

ROCn RDMA

peer2peer

TensorRT

Tensile

张量计算库

CUDA-Docker

ROCm-Docker

编程模型

ROCm是AMD的一个软件平台,用来加速GPU计算

A卡上编程模型使用的是HIP或者OpenCL,而运行环境是ROCm

N卡上,编程模型是CUDA,运行环境也是CUDA

软件栈对比

### 如何在PyTorch中使用ROCm作为后端 为了使PyTorch能够利用AMD ROCm平台,安装特定版本的PyTorch构建是必要的,该构建已经针对ROCm进行了优化[^1]。通常情况下,官方提供的预编译二进制文件可能不总是包含最新的ROCm支持;因此,在某些场景下,从源码编译可能是必需的操作。 对于希望快速上手并测试环境配置的人而言,可以考虑基于已有的Docker镜像来简化设置流程。例如,`jupyterlab-pytorch:2.1.0-ubuntu20.04-dtk24.04-py310` 这样的容器化解决方案提供了预先配置好的Python 3.10以及Ubuntu操作系统环境,并集成了PyTorch框架及其依赖项,使得开发者无需手动处理复杂的软硬件兼容性问题[^2]。 当涉及到启用GPU加速时,特别是对于那些拥有AMD GPU设备的目标机器来说,确保正确加载了ROCm驱动程序和服务至关重要。这可以通过指定相应的标志位给Docker启动参数实现,比如下面的例子展示了如何为名为 `open-d -p 3000:8080 --gpus=all ... ``` 值得注意的是,上述命令中的 `--gpus=all` 参数指示Docker引擎让容器访问所有的物理GPU设备,这对于充分利用多卡系统的性能非常有帮助[^3]。然而,要真正意义上激活ROCm的支持,则还需要额外关注几个方面: - **确认系统满足最低要求**:包括但不限于Linux发行版版本、内核更新情况等。 - **按照官方指南完成ROCm软件栈部署**:涉及安装rocm-dkms包以及其他必要组件。 - **获取适配ROCm的PyTorch轮子文件(wheel)** 或者直接采用由社区维护的相关Docker镜像来进行开发工作。 一旦完成了这些准备工作之后,就可以如同常规操作那样编写和执行基于PyTorch的应用程序代码了——只需记得验证当前环境中确实启用了ROCm路径即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值