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, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² инструкции для выполнСния Π² virtuellen Maschine 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.

Quelle: opennet.ru

ZuverlΓ€ssiges Hosting fΓΌr Websites mit DDoS-Schutz kaufen, VPS VDS Server πŸ”₯ ZuverlΓ€ssiges Hosting fΓΌr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster