Компания NVIDIA объявила о развитии инструментария CUDA Rust, позволяющего использовать язык Rust для разработки ядер, выполняемых на стороне GPU. Инструментарий обеспечивает безопасность работы с памятью на этапе компиляции и предотвращает возникновение состояний гонки. В следующем году CUDA Rust планируют довести до уровня, пригодного для разработки рабочих проектов, аналогичного инструментариям CUDA C++ и CUDA Python.
Инструментарий CUDA Rust поддерживает две модели разработки параллельно исполняемых ядер - SIMT (Single Instruction, Multiple Threads) и Tale. Модель SIMT позволяет на низком уровне определять логику одного потока, запускать тысячи таких потоков и управлять ими. Модель Tile предлагает более высокий уровень абстракции, в котором вместо явного управления отдельными потоками определяются алгоритмы действия с блоками данных (tile), а все манипуляции с потоками, синхронизацию доступа, управление памятью и распределение данных по тензорным ядрам берёт на себя компилятор Tile IR.
Для разработки на языке Rust с использованием модели SIMT развивается компилятор cuda-oxide, позволяющий компилировать код на языке Rust, использующий штатную систему типов и модель владения Rust, напрямую в инструкции для выполнения в виртуальной машине CUDA PTX (Parallel Thread Execution). Ядра для GPU создаются на обычном Rust, но выполняются в окружении no_std и могут использовать только функции из библиотеки libcore и специализированные Rust-абстракции, без доступа к стандартной…
В…