MI300X GPU 共シミュレーション(cosim-gpu)

Library

概要

QEMU + gem5 MI300X Co-simulation(cosim-gpu)は、AMD の MI300X を模したサイクル精度の GPU モデル(gem5)と、実際のホスト環境をエミュレーションする QEMU(KVM を利用)を組み合わせて、ROCm/HIP ベースのソフトウェアを物理 GPU なしで動作・検証できる共シミュレーション基盤です。gem5 を Docker コンテナで動かし、QEMU 側でゲスト Linux を立ち上げることで、実際に近い環境での動作確認やアーキテクチャ研究、ドライバ検証、パフォーマンス解析を行えます。セットアップや起動はシェルスクリプト等で自動化されており、研究用途での再現性を重視しています(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 1
  • ウォッチャー数: 6
  • コミット数: 18
  • ファイル数: 11
  • メインの言語: Shell

主な特徴

  • QEMU(Q35 + KVM)と gem5(MI300X サイクル精度モデル)を組み合わせた共シミュレーション。
  • 実際の ROCm/HIP ワークロードを、物理ハードウェアなしで実行・検証可能。
  • gem5 は Docker コンテナで提供され、環境の再現性と配布を簡素化。
  • シェルスクリプト中心のオーケストレーションで起動・停止・構成を自動化。

技術的なポイント

cosim-gpu は「機能的なソフトウェアスタック(Linux + ROCm/HIP)」と「サイクル精度の GPU モデル」を分離して、それらを協調して動かすことで実機に近い検証を行う点が肝要です。典型的な実装では、QEMU はゲスト側(ホスト CPU、OS、ドライバ、ユーザ空間のアプリケーション)を実行し、GPU に対する I/O(PCIe トランザクション、コマンドバッファ、メモリアクセス要求など)をキャプチャして gem5 側へ中継します。gem5 はこれらを受け取り、サイクル精度で処理することで、アクセラレータの内部振る舞い(シェーダーステージ、メモリ階層、キャッシュ、DRAM 振る舞いなど)を再現します。

この種の共シミュレーションで特に難しいのは「時間同期」と「メモリ一貫性/アドレス空間の整合性」です。QEMU のような比較的高速な系と、gem5 のような遅いサイクル精度モデルを同期させるには、イベント駆動やバースト転送のバッファリング、擬似的なタイムスライス制御が必要です。また、GPU が DMA を用いてホストメモリにアクセスする際の IOMMU マッピングやページフォルト処理、キャッシュの見え方(キャッシュコヒーレンシ)をどう扱うかが検証の正確性に直結します。cosim-gpu はこれらの課題を踏まえ、QEMU 側で発生した GPU 向けトラフィックを gem5 に橋渡しし、gem5 が処理した結果(メモリ応答、割り込みなど)を QEMU に返す双方向のインターフェイスを作ることで両者を結合していると考えられます。

実運用面では、gem5 を Docker に入れて配布することで依存関係やビルドの差異を吸収し、研究者が同一のモデルで実験できるメリットがあります。一方で、サイクル精度のモデルは非常に遅く、スケーラビリティや長期実行ワークロードの扱いには向かないため、トレードオフとして「高速だが精度の低いモード」と「低速だが精度の高いモード」を切り替える設計や、ホットパスの抽出と部分的な高速化(例えば機能的エミュレーションで先読みする)が運用上の鍵になります。加えて、実際の ROCm ドライバや HIP バイナリがそのまま動くことを目指すため、ABI やレジスタ操作、コマンドストリームの互換性確認も重要です。

最後に、テスト・デバッグ面では、ログの相関付け(QEMU 側イベントと gem5 側イベントのタイムスタンプの突合)が重要で、これを支援するためのログフォーマットやトレース出力、チェックポイント機能があると研究効率が大きく向上します。cosim-gpu はこれらの点を意識した設計で、ハードウェア不在でもGPU周りの挙動を深く解析できる基盤を提供します(約700–900字程度の技術解説)。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • .gitmodules: file
  • CLAUDE.md: file
  • LICENSE: file
  • README.md: file

…他 6 ファイル

(補足)README を起点に、セットアップ用シェルスクリプト、gem5 起動用の Dockerfile/設定、QEMU の起動オプションスクリプト、サンプルワークロードや検証用の小さなユーティリティが含まれている想定です。また .gitmodules があるため、gem5 モデルや追加ツールはサブモジュールで管理されている可能性があります。

まとめ

物理GPUなしでMI300X相当の挙動を検証できる、研究向けの実用的な共シミュレーション基盤。

リポジトリ情報:

READMEの抜粋:

QEMU + gem5 MI300X Co-simulation

中文文档

Co-simulation framework that pairs QEMU (host CPU/system via KVM) with gem5 (cycle-accurate MI300X GPU model) to run real AMD ROCm/HIP workloads on a simulated GPU without physical hardware.

+-----------------------------+       +----------------------------+
|  QEMU  (Q35 + KVM)          |       |  gem5  (Docker)            |
|  +-----------------------+  |       |  +----------------------+  |
|  | Guest Linux           |  |...