NVIDIA представила CUDA Rust для разработки GPU-ядер на языке Rust

Компания 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, напрямую в инструкции для выполнения в maszynie wirtualnej CUDA PTX (Parallel Thread Execution). Ядра для GPU создаются на обычном Rust, но выполняются в окружении no_std и могут использовать только функции из библиотеки libcore и специализированные Rust-абстракции, без доступа к стандартной библиотеке Rust (libstd).

В CUDA-ядрах на Rust допускается применение защиты через систему типов (safe), использование блоков unsafe и обращение к низкоуровневым аппаратным инструкциям. Для обеспечения безопасности предлагается тип DisjointSlice, гарантирующий, что каждый поток получает эксклюзивный доступ только к своим данным. Код cuda-oxide распространяется под лицензией Apache 2.0.

Для применения модели Tail предлагается библиотека cutile-rs, позволяющая использовать идеоматический язык Rust для создания кода, компилируемого напрямую в CUDA-ядра. Cutile-rs применяет предлагаемые в Rust строгие правила владения и заимствования к коду, выполняемому на GPU. Ядро оформляется как однопоточная программа, работающая с блоком данных, а компилятор сам разбивает вычисления на потоки и обеспечивает их синхронизацию. Потокам предоставляется совместный доступ к неизменяемым тензорам, а для безопасного доступа к изменяемым тензорам применяется их разделение на непересекающиеся блоки. Код cutile-rs распространяется под лицензией Apache 2.0.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster