ROCm

ROCm是超微半导体（AMD）用于圖形處理器（GPU）编程的软件栈。ROCm涉及多个领域：图形处理器通用计算（GPGPU）、高性能计算（HPC）和异构计算。它提供多种编程模型：HIP（基于GPU内核的编程）、OpenMP/訊息傳遞介面（基于指令的编程）和OpenCL。

ROCm是免费、自由和开源的软件（GPU固件除外），以各种许可证发布。ROCm最初是Radeon Open Compute platform的缩写，但由于Open Compute已成为注册商标，ROCm已不再是缩写，而只是AMD为GPU计算设计的开源堆栈。

 背景 
ATI/AMD的第一個图形处理器通用计算（GPGPU）軟體堆疊是 (CTM)，後來成為Stream。

ROCm於2016年左右與玻爾茲曼計劃(Boltzmann Initiative)一起推出。 ROCm 堆疊建立在先前的 AMD GPU 堆疊的基礎上，一些工具可追溯到，其他工具可追溯到 (HSA)。

 程式設計能力 

ROCm 作為一個堆疊，範圍從核心驅動程式到最終用戶應用程式。 AMD 透過其學習入口網站提供有關 AMD GCN 硬體和 ROCm 程式設計的介紹影片。

迄今為止，有關堆疊和 ROCm/HIP 程式設計的最佳技術介紹之一仍然可以在 Reddit 上找到。

 硬體支援 

ROCm 主要針對獨立專業 GPU， 但非官方支援包括 Vega 系列和RDNA 2消費級GPU。

AMD加速处理器(APU) 已“啟用”，但未獲得官方支援。 涉及到讓 ROCm 發揮作用。

 專業級GPU 
AMD Instinct加速器是ROCm的一等公民，與專業消費者  GPU系列一樣：它們大多得到全面支援。

截至2022年1月，唯一具有相對同等支援的消費級 GPU 是 Radeon VII（GCN 5 - Vega）。

 消費級GPU 
 GPU系列名稱 南方群島 海島 火山島 北極群島/北極星 Vega Navi 1X Navi 2X 已發布 2012年1月 2013年9月 2015年6月 2016年6月 2017年6月 2019年7月 2020年11月 營銷名稱 Radeon HD 7000 Radeon Rx 200 Radeon Rx 300 Radeon RX 400/500 Radeon RX Vega/Radeon VII(7 nm) Radeon RX 5000 Radeon RX 6000AMD支援 colspan="3"   colspan=4  指令集架構 GCN instruction set RDNA instruction set 微架構 GCN 1st gen GCN 2nd gen  GCN 3rd gen  GCN 4th gen GCN 5th gen RDNA RDNA 2 Type ROCm colspan=3  colspan=1  colspan=1  colspan=1  colspan=2  OpenCL1.2 (on Linux: 1.1 (no Image support) with Mesa 3D) 2.0 (Adrenalin driver on Win7+)(on Linux: 1.1 (no Image support) with Mesa 3D, 2.0 with AMD drivers or AMD ROCm) 2.0 2.1 Vulkan 1.0(Win 7+ or Mesa 17+) 1.2 (Adrenalin 20.1, Linux Mesa 3D 20.0) Shader model 5.1 5.16.3 6.4 6.5 OpenGL 4.6 (on Linux: 4.6 (Mesa 3D 20.0)) Direct3D 11 (11_1)12 (11_1) 11 (12_0)12 (12_0) 11 (12_1)12 (12_1) 11 (12_1)12 (12_2) /drm/amdgpu colspan=2  colspan=5 

 軟體生態系統 
 學習資源 

AMD ROCm 產品經理 Terry Deem 介紹了該堆疊。

 第三方集成 
該堆疊的主要消費者是機器學習和高效能運算/GPGPU 應用程式。

 機器學習 
各種深度學習框架都有 ROCm 後端：

 PyTorch
 TensorFlow
 ONNX
 MXNet
 CuPy
 MIOpen 
 Caffe
 Iree  （使用 LLVM 多層中間表示 (MLIR)）
 llama.cpp 

 超級計算 
ROCm 在TOP500計畫中獲得了顯著的吸引力。 ROCm 與 Exascale 超級電腦El Capitan 和前沿 (超級電腦)(Frontier) 一起使用。

一些相關軟體可以在AMD Infinity中心(AMD Infinity hub)找到。

 與競爭對手的比較 
ROCm 與其他GPU運算堆疊競爭：英偉達CUDA 和 Intel 。

 英偉達CUDA 

英偉達的CUDA是閉源的，而 AMD ROCm 是開源的。 有一些開源軟體建構在閉源CUDA之上，例如RAPIDS 。

CUDA 能夠在消費級 GPU 上運行，而 ROCm 支援主要為 AMD Instinct 和 AMD Radeon Pro 等專業硬體提供。

Nvidia 提供 Clang 前端及其Parallel Thread Execution (PTX) LLVM GPU 後端作為 Nvidia CUDA 編譯器 (Nvidia CUDA Compiler, NVCC)。

 英特爾OneAPI 
與ROCm一樣，oneAPI也是開源的，所有對應的函式庫都發佈在其GitHub頁面上 。

参见

参考资料

Category:应用程序接口
Category:并发计算
Category:GPGPU
Category:GPGPU函式庫
Category:顯示卡
Category:图形硬件
Category:異質計算
Category:机器学习
Category:并行计算
Category:超級電腦