NVIDIA heeft CUDA Rust gepresenteerd voor de ontwikkeling van GPU-kernels in Rust.

NVIDIA heeft de ontwikkeling aangekondigd van het CUDA Rust-tooling, waarmee de programmeertaal Rust kan worden gebruikt voor het ontwikkelen van kernels die op de GPU worden uitgevoerd. Deze tooling zorgt voor geheugensafety tijdens de compilatiefase en voorkomt de nabijheid van racecondities. Volgend jaar is het de bedoeling om CUDA Rust naar een niveau te brengen dat geschikt is voor de ontwikkeling van werkprojecten, vergelijkbaar met de CUDA C++ en CUDA Python tooling.

De CUDA Rust-tooling ondersteunt twee modellen voor het ontwikkelen van parallel uitvoerende kernels - SIMT (Single Instruction, Multiple Threads) en Tile. Het SIMT-model maakt het mogelijk om op een laag niveau de logica van ƩƩn thread te definiƫren, tienduizenden van dergelijke threads te starten en deze te beheren. Het Tile-model biedt een hogere abstractieniveau, waarbij in plaats van expliciete controle over afzonderlijke threads algoritmes voor het verwerken van blokken gegevens (tile) worden gedefinieerd, terwijl alle manipulaties met threads, synchronisatie van toegang, geheugensbeheer en gegevensdistributie naar tensor-kernels door de Tile IR-compiler wordt afgehandeld.

Voor ontwikkeling in Rust met het SIMT-model is de cuda-oxide-compiler in ontwikkeling, die het mogelijk maakt om Rust-code, gebruikmakend van het standaard type-systeem en het eigendomsmodel van Rust, direct in instructies voor uitvoering in CUDA PTX (Parallel Thread Execution) te compileren. een virtuele machine Kernels voor de GPU worden geschreven in gewone Rust, maar uitgevoerd in een no_std-omgeving en kunnen alleen functies uit de libcore-bibliotheek en gespecialiseerde Rust-abstraheringen gebruiken, zonder toegang tot de standaard Rust-bibliotheek (libstd).

In CUDA-kernels geschreven in Rust is het mogelijk om type-systemen (safe) te gebruiken, unsafe-blokken toe te passen en toegang te krijgen tot laag-niveau hardware-instructies. Voor veiligheid wordt het type DisjointSlice aangeboden, dat garandeert dat elke thread exclusieve toegang heeft tot slechts zijn eigen gegevens. De cuda-oxide-code wordt verspreid onder de Apache 2.0-licentie.

Voor het toepassen van het Tail-model wordt de library cutile-rs aangeboden, waarmee de idiomatische programmeertaal Rust kan worden gebruikt om code direct naar CUDA-kernen te compileren. Cutile-rs past de strikte eigendoms- en leensregels van Rust toe op de code die op de GPU draait. De kernel wordt gepresenteerd als een enkelvoudig programma dat werkt met een gegevensblok, terwijl de compiler zelf de berekeningen opsplitst in threads en hun synchronisatie waarborgt. Threads hebben gedeelde toegang tot onveranderlijke tensors, en voor veilige toegang tot veranderlijke tensors worden deze verdeeld in niet-overlappende blokken. De code van cutile-rs wordt verspreid onder de Apache 2.0-licentie.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster