beehive-lab/TornadoVM
Write Java. Run on GPUs. Fast.
解決する課題
TornadoVM を使用すると、Java 開発者はネイティブの C/C++ や CUDA コードを書くことなく、計算負荷の高いタスクを GPU やマルチコア CPU 上で実行できます。JNI バインディングやネイティブツールチェーンを管理する複雑さが解消され、ハイパフォーマンスコンピューティング (HPC) や AI ワークロードを JVM から直接実行できるようになります。
仕組み
Java バイトコードを、実行時に NVIDIA CUDA、OpenCL C、Apple Metal (MSL) などのターゲット固有の言語に JIT コンパイルします。3 つのレベルの API 制御を提供します。
- Loop Parallel API:
@Parallelアノテーションを使用して、スレッドマッピングを自動的に推論します。 - KernelContext API: CUDA/OpenCL に似た明示的なスレッドインデックスを提供し、きめ細かな制御を可能にします。
- TileContext API: スレッドではなくタイル単位でプログラミングできる特殊な CUDA パスで、タイルコンパイラを利用して Tensor Core 命令を最適化します。
NVIDIA ハードウェア上では、NVIDIA ライブラリエコシステム (cuBLAS, cuFFT, cuDNN, cuDF) と直接統合され、Tensor Core の mma.sync 組み込み関数を公開することで、これらのネイティブ呼び出しが単一の TaskGraph 内でデバイスバッファを共有できるようにします。
対象ユーザー
機械学習、ディープラーニング、コンピュータビジョン、物理シミュレーション、金融アプリケーションなどを、GPU (NVIDIA, AMD, Intel, Apple Silicon) やマルチコア CPU を使用して高速化する必要がある Java 開発者。
ハイライト
- マルチバックエンドサポート: NVIDIA (CUDA)、AMD、Intel、Apple Silicon (Metal) GPU で動作します。
- ネイティブ NVIDIA 統合: JNI バインディングなしで cuBLAS, cuFFT, cuDNN, cuDF に直接アクセス可能。
- Tensor Core アクセス: TileContext API を介して
mma.sync命令とタイルプログラミングを公開。 - CUDA Graph サポート: 実行計画を単一の CUDA Graph として記録・再生し、起動オーバーヘッドを削減。
- JVM 互換性: JVM を置き換えることなく、既存の OpenJDK や GraalVM インストールにプラグイン可能。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch