Վերադառնալ
Թողարկվել է Fearless SIMD v1.0-ը. Rust-ի գրադարանը SIMD-ից հանում է unsafe-ը
SiTech AI Team2 წთ. საკითხავი

Թողարկվել է Fearless SIMD v1.0-ը. Rust-ի գրադարանը SIMD-ից հանում է unsafe-ը

Linebender-ը հրապարակել է fearless_simd v1.0 գրադարանը Rust-ի համար. այն ապահովում է շարժական SIMD և անվտանգ մուտք դեպի ապարատային ինտրինսիկներ՝ առանց ad-hoc unsafe կոդի, գումարած երեք տարվա անվտանգության թարմացումներ։

Linebender-ը հրապարակել է fearless_simd v1.0-ը՝ Rust-ի գրադարան, որի նպատակը SIMD կոդից unsafe-ի հեռացումն է։ SIMD-ը տեխնիկա է, որը մեկ հրահանգով միաժամանակ մի քանի արժեք է մշակում։ Հայտարարությունը հրապարակվել է նախագծի բլոգում 2026 թվականի սեպտեմբերի 22-ին՝ առաջին նախատիպից մոտ ութ տարի անց։ Գրադարանը ընդգրկում է օգտագործման երեք մակարդակ՝ ինքնաշխատ վեկտորացում և մուլտիվերսիոնացում, ամբողջական շարժական SIMD աբստրակցիաներ և անվտանգ մուտք դեպի ապարատային ինտրինսիկներ։

Արտադրողականություն

Շարժական SIMD աբստրակցիաների հանդեպ հաճախակի քննադատությունն այն է, որ դրանք արտադրողականություն են կորցնում։ Պլատֆորմից կախված եզրային դեպքեր ունեցող գործողությունների համար, օրինակ swizzle-ի կամ լողացող կետով թվերի մաքսիմումի, գրադարանը առաջարկում է երկու տարբերակ՝ ճշգրիտ, որը բոլոր տեղերում նույն արդյունքն է տալիս, և արագ, որը պլատֆորմից կախված արդյունք է վերադարձնում, երբ եզրային դեպքեր չեն սպասվում։

Ալգորիթմները կարելի է գրել ապարատայինի բնական վեկտորային լայնությամբ, իսկ անհրաժեշտության դեպքում՝ ֆիքսված չափերով։ Թիմը բարելավումներ է ներկայացրել նաև Rust-ին և LLVM-ին։ Երբ շարժական գործողությունները բավարար չեն, կոդը առանց լրացուցիչ ծախսի իջնում է պլատֆորմի ինտրինսիկներին։

Անվտանգություն

Հեղինակների խոսքով՝ այլ SIMD աբստրակցիաները լի են unsafe կոդով․ որոնումը հազարավոր բլոկներ է ցույց տալիս։ fearless_simd-ում ad-hoc unsafe այլևս պետք չէ։ Դա ապահովում են երկու փոքր բաղադրիչ՝ kernel! մակրոն, որը կոմպիլյատորի target feature 1.1-ի շնորհիվ անվտանգ կանչում է ինտրինսիկների մեծ մասը, և անվտանգ transmute մոդուլը՝ bytemuck-ի ու zerocopy-ի նմանությամբ, որը _mm_loadu_epi32-ի տիպի բեռնման և պահման հրահանգները փոխարինում է մեկ կրկնակի օգտագործվող փաթաթանով։

Էրգոնոմիկա և կայունություն

Ֆունկցիաների մուլտիվերսիոնացումը Rust-ում անհարմար էր․ նախկին լուծումները կա՛մ պահանջում էին #[inline(always)] նշումներ ու դրանց հետևանքների ըմբռնում, կա՛մ ամեն կանչին ավելացնում էին ծախս, որը վնասում է փոքր ֆունկցիաներին։ v1.0-ի հետ միասին դուրս է գալիս fearless_simd_macros v0.1#[simd] ատրիբուտով, որը այդ որոշումները կայացնում է ինքնաշխատ․ ձեռքով մոտեցումը նույնպես հասանելի է։

Նախագիծը խոստանում է անվտանգության թարմացումներ երեք տարվա ընթացքում v1.0-ի և բոլոր հաջորդ տարբերակների համար և առանց API-ն խախտելու նախատեսում է աջակցել f16 տիպին, ինչպես նաև SVE-ի և RISC-V-ի վեկտորային ընդարձակումներին։

Կիրառումը և ճանապարհը դեպի std::simd

Fearless SIMD-ն արդեն 30 crate-ի ուղղակի կախվածություն է, իսկ անուղղակի՝ ավելի քան հազարի։ Թիմը կողջունի std::simd-ի կայունացումը, բայց կարծում է, որ դա գրադարանն ավելորդ չի դարձնի․ ստանդարտ գրադարանը պարունակում է միայն այն, ինչ պարտադիր է այնտեղ, իսկ մուլտիվերսիոնացումն ու ապարատային լայնության վեկտորները թողնում է էկոհամակարգին։ Եթե std::simd-ը կայունանա, նախագիծը նախատեսում է տեղափոխվել դրան՝ կրճատելով սեփական կոդը և ստանալով հազվագյուտ պլատֆորմների աջակցություն։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։