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, напрамую ў інструкцыі для выканання ў віртуальная машына 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