| 開発者 | アム |
|---|---|
| 初回リリース | 2016年11月14日 |
| 安定リリース | 6.1.2 / 2024年6月4日[1] |
| リポジトリ | メタリポジトリ github.com/ROCm/ROCm |
| 書かれた | 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 [3]は、グラフィックス処理装置(GPU)プログラミング用のAdvanced Micro Devices(AMD)ソフトウェアスタックです。ROCmは、グラフィックス処理装置(GPGPU)上の汎用コンピューティング、高性能コンピューティング(HPC)、異種コンピューティングなど、複数のドメインにわたります。ROCmは、HIP( GPUカーネルベースのプログラミング)、OpenMP(ディレクティブベースのプログラミング)、OpenCLなどの複数のプログラミングモデルを提供します。
ROCmは無料、自由、オープンソースソフトウェア(GPUファームウェアブロブ[4]を除く)であり、さまざまなライセンスの下で配布されています。ROCmは当初Radeon Open Computeプラットフォームの略でしたが、Open Computeが登録商標であるため、ROCmはもはや頭字語ではなく、単にGPUコンピューティング用に設計されたAMDのオープンソーススタックです。
背景
ATI /AMDの最初の GPGPU ソフトウェア スタックはClose to Metalで、これがStream になりました。
ROCmは2016年頃にボルツマン・イニシアティブ[5]とともに立ち上げられました。[6] ROCmスタックは以前のAMD GPUスタックを基盤としており、一部のツールはGPUOpenに遡り、その他のツールは異種システムアーキテクチャ(HSA)に遡ります。
異機種システムアーキテクチャ中間言語
HSAIL [7]は、適切なファイナライザを使用して最終的なハードウェア (GPU、FPGA...) に JIT コンパイルできる、ハードウェアに依存しない中間レベルの中間表現を生成することを目的としていました。このアプローチは ROCm では廃止されました。現在は、LLVMとそのアップストリームであるAMDGPU バックエンドを使用して GPU コードのみをビルドしますが、[8] LLVM MLIR を使用したこのような拡張モジュール性に関する研究はまだ行われています。[9]
プログラミング能力
ROCmのスタックは、カーネルドライバからエンドユーザーアプリケーションまで多岐にわたります。AMDは、学習ポータル[12]を通じて、AMD GCNハードウェア[10]とROCmプログラミング[11]に関する紹介ビデオを公開しています。
スタックとROCm/HIPプログラミングに関する最も優れた技術的紹介の1つは、現在でもRedditで見つけることができます。[13]
ハードウェアサポート
ROCmは主に個別のプロフェッショナルGPUを対象としていますが[14]、非公式のサポートにはVegaファミリーとRDNA 2コンシューマーGPUも含まれます。
アクセラレーテッド・プロセッサ・ユニット(APU)は「有効」ですが、公式にはサポートされていません。ROCmを機能させる必要があります。[15]
プロフェッショナルグレードのGPU
AMD Instinct アクセラレータは、プロシューマー向けRadeon Pro GPU シリーズと並んで ROCm の最高級製品であり、ほとんどの場合、全面的にサポートされています。
2022 年 1 月現在、比較的同等のサポートを持つ唯一のコンシューマー グレードの GPU は、Radeon VII (GCN 5 - Vega) です。
消費者向けGPU
- ^ DRM ( Direct Rendering Manager ) はLinux カーネルのコンポーネントです。
ソフトウェアエコシステム
学習リソース
AMD ROCmプロダクトマネージャーのテリー・ディーム氏がスタックのツアーを行った。[21]
サードパーティ統合
このスタックの主な消費者は、機械学習と高性能コンピューティング/GPGPU アプリケーションです。
機械学習
様々なディープラーニングフレームワークには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ディストリビューションは、 Arch Linux、[31] Gentoo、[32] Debian、Fedora 、[33] GNU Guix、NixOSなど、さまざまな進歩を遂げながら、ROCmを公式に(ネイティブに)パッケージ化しています。
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]
HIP – 移植性のための異種インターフェース
AMD の GPU 実装は HIPAMD と呼ばれます。主にデモンストレーション目的の CPU 実装もあります。
HIPCC(ヒップコン)
HIPは、 ClangをラップしてLLVMオープンAMDGPUバックエンドでコンパイルするか、NVIDIAコンパイラにリダイレクトする「HIPCC」コンパイラを構築します。[42]
ヒップファイ
HIPIFY はソースからソースへのコンパイル ツールです。Clang ベースのツールまたは sed のようなPerlスクリプトを使用して、CUDA を HIP に変換したり、その逆の変換を行ったりします。
GPUフォート
HIPIFYと同様に、GPUFORTはソースコードを他の第3世代言語ソースにコンパイルするツールであり、ユーザーがCUDA FortranからHIP Fortranに移行できるようにします。また、研究プロジェクトのレパートリーにも含まれています。[43]
高レベル
ROCm の高レベル ライブラリは通常、機械学習フレームワークなどのアプリケーション ソフトウェアによって直接使用されます。次のライブラリのほとんどは、GPU アーキテクチャが得意とする General Matrix Multiply (GEMM) カテゴリに属します。
これらのユーザー向けライブラリの大部分は二重形式で提供されています。Nvidiaハードウェアにルーティングできる間接層用のhipとAMD実装用のrocです。 [44]
rocBLAS / ヒップBLAS
rocBLAS と hipBLAS は高レベル ライブラリの中心であり、基本的な線形代数サブプログラムの AMD 実装です。ライブラリ Tensile を非公開で使用します。
rocSOLVER / ヒップソルバー
このライブラリのペアは、 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
ROCm と同様に、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 ソフトウェア– AMD のソフトウェア配布チャネル
参考文献
- ^ 「ROCm 6.1.2 リリース」。GitHub 。 2024年6月10日閲覧。
- ^ 「新しい HIP SDK が GPU コンピューティングの民主化に貢献」。2023 年 7 月 27 日。
- ^ 「質問:ROCmは何の略ですか? · 問題#1628 · RadeonOpenCompute/ROCm」。Github.com 。2022年1月18日閲覧。
- ^ 「Debian -- buster のパッケージfirmware-amd-graphicsの詳細」。Packages.debian.org 。 2022年1月18日閲覧。
- ^ 「AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 リリース、Boltzmann が実現」。anandtech.com。2022年1月 19 日閲覧。
- ^ 「AMD @ SC15: Boltzmann Initiative 発表 - AMD GPU 向け C++ および CUDA コンパイラ」。anandtech.com。2022年1 月 19 日閲覧。
- ^ 「HSA プログラマーズリファレンスマニュアル: HSAIL 仮想 ISA およびプログラミングモデル、コンパイラーライター、およびオブジェクトフォーマット (BRIG)」(PDF)。HSA Foundation。2018 年 5 月 2 日。2023年8 月 1 日に閲覧。
- ^ 「AMDGPUバックエンドのユーザーガイド — LLVM 13ドキュメント」Llvm.org . 2022年1月18日閲覧。
- ^ ab 「LLVMコンパイラインフラストラクチャ」。GitHub 。 2022年1月19日。
- ^ 「AMD GPU ハードウェアの紹介」 – www.youtube.com 経由。
- ^ 「HIPプログラミングの基礎」。2023年2月7日時点のオリジナルよりアーカイブ。
- ^ 「ROCm™ ラーニング センター」。AMD。
- ^ 「AMD ROCm / HCCプログラミング:概要」。2018年12月26日。
- ^ 「AMD ドキュメント - ポータル」。
- ^ 「これは毎日目にするものではない。6800M (6700XT) ラップトップ上の ROCm 上で PyTorch が動作している。細かい設定の調整とパッチをいくつか施したが、実際に機能的に動作するようになった。すごい!」。2021 年 12 月 10 日。
- ^ 「ROCm スタートガイド v5.2.3」。
- ^ 「HOW-TO: AMD GPU での安定した拡散」。2022 年 9 月 23 日。
- ^ 「5700 Xt サポートに関する更新はありますか?」。GitHub。
- ^ 「AMD Radeon RX 6800 XT 仕様」。TechPowerUp 。 2021年1月1日閲覧。
- ^ Larabel, Michael (2016 年 12 月 7 日)。「Linux 4.9 カーネルの優れた機能」。Phoronix。2016年12月 7 日閲覧。
- ^ “ROCm presentation”. HPCwire.com . 2020年7月6日. 2022年1月18日閲覧。
- ^ 「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 エクサフロップスの計算を実行」。
- ^ 「リバモアのエルキャピタンスーパーコンピューターがHPEの「ラビット」ニアノードローカルストレージを発表」2021年2月18日。
- ^ 「Blender 3.0 は AMD GPU のサポートを次のレベルに引き上げます。ベータ サポートが利用可能になりました!」Gpuopen.com 2021 年 11 月 15 日。2022年1 月 18 日閲覧。
- ^ 「AMD ROCm ⋅ JuliaGPU」. juliagpu.org .
- ^ 「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 の開発者が ROCm のパッケージ化を検討し、より簡単な Radeon GPU コンピューティング エクスペリエンスを実現」。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 パッケージングセッションのメモと小さな更新」debian-ai@lists.debian.org (メーリングリスト) . 2022年1月18日閲覧。
- ^ 「[Debian 公式パッケージ] ROCm LLVM フォークがまだ必要な理由 · 問題 #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.
- ^ 「独占:ソフトウェアを標的にして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 コンテナ。
