AMD AI 平台

AMD AI 平台

简介

ROCm

ROCm,ROC(Radeon Open Computing,即 “Radeon 开放计算”。其中,Radeon 是 AMD GPU 产品的品牌名。) platforM 的简称,是一个开源的 AMD GPU 计算生态,对标NVIDIA的CUDA。除 ROCm 外,还有一系列 ROCx 的简称,如 ROCr —— ROC Runtime,ROCk —— ROC kernel driver, ROCt —— ROC Thunk 等。

ROCm支持多种编程语言和编程接口,例如 HIP(Heterogeneous-Compute Interface for Portability)、OpenCL和OpenMP,如编程指南中所述。

ROCm VS CUDA

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

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

CUDAROCm备注
CUDA APIHIPC++ 扩展语法
NVCCHCC编译器
CUDA 函数库ROC 库、HC 库
ThrustParallel STLHCC 原生支持
ProfilerROCm Profiler
CUDA-GDBROCm-GDB
nvidia-smirocm-smi
DirectGPU RDMAROCn RDMApeer2peer
TensorRTTensile张量计算库
CUDA-DockerROCm-Docker

ROCm组成

ROCm的主要组成部分包括:

  • ROCm驱动程序:用于管理AMD GPU和APU的硬件资源,提供GPU计算所需的基本功能。
  • ROCm编译器:包括AMD的HIP编译器和HCC编译器,用于将HIP和C++ AMP代码编译为底层GPU指令。
  • ROCm运行时库:包括AMD的HIP运行时库和HCC运行时库,提供GPU计算所需的核心功能,如内存管理、线程调度、并发控制等。
  • ROCm工具集:包括AMD的GPU调试器

HIP

HIP(Heterogeneous-Compute Interface for Portability)是AMD开发的一种GPU编程模型,旨在实现GPU代码的可移植性。HIP提供了一组C++类和函数,允许开发人员在AMD和NVIDIA GPU上编写可移植的代码。HIP的编程模型与CUDA相似,但是它是一个开放的标准,不依赖于任何特定的GPU厂商。

HIP是一种编程模型,对标CUDA编程模型。 HIP 可以说是 CUDA API 的”山寨克隆“版。除了一些不常用的功能(e.g. managed memory)外,几乎全盘拷贝 CUDA API,是 CUDA 的一个子集。 HIP is a C++ runtime API 。我们使用C++语言,可以调用HIP的API来进行编程。 HIP可以运行在ROCm平台,也可以运行在CUDA平台。 所以他可以运行在A卡,但是也可以运行在N卡上(N卡主要还是CUDA) 。 HIP 的API和CUDA非常类似,大多数情况下他们代码稍加修改就可以直接转换。

CUDA转HIP

HIP提供了移植工具 “hipify”,可以帮助你将cuda源代码转换成HIP。虽然HIP和CUDA具有相似的编程模型,但是它们在一些细节上有所不同,因此转换后的代码可能需要进行一些手动调整和修改,以确保其在AMD GPU上能够正确运行。 此外,由于AMD和NVIDIA GPU具有不同的架构和指令集,因此在不同的GPU上运行HIP和CUDA应用程序时,性能可能会有所差异。因此,在将CUDA应用程序移植到AMD GPU上时,需要进行一些性能测试和优化,以确保其在AMD GPU上能够获得最佳性能。

安装

windows11

  1. 下载hip:https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html

参考

  1. https://rocm.docs.amd.com/en/latest/
  2. https://github.com/ROCm/ROCm
updatedupdated2025-03-152025-03-15