Mae Nvidia wedi rhyddhau CUDA-oxide, crynhoydd Rust-i-CUDA.

Компания Nvidia cyhoeddi ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск инструмСнтария CUDA-oxide, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° языкС Rust ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ исполняСмыС Π² GPU ядра CUDA SIMT (Single Instruction, Multiple Threads). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ позволяСт ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° языкС Rust, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΡˆΡ‚Π°Ρ‚Π½ΡƒΡŽ систСму Ρ‚ΠΈΠΏΠΎΠ² ΠΈ модСль владСния Rust, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² инструкции для выполнСния Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС CUDA PTX (nvidia.com) (Parallel Thread Execution) Π±Π΅Π· примСнСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков (DSL) ΠΈ обвязок.

Код инструмСнтария написан Π½Π° языкС Rust ΠΈ dosbarthu gan ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск позиционируСтся ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π°Π»ΡŒΡ„Π°-вСрсия.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя:

  • БэкСнд Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° для компилятора rustc, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Β«#[kernel]Β» Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ исполняСмыС Π½Π° GPU ядра Π² прСдставлСнии CUDA PTX. ΠŸΡ€ΠΈ компиляции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡˆΡ‚Π°Ρ‚Π½Π°Ρ для rustc Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Pliron: Rust β†’ MIR β†’ Pliron IR β†’ LLVM IR β†’ PTX.
  • Унифицированная систСма сборки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², выполняСмых Π½Π° хост-систСмС ΠΈ Π½Π° GPU, которая сводится ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ Β«cargo oxide buildΒ» ΠΈ Β«cargo oxide runΒ».
  • Набор Rust-абстракций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ядрах Π½Π° сторонС GPU. НапримСр, доступны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для индСксации, использования раздСляСмой памяти ΠΈ Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠ², Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, синхронизации Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², TMA (nvlabs.github.io) (Tensor Memory Accelerator). Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Ρ‹Π·ΠΎΠ² обвязок Π½Π°Π΄ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ инструкциями, спСцифичными для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Blackwell (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ).
  • Crate-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с выполняСмыми Π½Π° сторонС хоста ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ CUDA runtime, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ядра Π½Π° GPU ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с выполняСмыми Π½Π° GPU функциями Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅.
  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ядСр, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† (GEMM), Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, асинхронноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, интСграция с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ MathDx, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ, взаимодСйствия с CUDA-ядрами Π½Π° C++/CCCL.

Π―Π΄Ρ€Π° для GPU ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Rust (Π½Π΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚), Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ no_std ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libcore ΠΈ Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ спСциализированныС Rust-абстракции, Π±Π΅Π· доступа ΠΊ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Rust (libstd). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (u8..u64, f32, f64, bool), структуры, пСрСчислСния, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, массивы ([T; N]) ΠΈ слайсы (&[T]), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ match / if / if let, Ρ†ΠΈΠΊΠ»Ρ‹ for ΠΈ while, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (.iter(), .enumerate()), замыкания ΠΈ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ. НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹ String, Vec ΠΈ Box, макросы format!, panic! ΠΈ println!, Trait-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, сСтСвыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ).

Ar gael Ρ‚Ρ€ΠΈ уровня обСспСчСния бСзопасности CUDA-ядСр Π½Π° Rust: Π·Π°Ρ‰ΠΈΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· систСму Ρ‚ΠΈΠΏΠΎΠ² (safe), использованиС Π±Π»ΠΎΠΊΠΎΠ² unsafe ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ инструкциям. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ созданной Π½Π° CUDA-oxide Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ умноТСния (GEMM SoL) Π½Π° GPU B200 достигаСт 868 Ρ‚Ρ€ΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду, Ρ‡Ρ‚ΠΎ составляСт 58% ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ cuBLAS.

Ffynhonnell: linux.org.ru

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd Γ’ diogelwch DDoS, gweinyddwyr VPS VDS πŸ”₯ Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster