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
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组成
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
- 下载hip:https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html