Dokumentation / DeutschQuelltext ansehen ↗

Compiler-Handbuch

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

Dokumentation · PTX-Referenz · Programmierhandbuch · 中文

1. Kompilierungspipeline

Der allgemeine Kernel-Pfad beginnt mit den Makros und Typen in ruda-kernel::dsl, erzeugt Kernel-IR und nutzt ein Backend für Lowering und Codegenerierung. ruda-compiler enthält die Compilerimplementierungen; Gerätetreiber übergeben deren Ausgabe an die Ausführungsumgebung.

NVIDIA bietet zwei Kompilierungspfade:

Auswahl Kernel-Kompilierungspipeline
nvrtc (Standard) Rust-Kernel-Frontend → IR → CUDA C++ → NVRTC → PTX
ptx Rust-Kernel-Frontend → IR → PTX

Beide werden über den NVIDIA-Treiber ausgeführt. Der C++-Kompilierungspfad CUDA ist keine Schnittstelle zum Importieren beliebiger C++-Projekte oder zur Bereitstellung vollständiger CUDA-Quellkompatibilität.

2. Cargo-Features

Komponente/Funktion Zweck
ruda-kernel/frontend Kernel DSL-Frontend
ruda-kernel/lowering-cpp Integration des C++-Lowerings
ruda-compiler/cpp C++-Backend-Implementierung
ruda-compiler/ptx Direkter PTX-Compiler
ruda-driver-cuda/direct-ptx Ermöglicht die direkte PTX-Auswahl im CUDA-Backend

Funktionen bestimmen, welcher Code erstellt wird; Umgebungsvariablen wählen zur Laufzeit einen Pfad aus. Dies sind separate Steuerelemente. Siehe das CUDA-Manifest und das Compiler-Manifest.

3. Umgebungsvariablen

Variable Verhalten
RUDA_CUDA_COMPILER Akzeptiert nvrtc oder ptx; Der Standardwert ist nvrtc, wenn dieser Wert nicht festgelegt ist
RUDA_PTX_VERSION Direct PTX erfordert eine explizite major.minor-Version
CUDA_PATH CUDA Toolkit-Installationsstammverzeichnis
RUDA_PTX_TEST_CACHE Cache-Verzeichnis-Override, das nur das Beispiel ptx-runtime ausliest

Unbekannte Compilerwerte führen zu einem Fehler. Auch die Auswahl von ptx ohne Aktivierung von direct-ptx führt zu einem Fehler, anstatt zu NVRTC zu wechseln. Siehe compiler_backend.rs.

4. Ziele und Caches

Die eigenständige direkte PTX-Kompilierung erfordert eine explizite PTX-Version und ein explizites SM-Ziel. PTX identifiziert die Befehlssatzversion; SM identifiziert die Zielarchitektur. Sie sind nicht austauschbar.

Der direkte PTX-Cache-Namespace des CUDA-Treibers umfasst die Backend-ID SM und die PTX-Version und ist vom NVRTC-Cache getrennt.

5. Kompilierungsfehler

Nicht unterstütztes IR, Argumentmetadaten oder Zielbedingungen führen zu Fehlern. Direct PTX meldet nicht unterstützte Vorgänge, anstatt den Kompilierungspfad automatisch zu wechseln. Siehe Debugging.

ruda-compiler enthält außerdem die Module WGSL, SPIR-V und MLIR.