ROCm

ROCm
開発者AMD
初回リリース2016年11月14日 ( 2016年11月14日)
安定版リリース
7.1.0 / 2025年10月30日[ 1 ] ( 2025-10-30 )
リポジトリメタリポジトリgithub .com /ROCm /ROCm
書かれたCC++PythonFortranJulia
ミドルウェアヒップ
エンジンAMDgpuカーネルドライバHIPCCLLVMベースのコンパイラ
オペレーティング·システムLinuxWindows [ 2 ]
プラットフォームサポートされているGPU
前任者金属に近いストリームHSA
サイズ2GiB未満
タイプGPGPUライブラリとAPI
ライセンスMITライセンス
Webサイトwww.amd.com/en/products/software/rocm.html

ROCmは、 Advanced Micro Devices(AMD)のグラフィックス・プロセッシング・ユニット(GPU)プログラミング用ソフトウェア・スタックです。ROCmは、グラフィックス・プロセッシング・ユニット(GPGPU)上の汎用コンピューティング、高性能コンピューティング(HPC)、異種コンピューティングなど、複数の領域を網羅しています。ROCmは、 HIPGPUカーネルベース・プログラミング)、OpenMPディレクティブベース・プログラミング)、OpenCLといった複数のプログラミング・モデルを提供しています。

ROCmは無料、自由、オープンソースソフトウェア(GPUファームウェアブロブを除く[ 3 ] )であり、様々なライセンスの下で配布されています。当初はRadeon Open Compute Platformの略称でしたが、 Open Computeが登録商標となったため、現在では頭字語として機能しなくなりました[ 4 ]

背景

ATI / AMDの最初の GPGPU ソフトウェア スタックはClose to Metalで、これがStreamになりました。

ROCmは2016年頃にボルツマン・イニシアティブ[ 5 ]とともに立ち上げられました。[ 6 ] ROCmスタックは以前のAMD GPUスタックを基盤としており、一部のツールはGPUOpenに由来し、その他のツールはHSA( Heterogeneous System Architecture)に由来しています。

異機種システムアーキテクチャ中間言語

HSAIL [ 7 ]は、適切なファイナライザを用いて最終的なハードウェア(GPU、FPGAなど)にJITコンパイル可能な、ハードウェアに依存しない中間表現を生成することを目的としていました。このアプローチはROCmでは廃止され、現在はLLVMとその上流にあるAMDGPUバックエンドを用いてGPUコードのみをビルドします。 [ 8 ]ただし、LLVM MLIRを用いたこのようなモジュール性強化に関する研究は依然として行われています。[ 9 ]

プログラミング能力

ROCmのスタックは、カーネルドライバからエンドユーザーアプリケーションまで多岐にわたります。AMDは、AMD GCNハードウェア[ 10 ]とROCmプログラミング[ 11 ]に関する紹介ビデオを学習ポータル[ 12 ]を通じて提供しています。

スタックとROCm/HIPプログラミングに関する最も優れた技術的紹介の1つは、現在でもRedditで見つけることができます。[ 13 ]

ハードウェアサポート

ROCmは主に業務用ディスクリートGPUを対象としていますが[ 14 ]、対応する業務用GPUと同じアーキテクチャのコンシューマー向けGPUやAPUもROCmで動作することが知られています。例えば、RDNA 2アーキテクチャのすべてのプロ向けGPUはROCm 5.xで公式にサポートされています。ユーザーからは、Radeon 6800M APUやRadeon 6700XT GPUなどのコンシューマー向けRDNA2ユニットも動作することが報告されています[ 15 ] 。

プロフェッショナルグレードのGPU

コンシューマーグレードのGPU

GPUシリーズ 名南の島々シーアイランド火山島北極諸島/ポラリスベガナビ1Xナビ2Xナビ3Xナビ4X
リリース 2012年1月 2013年9月 2015年6月 2016年6月 2017年6月 2019年7月 2020年11月 2022年12月 2025年1月
マーケティング名 Radeon HD 7000 Radeon Rx 200 Radeon Rx 300 Radeon RX 400/500 Radeon RX Vega/Radeon VII(7 nm) レーデオンRX5000 レーデオンRX6000 Radeon RX 7000 レーデオンRX9000
AMDサポート いいえ現在
命令セットGCN命令セットRDNA命令セット
マイクロアーキテクチャGCN 第1世代GCN第2世代GCN第3世代GCN第4世代GCN 第5世代RDNARDNA 2RDNA 3RDNA 4
タイプ 統合シェーダーモデル
ROCm いいえ5.xでは環境変数が必要[ 16 ]6.xで削除された[ 17 ]はい[]はい
オープンCL1.2 ( Linuxの場合: 1.1 (画像サポートなし)、Mesa 3D 付き) 2.0 ( Win7+上の Adrenalin ドライバー) ( Linuxの場合: Mesa 3D では 1.1 (イメージ サポートなし)、AMD ドライバーまたは AMD ROCm では 2.0) 2.0 2.1 [ 20 ]
ヴルカン1.0 ( Win 7以降またはMesa 17以降) 1.2 (Adrenalin 20.1、Linux Mesa 3D 20.0) 1.3
シェーダーモデル5.1 5.1 6.3 6.4 6.5 6.7
オープンGL4.6 (Linux の場合: 4.6 (Mesa 3D 20.0))
ダイレクト3D11 ( 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[ b ]実験的[ 21 ]はい
  1. ^ rocBLASにおけるNavi 1.xのサポートはバージョン6.1まで機能しませんでした。バージョン5.3より前では、環境変数を使用してこれらのGPUで一部の機能を実行するためにgfx1030コードを強制的に使用できましたが、バージョン5.3ではgfx1010 GPUでgfx1030コードが動作しなくなりました。 [ 18 ] [ 19 ]
  2. ^ DRM ( Direct Rendering Manager ) はLinux カーネルのコンポーネントです。

ソフトウェアエコシステム

機械学習

様々なディープラーニングフレームワークがROCmバックエンドを持っている: [ 22 ]

スーパーコンピューティング

ROCmはトップ500で大きな注目を集めています。[ 24 ] ROCmは、エクサスケールスーパーコンピュータEl Capitan [ 25 ] [ 26 ]およびFrontierで使用されています。

関連するソフトウェアは、 AMD Infinity ハブで見つかります。

その他のアクセラレーションとグラフィックスの相互運用

バージョン3.0以降、BlenderはレンダラーサイクルにHIPコンピューティングカーネルを使用できるようになりました。[ 27 ]

その他の言語

ジュリア

JuliaにはAMDGPU.jlパッケージ[ 28 ]があり、これはLLVMと統合され、ROCmスタックのコンポーネントを選択します。HIPを介してコードをコンパイルする代わりに、AMDGPU.jlはJuliaのコンパイラを使用してLLVM IRを直接生成し、LLVMはこれをネイティブデバイスコードの生成に使用します。AMDGPU.jlはROCrのHSA実装を使用してネイティブコードをデバイスにアップロードし、実行します。これは、HIPが独自に生成したデバイスコードをロードする方法に似ています。

AMDGPU.jl は、ROCm の rocBLAS(BLAS 用)、rocRAND(乱数生成用)、rocFFT(FFT 用)との統合もサポートしています。将来的には、rocALUTION、rocSOLVER、MIOpen、およびその他の ROCm ライブラリとの統合も計画されています。

ソフトウェア配布

正式

LinuxおよびWindows向けのインストール手順は、AMD ROCm公式ドキュメントに記載されています。ROCmソフトウェアは現在、複数のGitHubパブリックリポジトリに分散しています。メインのパブリックメタリポジトリには、各公式リリースのXMLマニフェストが含まれています。Git上に構築されたバージョン管理ツールであるgit-repoを使用し、ローカルでスタックと同期することをお勧めします。[ 29 ]

AMDはROCm向けにコンテナ化されたアプリケーションの配布を開始した。特にAMD Infinity Hubに集められた科学研究アプリケーションが中心である。[ 30 ]

AMD は、さまざまな Linux ディストリビューションに合わせたパッケージ を配布しています。

第三者

ROCm をパッケージ化するサードパーティのエコシステムが拡大しています。

LinuxディストリビューションはROCmを公式に(ネイティブに)パッケージ化しており、その進歩の度合いは様々です:Arch Linux[ 31 ] Gentoo、[ 32 ] DebianFedora[ 33 ] GNU GuixNixOS

Spackパッケージがあります。[ 34 ]

コンポーネント

カーネル空間コンポーネントは ROCk が 1 つあり、残り (スタックには約 100 個のコンポーネントがあります) はユーザー空間モジュールで構成されています。

非公式の表記方針としては、低レベルのライブラリでは大文字のROC、低レベルのライブラリでは小文字のROCtを使用し、ユーザー向けのライブラリではその逆、つまりrocBLASを使用することです。[ 35 ]

AMDはLLVMコミュニティと積極的に開発を行っていますが、アップストリーム化は即時に行われず、2022年1月現在も遅れています。[ 36 ] AMDは、まだアップストリーム化されていない部分(独自のままとなるコンパイラ最適化、デバッグサポート、OpenMPオフロードなど)については、さまざまなLLVMフォークを公式にパッケージ 化しています[ 37 ] [ 38 ] [ 9 ]。

低レベル

ROCk – カーネルドライバー

ROCm – デバイスライブラリ

LLVMビットコードとして実装されたサポートライブラリ。これらは、数学演算、アトミック処理、起動パラメータのクエリ、デバイス上でのカーネル起動などのための様々なユーティリティと関数を提供します。

ROCt – ドン!

サンク、スタックに入るすべての思考とキューイングを担当します。

ROCr – ランタイム

ROCランタイムは、ホストアプリケーションによるコンピューティングカーネルの起動を可能にするAPI/ライブラリのセットです。これはAMDによるHSAランタイムAPIの実装です。[ 39 ] ROC共通言語ランタイムとは異なります。

ROCm – コンパイラサポート

ROCm コード オブジェクト マネージャーは、LLVM中間表現とのやり取りを担当します。

中級レベル

ROCclr 共通言語ランタイム

共通言語ランタイムは、Linux上のROCrおよびWindows上のPALへの呼び出しを適応させる間接層です。かつてはHSAILコンパイラのような異なるコンパイラ間のルーティングが可能でしたが、現在は上位の間接層(HIPおよびOpenCL)に吸収されています。

オープンCL

ROCmは、インストール可能なクライアントドライバ(ICD)ローダーとOpenCL [ 40 ]実装をバンドルして出荷しています。2022年1月現在、ROCm 4.5.2はOpenCL 2.2を搭載しており、競合他社に遅れをとっています。[ 41 ]

AMDのGPU実装はHIPAMDと呼ばれています。また、主にデモ目的の CPU実装もあります。

HIPCC

HIPはClangをラップしてLLVMオープンAMDGPUバックエンドでコンパイルするか、NVIDIAコンパイラにリダイレクトする「HIPCC」コンパイラを構築します。[ 42 ]

ヒップファイ

HIPIFYはソースコードからソースコードへのコンパイルツールです。Clangベースのツール、またはsed風のPerlスクリプトを使用して、CUDAからHIPへの変換、およびHIPからのCUDAへの変換を行います。

GPUフォート

HIPIFYと同様に、GPUFORTはソースコードを他の第三世代言語ソースにコンパイルするツールであり、CUDA FortranからHIP Fortranへの移行を可能にします。また、研究プロジェクトのレパートリーにも含まれており、その数はHIPIFYよりもさらに多いです。[ 43 ]

高レベル

ROCmの高水準ライブラリは通常、機械学習フレームワークなどのアプリケーションソフトウェアによって直接利用されます。以下のライブラリのほとんどは、GPUアーキテクチャが得意とする 一般行列乗算(GEMM)カテゴリに属します。

これらのユーザー向けライブラリの大部分は二重形式で提供されています。Nvidiaハードウェアにルーティングできる間接層用のhipとAMD実装用のrocです。 [ 44 ]

rocBLAS / hipBLAS

rocBLAShipBLASは高水準ライブラリの中核を成すもので、AMDによる基本線形代数サブプログラムの実装です。Tensileライブラリを非公開で使用しています

rocSOLVER / hipSOLVER

このライブラリのペアは、 ROCm のLAPACK実装を構成し、rocBLAS と密接に結合されています。

ユーティリティ

  • ROCm 開発者ツール: デバッグ、トレーサー、プロファイラー、システム管理インターフェース、検証スイート、クラスター管理。
  • GPUOpen ツール: GPU アナライザー、メモリ ビジュアライザー...
  • 外部ツール: radeontop ( TUI概要)

競合他社との比較

ROCm は、Nvidia CUDAIntel OneAPIなどの他の GPU コンピューティング スタックと競合します。

エヌビディアCUDA

NvidiaのCUDAはクローズドソースですが、AMD ROCmはオープンソースです。クローズドソースのCUDAをベースに構築されたオープンソースソフトウェア、例えばRAPIDSが存在します。

CUDA はコンシューマー向け GPU で実行できますが、ROCm のサポートは主に AMD InstinctAMD Radeon Proなどのプロフェッショナル向けハードウェア向けに提供されています。

Nvidia は、C/C++ 中心のフロントエンドと、並列スレッド実行(PTX) LLVM GPU バックエンドをNvidia CUDA コンパイラ(NVCC) として提供しています。

インテル OneAPI

すべての oneAPI 対応ライブラリはGitHub ページで公開されています。

統合アクセラレーション財団(UXL)

Unified Acceleration Foundation(UXL)は、OneAPIイニシアチブの継続に取り組む新しい技術コンソーシアムであり、ワーキンググループと特別利益団体(SIG)を通じて、新しいオープンスタンダードのアクセラレータソフトウェアエコシステム、関連するオープンスタンダード、および仕様プロジェクトの構築を目指しています。この目標は、NVIDIAのCUDAに対抗するものです。主な支援企業は、Intel、Google、Arm、Qualcomm、Samsung、Imagination、VMwareです。[ 45 ]

参照

  • AMD ソフトウェア– AMD のドライバー、API、および開発の取り組みに関する一般的な概要。
  • GPUOpen – AMDの補完的なグラフィックスタック
  • AMD Radeon Software – AMDのソフトウェア配信チャネル

参考文献

  1. ^ 「ROCm 7.1.0リリース」 . GitHub . 2025年10月30日閲覧
  2. ^ 「新しいHIP SDKがGPUコンピューティングの民主化に貢献」 2023年7月27日。
  3. ^ 「Debian -- busterのパッケージfirmware-amd-graphicsの詳細」 . Packages.debian.org . 2022年1月18日閲覧
  4. ^ 「質問:ROCmは何の略ですか? · Issue #1628 · RadeonOpenCompute/ROCm」 . Github.com . 2022年1月18日閲覧
  5. ^ 「AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 リリース、Boltzmann が実現」 . anandtech.com . 2016年11月14日時点のオリジナルよりアーカイブ。 2022年1月19日閲覧
  6. ^ 「AMD @ SC15: Boltzmann Initiative 発表 - AMD GPU向けC++およびCUDAコンパイラ」 . anandtech.com . 2015年11月17日時点のオリジナルよりアーカイブ2022年1月19日閲覧。
  7. ^ 「HSAプログラマーズ・リファレンス・マニュアル:HSAIL仮想ISAおよびプログラミングモデル、コンパイラ・ライター、オブジェクト・フォーマット(BRIG)」(PDF) HSA Foundation. 2018年5月2日. 2023年8月1日閲覧
  8. ^ 「AMDGPUバックエンドのユーザーガイド — LLVM 13ドキュメント」 . Llvm.org . 2022年1月18日閲覧
  9. ^ a b「LLVMコンパイラインフラストラクチャ」 . GitHub . 2022年1月19日.
  10. ^ 「AMD GPUハードウェアの紹介」 2020年6月12日 – www.youtube.com経由。
  11. ^ 「HIPプログラミングの基礎」 。2023年2月7日時点のオリジナルよりアーカイブ
  12. ^ 「ROCm™ラーニングセンター」。AMD
  13. ^ 「AMD ROCm / HCCプログラミング:概要」。2018年12月26日。
  14. ^ “ROCm スタートガイド v5.2.3” . 2022年10月2日時点のオリジナルよりアーカイブ
  15. ^ 「これは普段見かけるものではない。6800M(6700XT)ラップトップ上のROCm上でPyTorchが動作している!細かい設定の調整とパッチをいくつか施したが、実際に機能的に動作するようになった。すごい!」 2021年12月10日。
  16. ^ 「HOW-TO: AMD GPUでの安定した拡散」 2022年9月23日。ROC_ENABLE_PRE_VEGA
  17. ^ 「変更ログ — ROCm 6.0.0 ドキュメント」。rocm.docs.amd.com。AMD Instinct MI50、Radeon Pro VII、および Radeon VII 製品 (総称して gfx906 GPU) は、ROCm 6.0 でメンテナンス モードに入ります。[...] メンテナンス終了 [EOM] は、最も近い ROCm リリースに合わせて調整されます [...] gfx906 GPU の配布とオペレーティング システムの更新は、EOM まで ROCm リリース サイクルに従って継続されます。
  18. ^ 「PSA: RDNA1 (gfx1010/gfx101*) GPU は公式パッケージでまもなく動作を開始するはずです。うまくいけば ROCm 6.1 でも動作するはずです。www.reddit.com
  19. ^ 「5700 Xt サポートに関する更新はありますか?」GitHub
  20. ^ 「AMD Radeon RX 6800 XTの仕様」 TechPowerUp . 2021年1月1日閲覧
  21. ^ Larabel, Michael (2016年12月7日). 「Linux 4.9カーネルの優れた機能」 . Phoronix . 2016年12月7日閲覧
  22. ^ 「AMD、ディープラーニングアクセラレーターInstinct MI200シリーズGPUを発表」 Infoq.com 20221月18日閲覧
  23. ^ 「AMD GPU で CuPy を使用する (実験的)」
  24. ^ 「GPU戦争の勃発を受け、AMDが世界トップ500スーパーコンピューターでIntelを追い抜く」 2020年11月16日。
  25. ^ 「El Capitanスーパーコンピュータの詳細:AMDのCPUとGPUが2エクサフロップスの計算能力を実現」 。2021年5月4日時点のオリジナルよりアーカイブ
  26. ^ 「リバモアのエルキャピタンスーパーコンピューター、HPE「Rabbit」ニアノードローカルストレージを発表」。2021年2月18日。
  27. ^ 「Blender 3.0はAMD GPUのサポートを次のレベルに引き上げます。ベータサポートが利用可能になりました!」 Gpuopen.com 2021年11月15日. 2022年1月18日閲覧
  28. ^ “AMD ROCm ⋅ JuliaGPU” . juliagpu.org . 2020年6月13日時点のオリジナルよりアーカイブ2022年1月23日閲覧。
  29. ^ 「ROCm インストール v4.3 — ROCm 4.5.0 ドキュメント」 . Rocmdocs.amd.com . 2022年1月18日閲覧
  30. ^ 「AMD Instinctアクセラレータでの科学アプリケーションの実行がさらに簡単になりました」 HPCwire.com 2021年10月18日. 2022年1月25日閲覧
  31. ^ "ROCm for Arch Linux" . Github.com . 2022年1月17日. 2022年1月18日閲覧
  32. ^ 「Gentoo LinuxがAMD ROCmをパッケージ化し、RISC-V、LTO+PGO Pythonの開発を進展」 Phoronix.com 20221月18日閲覧
  33. ^ 「FedoraとDebianの開発者、より簡単なRadeon GPUコンピューティング体験のためにROCmのパッケージ化を検討」 Phoronix.com 20221月18日閲覧
  34. ^ Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (2015年11月15日). 「Spackパッケージマネージャー:HPCソフトウェアの混沌に秩序をもたらす」 – GitHub経由.
  35. ^ Bloor, Cordell. 「20211221 パッケージングセッションのメモと小さな更新」 . [email protected] (メーリングリスト) . 2022年1月18日閲覧
  36. ^ 「[Debian 公式パッケージ] ROCm LLVM フォークがまだ必要な理由 · Issue #2449 · ROCm-Developer-Tools/HIP」。GitHub
  37. ^ “Aomp - V 14.0-1” . GitHub . 2022年1月22日.
  38. ^ 「LLVMコンパイラインフラストラクチャ」 . GitHub . 2022年1月10日.
  39. ^ 「HSAランタイムプログラマーズリファレンスマニュアル」(PDF) HSA Foundation. 2018年5月2日. 2023年8月1日閲覧
  40. ^ 「Khronos OpenCL レジストリ - The Khronos Group Inc 。www.khronos.org
  41. ^ 「OpenCL準拠製品リスト - The Khronos Group Inc」 www.khronos.org 2022年2月3日。
  42. ^ 「図3. HIPCCコンパイルプロセスの図。clangコンパイラ」
  43. ^ 「AMD、CUDA からの移行を支援する最新の取り組みとしてオープンソースの「GPUFORT」を公開」
  44. ^ Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (2021年5月). ROCm ライブラリサポート&プロファイリングツール(PDF) . AMD.
  45. ^ Cherney, Max A.; Cherney, Max A. (2024年3月26日). 「独占記事:ソフトウェアを標的にNvidiaのAI支配を打ち破る陰謀の背後」ロイター. 2024年4月5日閲覧