11 ポイント 投稿者 xguru 2024-07-15 | 1件のコメント | WhatsAppで共有
  • C++で手軽に汎用GPUコンピューティングを可能にする軽量ライブラリ
  • WebGPU仕様を利用して低レベルのGPUインターフェースを提供することで、さまざまなGPUで動作可能なコードを書けるようにする
  • つまり、C++プロジェクトにGPUコードを組み込み、Nvidia、Intel、AMD などのGPUで実行できるようになり、Vulkan、Metal、DirectXをサポートする大半のハードウェアで同じC++コードによるGPU活用が可能になる

技術的目標: 軽量化、高速な開発反復、少ないボイラープレートコード

  • 最小限のAPIでGPUコンピューティングに必要な全範囲を扱うことを目標とする
  • プロジェクトのビルドがほぼ即座に行われ、コンパイル/実行サイクルが5秒未満になることを目指す
  • 標準C++コンパイラ以外の依存関係やツーリングの負担を最小化
  • 小さなAPI表面積と最小限のボイラープレートコードを志向し、抽象化レイヤーを最小限に抑えて gpu.cpp ライブラリと WebGPU API の対応関係が明確になるように実装
  • Google の Dawn WebGPU 実装の pre-built バイナリを提供することでコンパイル時間を短縮
    • 現時点では Dawn バックエンドのみをサポートするが、今後は他の WebGPU 実装もサポート予定

gpu.cppの対象ユーザー

  • 個人向けコンピューティング機器で高い移植性を持つGPUコンピューティングが必要なプロジェクトが主な対象
  • GPUアルゴリズム開発、ニューラルネットワークモデルの直接実装、物理シミュレーション、マルチモーダルアプリケーション、オフライングラフィックスレンダリング、機械学習推論エンジンなどに活用可能
  • 個人向け機器での広範なGPUコンピューティングをより簡単にすることが目標
  • 細かなデータ移動とGPUコード制御を直接行えるようにする

gpu.cppではないもの

  • 高水準の数値計算や機械学習フレームワーク、推論エンジンではない(そのような実装を支えるために使うことはできる)
  • WebGPU は Web ブラウザだけでなくネイティブ実装もある点が重要("WebGPU is Not Just About the Web")
  • レンダリング/グラフィックスよりも汎用GPUコンピューティングに重点を置いている

制限事項と今後の計画

  • API 改善: ユースケースを通じて API デザインを発展させていく予定
  • ブラウザターゲットをサポート予定
  • 再利用可能なカーネルとシェーダーのライブラリ化
  • さらに多くの使用例とテストを追加
  • llm.c のカーネルを WebGPU で実装することが短期目標の一つ

1件のコメント

 
xguru 2024-07-15

プロジェクトの紹介については、gpu.cpp: portable GPU compute for C++ with WebGPU のほうがもう少し詳しいです。