OpenCL-ի Mesa-ի Rust-ի ներդրումն այժմ աջակցում է OpenCL 3.0-ին

Նոր OpenCL-ի ներդրումը (rusticl), գրված Rust-ով, որը մշակվել է Mesa նախագծի համար, հաջողությամբ անցել է CTS (Kronos Conformance Test Suite) թեստային փաթեթը, որն օգտագործվում է Khronos կոնսորցիումի կողմից՝ OpenCL 3.0 բնութագրերի հետ համատեղելիությունը գնահատելու համար: Նախագիծը մշակվում է Կարոլ Հերբստի կողմից Red Hat-ից, ով ներգրավված է Mesa-ի, Nouveau-ի դրայվերի և OpenCL բաց ստեկի մշակմամբ: Նշվում է, որ Քերոլը կապվել է Khronos-ի հետ՝ rusticl-ում OpenCL 3.0 աջակցության պաշտոնական հավաստագրման վերաբերյալ:

Փորձարկումներն ավարտվել են 12-րդ սերնդի Intel GPU-ով (Alder Lake) համակարգով: Աշխատանքն իրականացվել է Mesa Iris դրայվերի միջոցով, սակայն նախագիծը պետք է աշխատի նաև այլ Mesa դրայվերների հետ, որոնք օգտագործում են NIR շեյդերների անտիպ միջանկյալ ներկայացումը (IR): Rusticle-ը Mesa-ի հետ միաձուլելու հարցումը դեռ գտնվում է վերանայման փուլում, և որոշում չի կայացվել Rust կոդը Mesa-ում ներառելու մասին: Մինչ Rusticl-ն ընդունվել է հիմնական Mesa կոմպոզիցիայի մեջ, դուք կարող եք օգտագործել առանձին ճյուղ կառուցելու համար, որը կազմելիս պետք է նշեք build-ի պարամետրերը «-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= ճիշտ".

Rusticle-ը գործում է որպես Mesa-ի OpenCL Frontend Clover-ի անալոգը և մշակվել է նաև Mesa-ում տրամադրված Gallium ինտերֆեյսի միջոցով: Երեքնուկի ցիցը երկար ժամանակ լքված է, և գեղջուկը դիրքավորվում է որպես դրա ապագա փոխարինող: Բացի OpenCL 3.0-ի համատեղելիության ձեռքբերումից, Rusticle նախագիծը տարբերվում է Clover-ից՝ պատկերի մշակման համար OpenCL ընդլայնումների աջակցությամբ, բայց դեռ չի աջակցում FP16 ձևաչափին:

Mesa-ի և OpenCL-ի համար կապեր ստեղծելու համար, որոնք թույլ են տալիս կանչել Rust ֆունկցիաները C կոդից և հակառակը, Rusticle-ում օգտագործվում է Rust-bindgen: Rust լեզվի օգտագործման հնարավորությունը Mesa նախագծում քննարկվում է 2020 թվականից։ Rust-ի աջակցության առավելությունների թվում նշվում է վարորդների անվտանգության և որակի բարձրացումը՝ հիշողության հետ աշխատելիս բնորոշ խնդիրներից ազատվելու, ինչպես նաև Mesa-ում երրորդ կողմի զարգացումները ներառելու հնարավորության պատճառով, ինչպիսին է Կազանը (Vulkan-ի իրականացում Ռուստում): Թերությունները ներառում են build համակարգի բարդության ավելացումը, բեռների փաթեթի համակարգին կապվելու դժկամությունը, կառուցման միջավայրի ընդլայնված պահանջները և Rust կոմպիլյատորը Linux-ում հիմնական աշխատասեղանի բաղադրիչները կառուցելու համար անհրաժեշտ կառուցվածքային կախվածությունների մեջ ներառելու անհրաժեշտությունը:

Source: opennet.ru

Добавить комментарий