La implementació Rust d'OpenCL per a Mesa proporciona suport per a OpenCL 3.0

La nova implementació OpenCL (rusticl), escrita en Rust, que s'està desenvolupant per al projecte Mesa, ha superat amb èxit la suite de proves CTS (Kronos Conformance Test Suite) utilitzada pel consorci Khronos per avaluar la compatibilitat amb les especificacions OpenCL 3.0. El projecte està sent desenvolupat per Karol Herbst de Red Hat, que participa en el desenvolupament de Mesa, el controlador Nouveau i la pila oberta OpenCL. Cal assenyalar que Carol va contactar amb Khronos pel que fa a la certificació oficial del suport OpenCL 3.0 a rusticl.

Les proves es van completar en un sistema amb una GPU Intel de 12a generació (Alder Lake). El treball es va dur a terme amb el controlador Mesa Iris, però el projecte també hauria de funcionar amb altres controladors Mesa que utilitzen la representació intermèdia sense tipus (IR) dels shaders NIR. La sol·licitud per fusionar Rusticle amb Mesa encara està en procés de revisió i no s'ha pres cap decisió sobre si incloure el codi Rust a Mesa. Abans d'acceptar Rusticl a la composició principal de Mesa, podeu fer servir una branca separada per a la construcció, en compilar la qual hauríeu d'especificar els paràmetres de compilació "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= veritat”.

Rusticle actua com un anàleg de la interfície OpenCL Clover de Mesa i també es desenvolupa mitjançant la interfície Gallium proporcionada a Mesa. L'estaca Clover fa temps que està abandonada i rusticl es posiciona com el seu futur substitut. A més d'aconseguir la compatibilitat amb OpenCL 3.0, el projecte Rusticle difereix de Clover pel fet de donar suport a les extensions OpenCL per al processament d'imatges, però encara no és compatible amb el format FP16.

Per generar enllaços per a Mesa i OpenCL, que us permetran cridar funcions Rust des del codi C i viceversa, rust-bindgen s'utilitza a Rusticle. Des del 2020 es parla de la possibilitat d'utilitzar el llenguatge Rust al projecte Mesa. Entre els avantatges del suport Rust, s'esmenta l'augment de la seguretat i la qualitat dels controladors a causa de l'eliminació dels problemes típics quan es treballa amb memòria, així com la possibilitat d'incloure desenvolupaments de tercers a Mesa, com Kazan (una implementació de Vulkan). a Rust). Els desavantatges inclouen l'augment de la complexitat del sistema de compilació, la reticència a estar lligat al sistema de paquets de càrrega, els requisits ampliats per a l'entorn de compilació i la necessitat d'incloure el compilador Rust a les dependències de construcció necessàries per construir components clau d'escriptori a Linux.

Font: opennet.ru

Afegeix comentari