Dokumentation / DeutschQuelltext ansehen ↗

Ruda — Hochleistungsrechnen mit Rust

Rust Sprache Forks Issues Letzter Commit

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

Ruda ist eine Rust-Bibliothek für Hochleistungsrechnen. Sie baut einen vollständigen Software-Stack auf, von GPU-Kernels, Compilern und Laufzeitumgebungen bis hin zu mathematischen Berechnungen, Tensoren und Modellen.

Ruda entwickelt Rust-Kompilierungs- und Ausführungspfade für PTX, HIP und eigene ISAs und behält zugleich den CUDA-C++-Kompilierungspfad bei. Kontrollierte unsafe-Kapselung auf niedriger Ebene verbindet sich mit Rusts Typsystem, Ownership und Borrowing auf höheren Ebenen und ermöglicht sowohl hardwarenahe Leistungskontrolle als auch Speichersicherheit auf höherer Ebene.

Schnellstart

Erforderlich sind Git, Rust/Cargo, eine Linker-Toolchain, eine NVIDIA-GPU samt Treiber und das CUDA Toolkit. Installationsdetails stehen unter Umgebung einrichten.

Eine veröffentlichte Crate verwenden

Fügen Sie das CUDA-Backend zur Cargo.toml Ihrer Anwendung hinzu:

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

Die folgenden Beispiele werden aus einem Quellcode-Checkout ausgeführt.

Klonen

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

Einen GPU-Kernel ausführen

Wählen Sie in Ihrer Shell den direkten PTX-Compiler:

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

Erstellen und starten Sie anschließend das Beispiel:

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

Das Beispiel führt FP32-Addition auf der GPU aus und gibt PASS-Zeilen sowie Zähler des Kompilierungscaches aus. Wählen Sie eine von GPU und Treiber unterstützte PTX-Version.

Text mit ruLLM erzeugen

Legen Sie ein lokales Qwen3.5-0.8B-Modell unter ./models/qwen35 ab oder ersetzen Sie den folgenden Pfad durch Ihr Modellverzeichnis. Modelldateien sind nicht enthalten; siehe Modell vorbereiten.

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

Das Beispiel gibt den erzeugten Text und die Token-IDs aus. Um stattdessen den CUDA-C++-/NVRTC-Pfad zu verwenden, setzen Sie RUDA_CUDA_COMPILER vor dem Start des jeweiligen Beispiels auf nvrtc.

Das native PyTorch-Backend verwenden

ruda-torch registriert das PyTorch-Gerät ruda:0 auf einer einzelnen NVIDIA-GPU. Installieren Sie PyTorch und setuptools und stellen Sie einen C++20-Compiler bereit. Führen Sie dann mit den obigen PTX-Umgebungseinstellungen im Stammverzeichnis des Repositorys Folgendes aus. Verwenden Sie unter Windows eine x64-MSVC-Entwicklershell.

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

Der Standardlader findet diesen Debug-Build automatisch. Für einen Release-Build oder einen anderen Speicherort setzen Sie RUDA_TORCH_LIBRARY auf den Bibliothekspfad. Rust-Bibliothek und C++-Erweiterung müssen beide ABI 10 verwenden und gemeinsam neu erstellt werden.

import torch
import ruda_torch

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

Vorgefertigte Windows-Wheels stehen als Artefakte erfolgreicher RUDA Torch Windows build-Läufe bereit. Entpacken Sie das Wheel-Artefakt und installieren Sie die enthaltene .whl-Datei mit python -m pip install --no-deps. Das Wheel enthält die native DLL und ist für Windows x64, CPython 3.13 und PyTorch 2.13.0+cu130 vorgesehen; installieren Sie zuerst diese passende PyTorch-Ausgabe. Artefakte werden sieben Tage aufbewahrt. ruda-torch-native wird aus dem Quellcode erstellt und ist kein crates.io-Paket.

Aufbau des Stacks

Ein Repository, mehrere Crates mit klar abgegrenzten Zuständigkeiten. Von Fachbibliotheken bis zu übergeordneten Frameworks ist der Stack in Schichten gegliedert und wird gemeinsam entwickelt.

Schicht Komponenten
Gemeinsame Schnittstellenverträge ruda-core
Kompilierung und Kernels ruda-compiler, ruda-kernel, Makrokomponenten
Laufzeit und Treiber-Backends ruda, ruda-driver-cuda/cpu/wgpu/hip
Fachbibliotheken ruBLAS, ruDNN, ruPRIM, ruFFT, ruRAND, ruSPARSE
Kollektive Kommunikation ruCCL, ruda-communication
Tensoren und Frameworks ruda-tensor*, ruda-autodiff, ruda-fusion
PyTorch-Integration ruda-torch-native (Rust), ruda_torch (Python)
Modelle und Daten ruda-model, ruda-nn, ruda-optim, ruda-store, ruda-dataset

Native GPU-Inferenz

Seitenbasierte Attention benötigt zusammenhängende FP32/FP16/BF16-Tensoren gleichen Datentyps auf demselben Gerät und derselben Ausführungsqueue. Sie unterstützt Vorwärtslauf und Rückwärtslauf erster Ordnung, aber keine beliebigen externen Masken oder quantisierten KV-Caches. PyTorch verwendet standardmäßig atomare Historiengradienten; backward_strategy="ordered" wählt den atomikfreien Pfad. Historienzeilen-Cache und physische Seitenkompaktierung sind opt-in. MLA/MoE sind wiederverwendbare Komponenten; vollständige Modelladapter müssen Projektionen, Positionskodierung, Routingparameter und die Verwaltung des Cache-Eigentums bereitstellen.

Wege zur Hardware

Erkunden und beitragen

Wenn Sie sich für Rust, GPU-Kernels, Compiler oder Hochleistungsrechnen interessieren, helfen Sie mit, diesen Stack weiterzuentwickeln und schneller zu machen.

Herkunft und Lizenzierung

Hinweise zu Drittanbietern

Originärer Ruda-Softwarecode, für den das Projekt das Recht zur Lizenzvergabe besitzt, steht unter der Apache License 2.0. Dateien Dritter behalten ihre ursprünglichen Lizenzen; die Lizenz im Stammverzeichnis setzt die MIT OR Apache-2.0-Deklarationen übernommener Komponenten nicht außer Kraft.