Зачем NVIDIA Rust для GPU?
До сих пор экосистема CUDA позволяла запускать ядра из Rust, но сами ядра приходилось писать на C++ или Python. NVIDIA меняет этот подход, интегрируя Rust в системный слой AI-инфраструктуры. Ядро Nova Linux уже написано на Rust, как и основа NVIDIA Dynamo. Теперь же разработчики могут писать GPU-ядра на Rust, компилируя их напрямую в PTX без обёрток, сохраняя безопасность памяти на этапе компиляции.
Два пути: SIMT и Tile
NVIDIA предлагает два параллельных трека, соответствующих моделям программирования CUDA:
- cuda-oxide (SIMT): Кастомный бэкенд
rustc, который транслирует код через Pliron IR и LLVM в PTX. Требует pinned nightly toolchain и LLVM. Обеспечивает безопасность черезDisjointSliceи контракты запуска. - cutile-rs (Tile): Работает на стабильном Rust 1.89+ и CUDA 13.3 без кастомного LLVM. Использует JIT-компиляцию CUDA Tile IR. Отлично подходит для высокоуровневого программирования, где компилятор сам маппит тайлы на архитектуру.
Сравнение проектов
| Характеристика | cuda-oxide (SIMT) | cutile-rs (Tile) |
|---|---|---|
| Статус | Ранняя альфа | Публикация на crates.io, используется в production |
| Требования к Rust | Pinned nightly toolchain | Stable Rust 1.89+ |
| Зависимости | LLVM, clang, libclang | Без кастомного LLVM |
| Безопасность памяти | DisjointSlice, launch contracts | Тензорное разбиение, владение (ownership) |
| Применение | Низкоуровневый контроль | HuggingFace Grout, mistral.rs |
Пример кода: Vector Addition
Оба проекта решают одну задачу — поэлементное сложение массивов из 1024 элементов. В cuda-oxide разработчик явно управляет потоками и блоками, используя макросы #[kernel] и #[launch_bounds]. В cutile-rs акцент смещён на работу с тайлами данных, что упрощает портирование кода между разными архитектурами GPU.
Почему это важно?
Это не просто эксперимент. NVIDIA планирует поддерживать межъязыковую интероперабельность между CUDA Rust, C++ и Python. Выбор фронтенда больше не будет блокировать разработчика от других экосистем. Для старта можно использовать команду cargo oxide run для SIMT или клонировать репозиторий cutile-rs для Tile-подхода. Оба проекта открыты, и сообщество уже активно тестирует их в реальных задачах инференса.
Источник: NVIDIA dev blog ↗
