NVIDIA объявила о развитии CUDA Rust, инструментария для разработки GPU-ядер на Rust. Главная фишка в безопасности работы с памятью на этапе компиляции и никаких состояний гонки. До уровня CUDA C++ и CUDA Python обещают довести в следующем году.
Поддерживаются две модели параллельных ядер - SIMT и Tile. SIMT позволяет на низком уровне управлять отдельными потоками, запуская тысячи одновременно. Tile - более высокий уровень абстракции: вы описываете алгоритм работы с блоками данных, а компилятор Tile IR сам разбирается с потоками, синхронизацией, памятью и распределением по тензорным ядрам.
Для SIMT развивается компилятор cuda-oxide, который компилирует Rust напрямую в инструкции CUDA PTX, используя штатную систему типов и модель владения. Ядра пишутся на обычном Rust, но выполняются в окружении no_std — только libcore и специализированные абстракции, без libstd. Можно использовать safe-код, блоки unsafe и низкоуровневые инструкции. Для безопасности есть тип DisjointSlice, гарантирующий каждому потоку эксклюзивный доступ только к своим данным. Лицензия — Apache 2.0.
Для модели Tile есть библиотека cutile-rs — идиоматический Rust, компилируемый напрямую в CUDA-ядра. Строгие правила владения и заимствования применяются к коду на GPU: ядро оформляется как однопоточная программа, а компилятор сам разбивает вычисления на потоки и синхронизирует их. Потоки получают совместный доступ к неизменяемым тензорам, а изменяемые тензоры разделяются на непересекающиеся блоки. Тоже Apache 2.0.
Linux / Линукс 🥸
Post #12778
2.76K

- ❤ 19
- 💔 4
- 👍 3
- 🤯 2