OpenFPM 実験的 Metal バックエンド:CUDA プログラムを Apple Silicon で動かす
オープンソース科学計算フレームワーク OpenFPM に新設された Metal バックエンド PR。Clang/HIP→SPIR-V→Vulkan→MoltenVK の変換パスで、元の CUDA カーネルをほぼ無修正のまま M3 Pro 上で動かし、3D SPH の実測で約10倍の高速化を達成しました。


OpenFPM 実験的 Metal バックエンド:CUDA プログラムを Apple Silicon で動かす
オープンソース科学計算フレームワーク OpenFPM に新設された Metal バックエンド PR。Clang/HIP→SPIR-V→Vulkan→MoltenVK の変換パスで、元の CUDA カーネルをほぼ無修正のまま M3 Pro 上で動かし、3D SPH の実測で約10倍の高速化を達成しました。
NVIDIA の CUDA 向けに書かれた計算プログラムが、カーネルコードをほとんど変更しないまま、M3 Pro を搭載した Apple 製デバイス上で動いてしまいました。しかもベクトルの加減算のようなおもちゃのデモではなく、実際の3次元流体シミュレーションのタスクで約10倍の高速化を達成しています。
これを実現したのは、オープンソース科学計算フレームワーク OpenFPM に新設された「実験的 Metal バックエンド」の PR です。先に厳しい話を言っておきます:
⚠️ 正直に説明すべき3つの限界:
- これはまだマージされていないオープンな PR です(GitHub PR #18、作者 abhinavsns、2026-07-17 オープン)。執筆時点でまだマージされておらず実験的なもので、本番環境に直接使わないでください。
- Apple Metal は倍精度浮動小数点のサポートが不十分で、天気予測や航空宇宙といった倍精度に依存するスーパーコンピューティングのシーンには向きません。そうした仕事は依然として NVIDIA のプロ向け GPU の本領です。
- 現時点では単一マシン向けバックエンドです。マルチノード拡張は Thunderbolt RDMA に頼る予定で、将来の作業です。
ネットで流布している「GPT-5.6 Sol が6時間で仕上げた」という言説について——これは作者が X 上で語った自己申告にすぎず、GitHub PR 自体には AI アシスタントに関する説明は一切ありません。本稿ではこれを事実として書かず、同様の宣伝を目にしても各自で割り引いて読んでください。
これは何か
OpenFPM は粒子法とグリッド法向けの並列科学計算フレームワークで、公式リポジトリは mosaic-group/openfpm、プロジェクトページは openfpm.mpi-cbg.de です。
過去10余年、GPU コンピューティングは高度に断片化してきました。NVIDIA には CUDA、AMD には HIP、Apple には Metal があり、互いに非互換です。この PR の核心的な貢献は「Metal 版をもう一つ書く」ことではなく、元の CUDA/HIP スタイルの .cu カーネルソースを変更しないまま("source of truth")、下層で透過的に Apple Silicon GPU 上で動かす変換パスを築いたことです。
変換パイプライン
PR のタイトルは "Add transparent Metal GPU support through MoltenVK and SPIR-V while keeping existing .cu files as the source of truth" で、まさにパイプラインを言い当てています:
.cu カーネル(CUDA/HIP スタイル)
│ Clang/HIP でコンパイル
▼
SPIR-V
│ Vulkan
▼
MoltenVK
│
▼
Apple Metal GPU鍵となるのはアプリケーション層がそれを感知しないことです。開発者は Metal 専用の粒子 API を一切追加していません。アプリケーション層は従来どおり CUDA/HIP スタイルのカーネル呼び出しを書き、ハードウェアの差異はフレームワークの内部で消化されます。真の「ハードウェア透過」が実現されています。
実測ベンチマーク:3D SPH ダム崩壊シミュレーション
PR 内の試験用ケースは、複雑さが十分な3次元 SPH(平滑化粒子流体力学)のダム崩壊シミュレーションで、スキャン、ソートと再配置、セルおよび近傍リストの構築、ゴースト粒子の交換、リダクション操作、アトミック操作など複数のモジュールが関わります。
M3 Pro を搭載した Apple 製デバイス上では:
| バックエンド | 所要時間 | 備考 |
|---|---|---|
| Metal GPU | 約6秒 | GPU 使用率はほぼ100% |
| CPU の逐次計算 | 約60秒 | ベースライン |
加速比は約10倍。計算バックエンドを入れ替えただけで達成しています。開発者がさらに検査したところ、Metal 版と CPU 版で得られる物理結果は一致していました。科学計算ではこの点が極めて重要で、速いだけで正確でなければ意味がありません。
計算量の限界
粒子ストレージは粒子数 N に対して線形に増加し、近傍探索などの作業量はおおむね O(N·k) です。現在示されている10倍の高速化は、単一マシンのバックエンド同士を比較した結果です。
将来の計画は、Apple の Thunderbolt が対応する RDMA 技術を利用したマルチノードの動的負荷分散ですが、この部分はまだ実装コードがなく、ロードマップ上の項目です。
誰に向くか、向かないか
試してみる価値がある人:
- Mac 上で科学計算/物理シミュレーションをしている研究者で、Apple Silicon GPU で高速化したい人
- CUDA/HIP のコードベースを保守しており、カーネルを書き直さずに macOS へクロスプラットフォーム化したいチーム
- GPU クロスプラットフォームのコンパイルパス(SPIR-V/MoltenVK)を注目している開発者
向いていない人:
- 倍精度浮動小数点が必要な気象、航空宇宙、スーパーコンピューティングのシーン。Apple Metal では支えきれません
- 安定した本番環境が必要な人。これは未マージの PR で、API はまだ変わります
- マルチノード分散 HPC。現時点では単一マシン向けバックエンドです
試し方
記事を読むより PR を直接見る方が確実で、作者は PR 説明の中に再現手順を貼っています:
- PR: https://github.com/mosaic-group/openfpm/pull/18
- 作者の X 投稿(デモ動画あり):https://x.com/Abhinavsns/status/2079774018748694696
動かすと決めた場合は main ではなく PR ブランチを使い、「実験的なコードはいつ変わってもおかしくない」という心構えを持ってください。動いたら、まず小規模な SPH や粒子問題で物理結果の一致性を検証してから規模を拡大するのがおすすめです。PR 作者がそうしたように、まず Metal と CPU の結果が一致することを確認してから、高速比の話をしましょう。
この路線の意義
この PR が最終的にマージされれば、科学計算分野における Apple Silicon の立ち位置は実質的な前進を得ます。開発者は既存の CUDA/HIP への投資を無駄にせずに済み、同時に Mac 上の Metal GPU の計算力を手に入れられます。
とはいえ、冒頭のあの3つの限界——実験的、単精度、単一マシン——も忘れないでください。これを明日から本番投入できるソリューションではなく、可能性を追いかけるべき有望な方向として見るのが妥当です。