NVIDIA/warp
A Python framework for GPU-accelerated simulation, robotics, and machine learning.
NVIDIA Warp – GPU アクセラレーションによるシミュレーションと微分可能な物理のための Python
概要 – Warp は、通常の Python 関数を記述し、それを高速な GPU(または CPU)カーネルに JIT コンパイルできる Python ライブラリです。パーティクルダイナミクス、流体流れ、有限要素解析、ジオメトリ処理などの高性能シミュレーションタスクを対象としており、カーネルは微分可能であるため、PyTorch、JAX、Paddle のパイプラインに組み込むことができます。
主要なアイデア
- カーネルデコレータ –
@wp.kernelは関数を GPU カーネルとしてマークします。内部では、Warp の配列と数学プリミティブ(wp.array、wp.vec3、wp.tid()、wp.length_sqなど)を使用します。 - 自動 JIT – 起動時に Warp はカーネルを CUDA(または CPU)コードにコンパイルし、スレッドインデックスとメモリレイアウトを処理します。
- 微分可能 – 勾配は Warp カーネルを通過し、物理シミュレーションのエンドツーエンド学習を可能にします。
- 相互運用性 – Warp テンソルは NumPy やディープラーニングフレームワークと相互変換でき、シミュレーションをトレーニングループに簡単に組み込めます。
典型的なワークフロー
- PyPI から
warp-langパッケージをインストールします(CUDA-12 用の nightly wheel も利用可能)。wheel には、最新の NVIDIA GPU 用に事前コンパイルされた CUDA カーネルが含まれています。 @wp.kernelデコレータを使用してカーネルを記述し、Warp の型付き配列(wp.array[wp.vec3]など)を使用します。wp.launch(kernel, dim=…, inputs=[…])でカーネルを起動します。- 結果を NumPy(
.numpy())に変換するか、PyTorch モデルに直接フィードします。
重要性
- 速度 – ネイティブ CUDA カーネルにコンパイルすることで、Warp は数百万のパーティクルをシミュレートしたり、PDE を純粋な Python や NumPy よりも桁違いに高速に解くことができます。
- 微分可能なシミュレーション – 研究者は、カスタム CUDA 勾配コードを書くことなく、物理を制御または学習するニューラルネットワーク(例:ロボット制御、流体認識)をトレーニングできます。
- 広範なドメインカバレッジ – ライブラリには、重力、SPH 流体、ナビエ・ストークス方程式、FEM、レイマーチング、メッシュ処理などのプリミティブと、すぐに実行できる多数の例が含まれています。
はじめに
pip install warp-lang # コアライブラリ
pip install warp-lang[examples] # オプションの例の依存関係
次に、README の 20 行の重力デモを試すか、NVIDIA Accelerated Computing Hub からリンクされている多くのノートブックを探索してください。
詳細情報
- 公式ドキュメント:https://nvidia.github.io/warp/stable/
- GTC および SIGGRAPH の講演(README のリンク)では、微分可能なシミュレーションの構築方法を説明しています。
warp/examplesディレクトリには、パーティクルシステムから FEM 形状最適化までの既製デモが含まれています。
コミュニティ – Apache 2.0 の下でオープンソースです。問題、機能リクエスト、プルリクエストは GitHub リポジトリで歓迎されており、GitHub 以外の問い合わせ用に専用の電子メールアドレス(warp-python@nvidia.com)が提供されています。
上記の詳細はすべてリポジトリの README から直接取得したものであり、外部の仮定は追加されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト