NVIDIA розширює підтримку CUDA Rust для розробників

NVIDIA розширює підтримку CUDA з нативним підтримкою Rust

NVIDIA розширює CUDA, впроваджуючи нативну підтримку Rust. Це дозволяє розробникам писати GPU ядра безпосередньо на Rust замість використання ядер, написаних на CUDA C++ або іншій мові. Раніше Rust-додатки могли запускати CUDA ядра, але код ядра на GPU зазвичай писався окремо. Нова ініціатива NVIDIA з CUDA Rust закриває цю прогалину, компілюючи Rust GPU ядра безпосередньо в PTX, проміжне подання, яке використовується графічними процесорами NVIDIA.

Дві окремі ініціативи: cuda-oxide та cutile-rs

Компанія працює над двома окремими напрямками: cuda-oxide та cutile-rs. Обидві ініціативи націлені на розробників Rust, але слідують різним моделям програмування для GPU. Перша ініціатива, cuda-oxide, використовує традиційну модель SIMT, знайому з CUDA C++. Розробники працюють з потоками, блоками, індексацією та пам’яттю. Проект надає спеціалізований кодогенератор rustc, який обробляє код ядра Rust через Rust MIR, Pliron, LLVM IR і нарешті до PTX.

Робота з абстракціями: cutile-rs

Другий підхід, cutile-rs, працює на вищому рівні абстракції, використовуючи модель програмування CUDA Tile від NVIDIA. Замість того, щоб описувати, що повинні робити конкретні потоки GPU, розробники працюють з плитками даних. Компілятор керує деталями того, як плитки мапуються на фізичні потоки GPU. Більше того, cutile-rs використовує розподіл тензорів та правила власності Rust. Кожна плитка має виключний доступ до своєї записуваної частини тензора, що дозволяє відкидати деякі помилки асидації і гонки на етапі компіляції, а не під час виконання GPU.

Сумісність між різними мовами програмування

NVIDIA зазначає, що ці дві моделі мають доповнювати одна одну, а не конкурувати. Tile є бажаною початковою точкою, коли розробники не потребують прямого контролю над мапуванням потоків і поведінкою пам’яті. SIMT залишається доступним для навантажень, де важливий низькорівневий контроль. Компанія також планує забезпечити взаємодію між CUDA Rust, CUDA C++ і CUDA Python. Це означає, що розробники врешті-решт зможуть змішувати різні фронтенди CUDA, а не прив’язувати додаток повністю до однієї мови.

Плани на майбутнє з CUDA Rust

Нарешті, NVIDIA попереджає, що функціональне покриття ще не є повним, а API можуть змінюватися в процесі розробки. Компанія планує розширювати та вдосконалювати CUDA Rust до 2027 року і далі. Для отримання додаткових деталей, зверніть увагу на анонси NVIDIA.