NVIDIA představila CUDA Rust pro vývoj jader GPU v jazyce Rust.

Společnost NVIDIA oznámila vývoj sady nástrojů CUDA Rust, která umožňuje jazyku Rust vyvíjet jádra běžící na GPU. Sada nástrojů zajišťuje bezpečnost paměti během kompilace a zabraňuje vzniku závodních podmínek. V příštím roce se plánuje vývoj CUDA Rust na úroveň vhodnou pro produkční projekty, podobně jako sady nástrojů CUDA C++ a CUDA Python.

Nástrojová řada CUDA Rust podporuje dva modely pro vývoj paralelních jader: SIMT (Single Instruction, Multiple Threads) a Tile. Model SIMT umožňuje nízkoúrovňovou definici jednoho vlákna, spouštění a správu tisíců takových vláken. Model Tile nabízí vyšší úroveň abstrakce, kde místo explicitní správy jednotlivých vláken jsou definovány algoritmy pro práci s datovými bloky (dlaždicemi) a kompilátor Tile IR se stará o veškerou manipulaci s vlákny, synchronizaci přístupu, správu paměti a distribuci dat napříč tenzorovými jádry.

Pro vývoj v jazyce Rust s využitím modelu SIMT je vyvíjen kompilátor cuda-oxide, který umožňuje kompilaci kódu v jazyce Rust s využitím standardního typového systému a modelu vlastnictví Rust přímo do instrukcí pro spuštění v... virtuální stroj CUDA PTX (Parallel Thread Execution). Jádra GPU jsou napsána v běžném Rustu, ale běží v prostředí no_std a mohou používat pouze funkce z knihovny libcore a specializované abstrakce Rustu, bez přístupu ke standardní knihovně Rustu (libstd).

Jádra CUDA napsaná v Rustu umožňují použití typové ochrany (safe), použití nebezpečných bloků a přístup k nízkoúrovňovým hardwarovým instrukcím. Pro zajištění bezpečnosti je navržen typ DisjointSlice, který zajišťuje, že každé vlákno má exkluzivní přístup pouze ke svým vlastním datům. Kód cuda-oxide je licencován pod licencí Apache 2.0.

Pro implementaci modelu Tail je navržena knihovna cutile-rs. Umožňuje použití idiomatického jazyka Rust k vytváření kódu, který se kompiluje přímo do jader CUDA. Cutile-rs aplikuje striktní pravidla vlastnictví a výpůjček jazyka Rust na kód běžící na GPU. Jádro je implementováno jako jednovláknový program pracující s datovým blokem a kompilátor automaticky rozděluje výpočet do vláken a zajišťuje jejich synchronizaci. Vlákna mají sdílený přístup k neměnným tenzorům a měnitelné tenzory jsou rozděleny do disjunktních bloků, aby byl zajištěn bezpečný přístup. Kód cutile-rs je distribuován pod licencí Apache 2.0.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster