У напісанай на Rust рэалізацыі OpenCL для Mesa забяспечана падтрымка OpenCL 3.0

Новая рэалізацыя OpenCL (rusticl), напісаная на мове Rust, якая развіваецца для праекта Mesa, паспяхова прайшла набор тэстаў CTS (Kronos Conformance Test Suite), якія выкарыстоўваюцца кансорцыумам Khronos для ацэнкі сумяшчальнасці са спецыфікацыямі OpenCL 3.0. Праект развівае Кэрал Хербст (Karol Herbst) з кампаніі Red Hat, які прымае ўдзел у распрацоўцы Mesa, драйвера Nouveau і адкрытага стэка OpenCL. Адзначаецца, што Кэрал звязаўся з Khronos на прадмет афіцыйнай сертыфікацыі падтрымкі OpenCL 3.0 у rusticl.

Тэсты пройдзены на сістэме з 12-пакаленнем GPU Intel (Alder Lake). Праца праведзена з выкарыстаннем Mesa-драйвера Iris, але праект павінен працаваць і з іншымі драйверамі Mesa, якія выкарыстоўваюць бестыпавое прамежкавае ўяўленне (IR) шэйдараў NIR. Запыт на зліццё Rusticl з Mesa пакуль знаходзіцца на стадыі разгляду і рашэнне аб уключэнні кода на мове Rust у Mesa пакуль не прынята. Да прыняцця Rusticl у асноўны склад Mesa для зборкі можна выкарыстоўваць асобную галінку, пры кампіляцыі якой варта паказаць зборачныя параметры "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=true".

Rusticl выступае ў ролі аналогу прысутнага ў Mesa OpenCL-франтэнда Clover і таксама распрацаваны з выкарыстаннем які прадстаўляецца ў Mesa інтэрфейсу Gallium. Коль Clover ужо даўно знаходзіцца ў закінутым стане і rusticl пазіцыянуецца як яго будучая замена. Акрамя дасягнення сумяшчальнасці з OpenCL 3.0 праект Rusticl адрозніваецца ад Clover падтрымкай пашырэнняў OpenCL для апрацоўкі малюнкаў, але пакуль не падтрымлівае фармат FP16.

Для генерацыі біндзінгаў для Mesa і OpenCL, якія дазваляюць выклікаць Rust-функцыі з кода на Сі і наадварот, у Rusticl задзейнічаны rust-bindgen. Магчымасць выкарыстання мовы Rust у праекце Mesa абмяркоўваецца з 2020 гады. З плюсаў падтрымкі Rust згадваецца падвышэнне бяспекі і якасці драйвераў за рахунак збавення ад тыпавых праблем пры працы з памяццю, а таксама магчымасць уключэння ў склад Mesa іншых напрацовак, такіх як Kazan (рэалізацыя Vulkan на Rust). З недахопаў адзначаецца ўскладненне сістэмы зборкі, нежаданне прывязвацца да пакетнай сістэмы cargo, пашырэнне патрабаванняў да зборачнага асяроддзя і неабходнасць уключэння кампілятара Rust у зборачныя залежнасці, абавязковыя для пабудовы ключавых кампанентаў працоўнага стала ў Linux.

Крыніца: opennet.ru

Дадаць каментар