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

Компания NVIDIA обяви за развитието на инструмента CUDA Rust, който позволява използването на езика Rust за разработка на ядра, изпълнявани на страна на GPU. Инструментът осигурява безопасност при работа с паметта на етапа на компилация и предотвратява появата на условия на гонка. През следващата година CUDA Rust планират да достигне ниво, подходящо за разработване на реални проекти, подобно на инструментите CUDA C++ и CUDA Python.

Инструментът CUDA Rust поддържа два модела за разработка на паралелно изпълнявани ядра — SIMT (Single Instruction, Multiple Threads) и Tile. Моделът SIMT позволява на ниско ниво да се определя логиката на един поток, да се стартират хиляди такива потоци и да се управляват. Моделът Tile предлага по-високо ниво на абстракция, при което вместо явно управление на отделни потоци се определят алгоритми на действие с блокове данни (tile), а всички манипулации с потоци, синхронизация на достъпа, управление на паметта и разпределение на данни по тензорни ядра се поемат от компилатора Tile IR.

За разработка на езика Rust с използване на модела SIMT се развива компилаторът cuda-oxide, който позволява компилиране на код на езика Rust, използващ стандартната система от типове и модела на собственост на Rust, директно в инструкции за изпълнение в виртуална машина 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.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster