
Компания Nvidia представила первый выпуск инструментария CUDA-oxide. Этот проект открывает возможность написания параллельных ядер CUDA SIMT (Single Instruction, Multiple Threads) на языке Rust. Главная особенность разработки заключается в том, что код, написанный с использованием стандартной системы типов и модели владения Rust, компилируется напрямую в инструкции виртуальной машины CUDA PTX (Parallel Thread Execution). При этом разработчикам не требуется прибегать к помощи промежуточных специализированных языков или сложных обвязок.
На текущий момент проект находится на стадии альфа-версии, а его исходный код доступен под лицензией Apache 2.0.
### Состав инструментария CUDA-oxide
В пакет разработки вошли ключевые компоненты для полноценной интеграции Rust в экосистему Nvidia:
* **Бэкенд компилятора:** Специализированное расширение для rustc, позволяющее компилировать функции с атрибутом `#[kernel]` в ядра для GPU. Процесс преобразования использует фреймворк Pliron и выглядит следующим образом: Rust → MIR → Pliron IR → LLVM IR → PTX.
* **Единая система сборки:** Разработчики могут собирать компоненты для хоста и GPU с помощью привычных команд `cargo oxide build` и `cargo oxide run`.
* **Библиотека Rust-абстракций:** Набор инструментов для работы внутри GPU-ядер, включая индексацию, управление разделяемой памятью, барьеры, атомарные операции и синхронизацию потоков. Также поддерживается работа с Tensor Memory Accelerator (TMA) и низкоуровневыми командами архитектуры Blackwell, включая расширенные матричные вычисления.
* **CUDA Runtime для хоста:** Crate-пакеты, управляющие памятью и запуском асинхронных ядер на GPU.
* **Библиотека примеров:** Коллекция демонстрационных ядер, показывающая работу с векторами, умножением матриц (GEMM), дженериками, замыканиями и интеграцию с библиотекой MathDx или кодом на C++/CCCL.
### Особенности работы с языком Rust
Код для GPU пишется на стандартном языке Rust, однако он функционирует в окружении `no_std`. Это означает ограничение использования стандартной библиотеки (libstd) — доступны только функции из libcore и специфические абстракции CUDA-oxide.
**Что поддерживается:**
* Примитивные типы (u8–u64, f32, f64, bool), структуры, перечисления, кортежи, массивы и слайсы.
* Управляющие конструкции: `match`, `if`, `if let`, циклы `for` и `while`.
* Итераторы, замыкания и дженерики.
**Что не поддерживается:**
* Типы `String`, `Vec`, `Box`.
* Макросы `format!`, `panic!`, `println!`.
* Trait-объекты и любые функции, требующие взаимодействия с операционной системой (файловая система, сеть, ввод/вывод).
### Безопасность и производительность
Nvidia предлагает три уровня контроля безопасности: от строгой защиты через систему типов (safe) до работы с блоками `unsafe` и прямого обращения к аппаратным инструкциям.
Что касается эффективности, то первые тесты демонстрируют многообещающие результаты. Реализация умножения матриц (GEMM SoL) на архитектуре GPU B200 с помощью CUDA-oxide достигает производительности 868 Тфлопс, что составляет 58% от показателей оптимизированной библиотеки cuBLAS.





