EnzymeAD/Reactant.jl

Optimize Julia Functions With MLIR and XLA for High-Performance Execution on CPU, GPU, TPU and more.

何を解決するか

Reactantは、CPU、GPU、TPUでの高性能実行のためのJulia関数のコンパイルプロセスを簡素化します。手動での最適化や複雑なデバイス固有のコード(例:CUDA.jl)の必要性を排除し、JuliaコードをXLAを介してハードウェアアクセラレータ上で最適化・実行可能な形式に自動的に変換します。

動作方法

Reactantはトレーシングシステムを使用してJulia関数の実行をキャプチャします。関数をMLIR(Multi-Level Intermediate Representation)に変換し、EnzymeMLIRを用いた自動微分を含む最適化を適用します。

その中心には、2つの配列型があります:ConcreteRArray(デバイス上の実際のデータバッファ)とTracedRArray(コンパイル中に実際の値を知らずにデータを表現するために使用)。@compileマクロを使用して関数をコンパイルすると、Reactantは初期実行の制御フローのパターンをキャプチャし、型の不安定性を除去して、ターゲットデバイス用の静的実行可能ファイルを作成します。

対象ユーザー

GPU/TPUでの高性能なJuliaコード実行を、最小限の努力で実現したい開発者や研究者。特に機械学習や科学計算において自動微分が必要なユーザーに最適です。

特徴

  • ハードウェア非依存:XLAを介してCPU、GPU、TPUでの実行をサポート。
  • 自動微分:EnzymeMLIRを統合し、高性能な勾配計算を実現。
  • 依存なしGPU実行:CUDA.jlへの直接的な依存なしにGPU実行が可能。
  • 再帰的データ構造対応:複雑な再帰的データ構造や共有オブジェクトをRArrayに変換可能。

関連

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