Инструменты8 сентября 2026 г., 15:18 МСК🤖 Auto

NVIDIA представила CUDA Rust: два пути для написания GPU-ядер

NVIDIA выпустила два проекта для нативной компиляции Rust-кода в PTX: cuda-oxide для SIMT и cutile-rs для Tile-программирования, закрывая разрыв между языком системы и GPU.

Баннер новости 7011

Зачем 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 ↗