| ROCm | |
|---|---|
| 開発者 | AMD |
| 初回リリース | 2016年11月14日 ( 2016年11月14日) |
| 安定版リリース | |
| リポジトリ | メタリポジトリgithub |
| 書かれた | C、C++、Python、Fortran、Julia |
| ミドルウェア | ヒップ |
| エンジン | AMDgpuカーネルドライバ、HIPCC、LLVMベースのコンパイラ |
| オペレーティング·システム | Linux、Windows [ 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は、 HIP(GPUカーネルベース・プログラミング)、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 ]
プログラミング能力
このセクションは拡張が必要です。不足している情報を追加していただければ幸いです。 (2022年1月) |
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世代 | RDNA | RDNA 2 | RDNA 3 | RDNA 4 |
| タイプ | 統合シェーダーモデル | ||||||||
| ROCm | 5.xでは環境変数が必要[ 16 ] | 6.xで削除された[ 17 ] | |||||||
| オープンCL | 1.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 | ||||
| オープンGL | 4.6 (Linux の場合: 4.6 (Mesa 3D 20.0)) | ||||||||
| ダイレクト3D | 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[ b ] | 実験的[ 21 ] | ||||||||
- ^ rocBLASにおけるNavi 1.xのサポートはバージョン6.1まで機能しませんでした。バージョン5.3より前では、環境変数を使用してこれらのGPUで一部の機能を実行するためにgfx1030コードを強制的に使用できましたが、バージョン5.3ではgfx1010 GPUでgfx1030コードが動作しなくなりました。 [ 18 ] [ 19 ]
- ^ 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 ] Debian、Fedora 、[ 33 ] GNU Guix、NixOS。
コンポーネント
このセクションは拡張が必要です。不足している情報を追加していただければ幸いです。 (2022年1月) |
カーネル空間コンポーネントは 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 ]
HIP –移植性のための異種インターフェース
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
rocBLASとhipBLASは高水準ライブラリの中核を成すもので、AMDによる基本線形代数サブプログラムの実装です。Tensileライブラリを非公開で使用しています。
rocSOLVER / hipSOLVER
このライブラリのペアは、 ROCm のLAPACK実装を構成し、rocBLAS と密接に結合されています。
ユーティリティ
- ROCm 開発者ツール: デバッグ、トレーサー、プロファイラー、システム管理インターフェース、検証スイート、クラスター管理。
- GPUOpen ツール: GPU アナライザー、メモリ ビジュアライザー...
- 外部ツール: radeontop ( TUI概要)
競合他社との比較
ROCm は、Nvidia CUDAやIntel OneAPIなどの他の GPU コンピューティング スタックと競合します。
エヌビディアCUDA
NvidiaのCUDAはクローズドソースですが、AMD ROCmはオープンソースです。クローズドソースのCUDAをベースに構築されたオープンソースソフトウェア、例えばRAPIDSが存在します。
CUDA はコンシューマー向け GPU で実行できますが、ROCm のサポートは主に AMD InstinctやAMD 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のソフトウェア配信チャネル
参考文献
- ^ 「ROCm 7.1.0リリース」 . GitHub . 2025年10月30日閲覧。
- ^ 「新しいHIP SDKがGPUコンピューティングの民主化に貢献」 2023年7月27日。
- ^ 「Debian -- busterのパッケージfirmware-amd-graphicsの詳細」 . Packages.debian.org . 2022年1月18日閲覧。
- ^ 「質問:ROCmは何の略ですか? · Issue #1628 · RadeonOpenCompute/ROCm」 . Github.com . 2022年1月18日閲覧。
- ^ 「AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 リリース、Boltzmann が実現」 . anandtech.com . 2016年11月14日時点のオリジナルよりアーカイブ。 2022年1月19日閲覧。
- ^ 「AMD @ SC15: Boltzmann Initiative 発表 - AMD GPU向けC++およびCUDAコンパイラ」 . anandtech.com . 2015年11月17日時点のオリジナルよりアーカイブ。2022年1月19日閲覧。
- ^ 「HSAプログラマーズ・リファレンス・マニュアル:HSAIL仮想ISAおよびプログラミングモデル、コンパイラ・ライター、オブジェクト・フォーマット(BRIG)」(PDF) HSA Foundation. 2018年5月2日. 2023年8月1日閲覧。
- ^ 「AMDGPUバックエンドのユーザーガイド — LLVM 13ドキュメント」 . Llvm.org . 2022年1月18日閲覧。
- ^ a b「LLVMコンパイラインフラストラクチャ」 . GitHub . 2022年1月19日.
- ^ 「AMD GPUハードウェアの紹介」 2020年6月12日 – www.youtube.com経由。
- ^ 「HIPプログラミングの基礎」 。2023年2月7日時点のオリジナルよりアーカイブ。
- ^ 「ROCm™ラーニングセンター」。AMD 。
- ^ 「AMD ROCm / HCCプログラミング:概要」。2018年12月26日。
- ^ “ROCm スタートガイド v5.2.3” . 2022年10月2日時点のオリジナルよりアーカイブ。
- ^ 「これは普段見かけるものではない。6800M(6700XT)ラップトップ上のROCm上でPyTorchが動作している!細かい設定の調整とパッチをいくつか施したが、実際に機能的に動作するようになった。すごい!」 2021年12月10日。
- ^ 「HOW-TO: AMD GPUでの安定した拡散」 2022年9月23日
。ROC_ENABLE_PRE_VEGA
- ^ 「変更ログ — 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 リリース サイクルに従って継続されます。
- ^ 「PSA: RDNA1 (gfx1010/gfx101*) GPU は公式パッケージでまもなく動作を開始するはずです。うまくいけば ROCm 6.1 でも動作するはずです」。www.reddit.com 。
- ^ 「5700 Xt サポートに関する更新はありますか?」。GitHub。–
- ^ 「AMD Radeon RX 6800 XTの仕様」 TechPowerUp . 2021年1月1日閲覧。
- ^ Larabel, Michael (2016年12月7日). 「Linux 4.9カーネルの優れた機能」 . Phoronix . 2016年12月7日閲覧。
- ^ 「AMD、ディープラーニングアクセラレーターInstinct MI200シリーズGPUを発表」 Infoq.com 2022年1月18日閲覧。
- ^ 「AMD GPU で CuPy を使用する (実験的)」。
- ^ 「GPU戦争の勃発を受け、AMDが世界トップ500スーパーコンピューターでIntelを追い抜く」 2020年11月16日。
- ^ 「El Capitanスーパーコンピュータの詳細:AMDのCPUとGPUが2エクサフロップスの計算能力を実現」 。2021年5月4日時点のオリジナルよりアーカイブ。
- ^ 「リバモアのエルキャピタンスーパーコンピューター、HPE「Rabbit」ニアノードローカルストレージを発表」。2021年2月18日。
- ^ 「Blender 3.0はAMD GPUのサポートを次のレベルに引き上げます。ベータサポートが利用可能になりました!」 Gpuopen.com 2021年11月15日. 2022年1月18日閲覧。
- ^ “AMD ROCm ⋅ JuliaGPU” . juliagpu.org . 2020年6月13日時点のオリジナルよりアーカイブ。2022年1月23日閲覧。
- ^ 「ROCm インストール v4.3 — ROCm 4.5.0 ドキュメント」 . Rocmdocs.amd.com . 2022年1月18日閲覧。
- ^ 「AMD Instinctアクセラレータでの科学アプリケーションの実行がさらに簡単になりました」 HPCwire.com 2021年10月18日. 2022年1月25日閲覧。
- ^ "ROCm for Arch Linux" . Github.com . 2022年1月17日. 2022年1月18日閲覧。
- ^ 「Gentoo LinuxがAMD ROCmをパッケージ化し、RISC-V、LTO+PGO Pythonの開発を進展」 Phoronix.com 2022年1月18日閲覧。
- ^ 「FedoraとDebianの開発者、より簡単なRadeon GPUコンピューティング体験のためにROCmのパッケージ化を検討」 Phoronix.com 2022年1月18日閲覧。
- ^ Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (2015年11月15日). 「Spackパッケージマネージャー:HPCソフトウェアの混沌に秩序をもたらす」 – GitHub経由.
- ^ Bloor, Cordell. 「20211221 パッケージングセッションのメモと小さな更新」 . [email protected] (メーリングリスト) . 2022年1月18日閲覧。
- ^ 「[Debian 公式パッケージ] ROCm LLVM フォークがまだ必要な理由 · Issue #2449 · ROCm-Developer-Tools/HIP」。GitHub 。
- ^ “Aomp - V 14.0-1” . GitHub . 2022年1月22日.
- ^ 「LLVMコンパイラインフラストラクチャ」 . GitHub . 2022年1月10日.
- ^ 「HSAランタイムプログラマーズリファレンスマニュアル」(PDF) HSA Foundation. 2018年5月2日. 2023年8月1日閲覧。
- ^ 「Khronos OpenCL レジストリ - The Khronos Group Inc 」。www.khronos.org 。
- ^ 「OpenCL準拠製品リスト - The Khronos Group Inc」 www.khronos.org 2022年2月3日。
- ^ 「図3. HIPCCコンパイルプロセスの図。clangコンパイラ」。
- ^ 「AMD、CUDA からの移行を支援する最新の取り組みとしてオープンソースの「GPUFORT」を公開」。
- ^ Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (2021年5月). ROCm ライブラリサポート&プロファイリングツール(PDF) . AMD.
- ^ Cherney, Max A.; Cherney, Max A. (2024年3月26日). 「独占記事:ソフトウェアを標的にNvidiaのAI支配を打ち破る陰謀の背後」ロイター. 2024年4月5日閲覧。
外部リンク
- 「ROCm公式ドキュメント」 AMD 2022年2月10日
- 「ROCmラーニングセンター」 AMD 2022年1月25日
- 「githubスーパープロジェクトにおけるROCm公式ドキュメント」 AMD 2022年1月25日
- 「ROCm公式ドキュメント - 5.0以前」 AMD 2022年1月19日
- 「AMD InstinctアクセラレーターとAMD ROCmソフトウェアによるGPUアクセラレーションアプリケーション」(PDF)。AMD 。 2022年1月25日。
- 「AMD Infinity Hub」。AMD 。 2022年1月25日。—科学アプリケーション用のDocker コンテナ。