mitsuba-renderer/drjit
Dr.Jit — A Just-In-Time-Compiler for Differentiable Rendering
何を解決するか
Dr.Jit は、通常の機械学習フレームワーク(PyTorch や JAX など)がコンパイル中にクラッシュまたはタイムアウトを起こすことがよくある、数百万もの単純な算術ノードを含む巨大で複雑な計算グラフを処理する課題に対処します。特に、微分可能レンダリングやその他の「明らかに並列化可能な」計算に特化しています。
動作方法
Dr.Jit は、算術演算を即時実行するのではなく、計算グラフに記録する JIT(Just-In-Time)コンパイラとして機能します。その後、これらのグラフを GPU(CUDA や Metal を通じて)または CPU(AVX512 や NEON を使用した LLVM を通じて)向けの高効率な融合カーネルにコンパイルします。さらに、前向きモードと後向きモードの両方を用いた自動微分(AD)をサポートし、専用の導関数評価コードを生成します。
対象ユーザー
微分可能レンダリング、高性能数値計算、および従来の ML バックエンドの能力を超える巨大で複雑な計算グラフ上で自動微分を実行したい研究者や開発者を対象としています。
特徴
- マルチバックエンド対応:CUDA、Metal、CPU(AVX512/NEON)をサポート。
- ハイブリッド言語サポート:C++17 および Python からアクセス可能で、両方の言語間でトレースと微分を統合できます。
- 自動微分:前向きモードと後向きモードの両方をサポート。
- 数学ライブラリ:ベクトル、行列、複素数、四元数、超越関数を内蔵サポート。
関連
- プロジェクト
m4rs-mt/ILGPU.NETベースの言語で書かれた高性能GPUプログラム用のJITコンパイラで、C#開発者がネイティブ依存関係なしにCUDAに類似したパフォーマンスのコードを書けるようにします。
- プロジェクト
Jittor/jittorJittor は、計算グラフ全体を JIT コンパイルし、メタ演算子を使って特定のモデルに最適化された CUDA/C++ カーネルを生成する高性能ディープラーニングフレームワークです。PyTorch に似た Python API を提供し、CPU および GPU バックエンド(CUDA、ROCm、Hygon)をサポートしており、ビジョン、レンダリング、幾何学的学習、強化学習向けのモデルズーも備えています。
- プロジェクト
brainpy/BrainPy計算神経科学および脳型計算のためのJITコンパイルフレームワークであり、脳力学モデルの効率的なシミュレーション、トレーニング、および分析を可能にします。
- プロジェクト
NVIDIA/warpNVIDIA Warp は、注釈付き関数を高速な CUDA/CPU カーネルに JIT コンパイルする Python ライブラリで、物理シミュレーションとジオメトリ処理を対象としています。そのカーネルは微分可能であるため、PyTorch、JAX などで使用でき、シミュレーションのエンドツーエンド学習を可能にします。`pip install warp-lang` でインストールし、`@wp.kernel` でカーネルを記述し、`wp.launch` で起動し、結果を NumPy またはテンソルに変換します。リポジトリには多くの例(パーティクル、流体、FEM、レイマーチング)が含まれ、ディープラーニングフレームワークと統合されています。
- プロジェクト
jax-ml/jaxアクセラレータ指向の配列計算およびプログラム変換を目的とした Python ライブラリ。高性能な数値計算および大規模機械学習に最適化されています。