ドキュメント / 日本語ソースを見る ↗

Ruda — Rust 高性能計算

Rust 言語 フォーク Issue 最終コミット

English | 简体中文 | 日本語 | Deutsch | Русский

Ruda は Rust の高性能計算ライブラリです。GPU カーネル、コンパイラ、ランタイムから、数学計算、テンソル、モデルまでを網羅するソフトウェアスタックを構築しています。

Ruda は CUDA C++ のコンパイル経路を維持しつつ、PTX、HIP、独自 ISA を対象とする Rust のコンパイル・実行経路を構築しています。低レベルの制御された unsafe のカプセル化と、高レベルの Rust の型システム、所有権、借用を組み合わせ、低レベルの性能制御と高レベルのメモリ安全性を両立します。

クイックスタート

Git、Rust/Cargo、リンカーツールチェーン、NVIDIA GPU とドライバ、CUDA Toolkit が必要です。インストールの詳細は環境構築を参照してください。

公開済みクレートの利用

アプリケーションの Cargo.toml に CUDA バックエンドを追加します。

[dependencies]
ruda-driver-cuda = { version = "0.1", features = ["direct-ptx"] }

以下のサンプルはソースディレクトリから実行します。

クローン

git clone https://github.com/shuqi2077/RUDA.git
cd RUDA

GPU カーネルの実行

シェルで直接 PTX コンパイラを選択します。

# Bash
export RUDA_CUDA_COMPILER=ptx
export RUDA_PTX_VERSION=8.0
# PowerShell
$env:RUDA_CUDA_COMPILER = 'ptx'
$env:RUDA_PTX_VERSION = '8.0'

続いてサンプルをビルドして実行します。

cargo run --release --locked -p ruda-driver-cuda --features direct-ptx --example ptx-runtime

このサンプルは GPU 上で FP32 加算を実行し、PASS 行とコンパイルキャッシュのカウンタを表示します。GPU とドライバが対応する PTX バージョンを選択してください。

ruLLM によるテキスト生成

ローカルの Qwen3.5-0.8B モデルを ./models/qwen35 に配置するか、以下のパスをモデルのディレクトリに置き換えてください。モデルファイルは付属しません。モデルの準備を参照してください。

cargo run --release --locked -p ruda-llm --features nvidia-ptx --example qwen35_generate -- ./models/qwen35 "The capital of France is" 8 1

このサンプルは生成されたテキストとトークン ID を表示します。代わりに CUDA C++ / NVRTC 経路を使う場合は、いずれのサンプルも実行前に RUDA_CUDA_COMPILER を nvrtc に設定してください。

ネイティブ PyTorch バックエンドの利用

ruda-torch は単一の NVIDIA GPU 上に PyTorch デバイス ruda:0 を登録します。PyTorch、setuptools、C++20 コンパイラを用意し、上記の PTX 環境設定を使ってリポジトリのルートで次を実行してください。Windows では x64 MSVC 開発者シェルを使用します。

cargo build --locked -p ruda-torch-native
python -m pip install --no-build-isolation --no-deps -e ./ruda-torch/python

既定のローダーはこの debug ビルドを自動検出します。release ビルドや別の場所のライブラリを使う場合は、そのパスを RUDA_TORCH_LIBRARY に設定してください。Rust ライブラリと C++ 拡張は両方とも ABI 10 が必要で、同時に再ビルドします。

import torch
import ruda_torch

x = torch.arange(4, dtype=torch.float32).to("ruda:0")
print((x + x).cpu())

ビルド済み Windows wheel は、成功した RUDA Torch Windows build のアーティファクトから取得できます。wheel アーティファクトを展開し、中の .whl ファイルを python -m pip install --no-deps でインストールしてください。wheel はネイティブ DLL を含み、Windows x64、CPython 3.13、PyTorch 2.13.0+cu130 向けです。対応する PyTorch を先にインストールしてください。アーティファクトの保存期間は 7 日です。ruda-torch-native はソースからビルドするコンポーネントで、crates.io パッケージではありません。

スタックの構成

1 つのリポジトリに、責務が明確な複数のクレートを収めています。分野別ライブラリから上位フレームワークまで、スタックを階層化し、一体として開発しています。

層 コンポーネント
共通契約 ruda-core
コンパイルとカーネル ruda-compiler、ruda-kernel、マクロコンポーネント
ランタイムとドライババックエンド ruda、ruda-driver-cuda/cpu/wgpu/hip
分野別ライブラリ ruBLAS、ruDNN、ruPRIM、ruFFT、ruRAND、ruSPARSE
集合通信 ruCCL、ruda-communication
テンソルとフレームワーク ruda-tensor*、ruda-autodiff、ruda-fusion
PyTorch 統合 ruda-torch-native(Rust)、ruda_torch(Python)
モデルとデータ ruda-model、ruda-nn、ruda-optim、ruda-store、ruda-dataset

ネイティブ GPU 推論

ページ化 Attention には、同じデータ型・デバイス・実行キュー上の連続した FP32/FP16/BF16 テンソルが必要です。順伝播と一階の逆伝播に対応しますが、任意の外部マスクや量子化 KV キャッシュには対応しません。PyTorch の履歴勾配は既定でアトミック方式です。backward_strategy="ordered" はアトミックなしの経路を選び、履歴行キャッシュと物理ページ圧縮は明示的に有効化します。MLA/MoE は再利用可能なコンポーネントであり、完全なモデルアダプターには射影、位置エンコーディング、ルーティングパラメーター、キャッシュ所有権の管理が必要です。

ハードウェアへの経路

詳細と貢献

Rust、GPU カーネル、コンパイラ、高性能計算に関心のある方は、このスタックをさらに発展させ、高速化する取り組みにご参加ください。

由来とライセンス

サードパーティに関する通知

プロジェクトがライセンスを付与する権利を持つ Ruda 独自のソフトウェアコードは、Apache License 2.0 で提供されます。サードパーティのファイルには元のライセンスが適用され、ルートのライセンスは移行されたコンポーネントの MIT OR Apache-2.0 宣言を上書きしません。