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 やディープラーニングフレームワークと相互変換でき、シミュレーションをトレーニングループに簡単に組み込めます。

典型的なワークフロー

  1. PyPI から warp-lang パッケージをインストールします(CUDA-12 用の nightly wheel も利用可能)。wheel には、最新の NVIDIA GPU 用に事前コンパイルされた CUDA カーネルが含まれています。
  2. @wp.kernel デコレータを使用してカーネルを記述し、Warp の型付き配列(wp.array[wp.vec3] など)を使用します。
  3. wp.launch(kernel, dim=…, inputs=[…]) でカーネルを起動します。
  4. 結果を 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 から直接取得したものであり、外部の仮定は追加されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト