Zuletzt aktualisiert am

NVIDIA stellt „CUDA Rust“ für die Entwicklung von GPU-Kerneln vor

NVIDIA erweitert CUDA um die native Entwicklung von GPU-Kerneln in Rust durch die neuen Projekte „cuda-oxide“ und „cutile-rs“.
Eine Übersetzung von 🇬🇧 Linuxiac.com

NVIDIA erweitert CUDA um native Rust-Unterstützung und führt zwei neue Ansätze ein, mit denen Entwickler GPU-Kernel direkt in Rust schreiben können, anstatt auf Kernel zurückzugreifen, die in CUDA C++ oder einer anderen Sprache geschrieben wurden.

Bislang konnten Rust-Anwendungen zwar CUDA-Kernel starten, doch der GPU-seitige Kernel-Code wurde in der Regel an anderer Stelle geschrieben. Die neue CUDA-Rust-Initiative von NVIDIA schließt diese Lücke, indem Rust-GPU-Kernel direkt in PTX kompiliert werden, die von NVIDIA-GPUs verwendete Zwischendarstellung.

Das Unternehmen verfolgt zwei getrennte Ansätze: cuda-oxide und cutile-rs. Beide richten sich an Rust-Entwickler, folgen jedoch unterschiedlichen GPU-Programmiermodellen.

Der erste, cuda-oxide, nutzt das traditionelle SIMT-Modell, das aus CUDA C++ bekannt ist. Entwickler arbeiten explizit mit Threads, Blöcken, Indizierung und Speicher, während das Projekt ein maßgeschneidertes rustc Backend zur Codegenerierung bereitstellt, das den Rust-Kernel-Code über Rust MIR, Pliron, LLVM IR und schließlich zu PTX weiterleitet.

Der zweite Ansatz, cutile-rs, arbeitet auf einer höheren Abstraktionsebene und nutzt das CUDA-Tile-Programmiermodell von NVIDIA. Anstatt zu beschreiben, was einzelne GPU-Threads tun sollen, arbeiten Entwickler mit Datentiles, während der Compiler Details wie die Zuordnung dieser Tiles zu physischen GPU-Threads übernimmt.

Darüber hinaus nutzt cutile-rs Tensor-Partitionierung und die Eigentumsregeln von Rust. Jede Kachel erhält exklusiven Zugriff auf ihren beschreibbaren Teil eines Tensors, wodurch bestimmte Aliasing- und Race-Condition-Fehler bereits zur Kompilierungszeit und nicht erst während der GPU-Ausführung abgewehrt werden können.

Laut NVIDIA sollen sich die beiden Modelle ergänzen und nicht miteinander konkurrieren. Tile wird als bevorzugter Ausgangspunkt positioniert, wenn Entwickler keine direkte Kontrolle über das Thread-Mapping und das Speicherverhalten benötigen, während SIMT weiterhin für Workloads verfügbar bleibt, bei denen diese Kontrolle auf niedrigerer Ebene von Bedeutung ist.

Das Unternehmen plant zudem die Interoperabilität zwischen CUDA Rust, CUDA C++ und CUDA Python, was bedeutet, dass Entwickler letztendlich in der Lage sein sollten, die verschiedenen CUDA-Frontends zu kombinieren, anstatt eine Anwendung vollständig auf eine Sprache festzulegen.

Abschließend weist NVIDIA darauf hin, dass die Funktionsabdeckung noch unvollständig ist und sich die APIs im Laufe der weiteren Entwicklung ändern werden. Das Unternehmen plant, CUDA Rust bis 2027 und darüber hinaus weiter auszubauen und zu optimieren.

Weitere Details finden Sie in der Ankündigung von NVIDIA.

Spendieren Sie Bobby einen ☕ Ko-fi

Ein Service von s3n🧩net

Comments