Nvidia-ն թողարկել է CUDA-oxide-ը՝ Rust-to-CUDA կոմպիլյատորը։

Nvidia ընկերություն опубликовала գործիքակազմի առաջին թողարկումը CUDA-օքսիդ, որը թույլ է տալիս ստեղծել զուգահեռ GPU միջուկներ Rust լեզվով։ CUDA SIMT (Մեկ հրահանգ, բազմակի թել): Նախագիծը թույլ է տալիս կոմպիլացնել Rust կոդը՝ օգտագործելով ստանդարտ տիպի համակարգը և սեփականության մոդել Rust, անմիջապես CUDA վիրտուալ մեքենայում կատարման հրահանգներում PTX (nvidia.com) (Զուգահեռ թելերի կատարում) առանց միջանկյալ տիրույթին հատուկ լեզուների (DSL) և կապերի օգտագործման:

Գործիքների հավաքածուի կոդը գրված է Rust և տարածվում է Apache 2.0 լիցենզիայի ներքո։ Առաջին թողարկումը դիրքավորված է որպես սկզբնական ալֆա տարբերակ։

Գործիքակազմը ներառում է.

  • Rustc կոմպիլյատորի համար կոդի ստեղծման ներքին համակարգ, որը թույլ է տալիս կոմպիլացնել ֆունկցիաներ «» ֆունկցիայի միջոցով։#[միջուկ]" զուգահեռ GPU միջուկների մեջ CUDA PTX ներկայացման մեջ։ Կոմպիլյացիան օգտագործում է rustc framework-ի վրա հիմնված ստանդարտ փոխակերպման շղթան։ ՊլիրոնRust → MIR → Pliron IR → LLVM IR → PTX:
  • Հոսթ համակարգի և գրաֆիկական պրոցեսորի վրա աշխատող բաղադրիչների հավաքման միասնական համակարգ, որը բաղկացած է «cargo oxide build» և «cargo oxide run» հրամանների կատարումից։
  • Rust աբստրակցիաների հավաքածու, որը կարող է օգտագործվել GPU-կողմի միջուկներում: Օրինակ, ֆունկցիաները հասանելի են ինդեքսավորման, համօգտագործվող հիշողության և արգելքների օգտագործման, ատոմային գործողությունների և թելերի խմբերի համաժամեցման համար: TMA (nvlabs.github.io) (Tensor Memory Accelerator): Հնարավոր է կապակցումներ կանչել Բլեքվելի ճարտարապետությանը բնորոշ ցածր մակարդակի հրահանգների համար (օրինակ՝ ընդլայնված մատրիցային գործողություններ):
  • Տեղադրեք փաթեթներ հոսթ-հիմքով CUDA գործարկման կոմպոնենտներով, որոնք հնարավորություն են տալիս կառավարել հիշողությունը, գործարկել միջուկները GPU-ի վրա և ասինխրոն փոխազդել GPU-ի վրա հիմնված ֆունկցիաների հետ։
  • Միջուկի օրինակների հավաքածու, որը ցուցադրում է այնպիսի գործառույթներ, ինչպիսիք են վեկտորային մանիպուլյացիան, մատրիցային բազմապատկումը (GEMM), ատոմային գործողությունները, ասինխրոն կատարումը և գրադարանային ինտեգրացիան։ Մաթեմատիկական Դեքս, օգտագործելով ջեներիկներ և փակումներ, փոխազդելով CUDA միջուկների հետ C++/CCCL-ում։

GPU միջուկները ստեղծվում են սովորական Rust լեզվով (ոչ թե բարբառով), բայց կատարվում են միջավայրում։ no_std և կարող է օգտագործել միայն գրադարանի ֆունկցիաները լիբկոր և նախկինում նշված մասնագիտացված Rust աբստրակցիաները՝ առանց Rust ստանդարտ գրադարանին (libstd) մուտք գործելու։ Աջակցվող տիպերի թվում են պարզունակ տիպերը (u8..u64, f32, f64, bool), կառուցվածքները, թվարկումները, tuples-ները, arrays-ները ([T; N]) և slices-ները (&[T]), match / if / if let օպերատորները, for և while ցիկլերը, իտերատորները (.iter(), .enumerate()), փակումները և ընդհանուր տիպերը։ Չեն աջակցվում String, Vec և Box տիպերը, format!, panic! և println! մակրոները, Trait օբյեկտները և ստանդարտ գրադարանային ֆունկցիաները, որոնք իրականացվում են օպերացիոն համակարգի կանչերի միջոցով (ֆայլերի մշակում, I/O և ցանցային գործողություններ)։

Առկա է Rust-ում CUDA միջուկի անվտանգության երեք մակարդակ՝ տիպային համակարգի պաշտպանություն (անվտանգ), անվտանգ բլոկների օգտագործում և ցածր մակարդակի սարքային հրահանգներին մուտք։ B200 GPU-ի վրա CUDA-օքսիդի վրա հիմնված մատրիցային բազմապատկման իրականացման (GEMM SoL) արդյունավետությունը հասնում է վայրկյանում 868 տրիլիոն գործողության, որը կազմում է օպտիմիզացված գրադարանի արդյունավետության 58%-ը։ cuBLAS.

Source: linux.org.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster