L'implémentation Rust d'OpenCL pour Mesa prend en charge OpenCL 3.0

La nouvelle implémentation OpenCL (rusticl), écrite en Rust, en cours de développement pour le projet Mesa, a passé avec succès la suite de tests CTS (Kronos Conformance Test Suite) utilisée par le consortium Khronos pour évaluer la compatibilité avec les spécifications OpenCL 3.0. Le projet est développé par Karol Herbst de Red Hat, qui participe au développement de Mesa, du pilote Nouveau et de la pile ouverte OpenCL. Il est à noter que Carol a contacté Khronos concernant la certification officielle du support OpenCL 3.0 dans rusticl.

Les tests ont été effectués sur un système doté d'un GPU Intel de 12e génération (Alder Lake). Le travail a été réalisé à l'aide du pilote Mesa Iris, mais le projet devrait également fonctionner avec d'autres pilotes Mesa qui utilisent la représentation intermédiaire (IR) sans type des shaders NIR. La demande de fusion de Rusticle avec Mesa est toujours en cours d'examen et aucune décision n'a été prise quant à l'inclusion ou non du code Rust dans Mesa. Avant que Rusticl ne soit accepté dans la composition principale de Mesa, vous pouvez utiliser une branche distincte pour la construction, lors de la compilation, vous devez spécifier les paramètres de construction « -Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= vrai".

Rusticle agit comme un analogue de l'interface OpenCL de Mesa Clover et est également développé à l'aide de l'interface Gallium fournie dans Mesa. La participation Clover est abandonnée depuis longtemps et rusticl se positionne comme son futur remplaçant. En plus d'atteindre la compatibilité OpenCL 3.0, le projet Rusticle diffère de Clover dans la prise en charge des extensions OpenCL pour le traitement d'images, mais ne prend pas encore en charge le format FP16.

Pour générer des liaisons pour Mesa et OpenCL, vous permettant d'appeler des fonctions Rust à partir du code C et vice versa, rust-bindgen est utilisé dans Rusticle. La possibilité d'utiliser le langage Rust dans le projet Mesa est discutée depuis 2020. Parmi les avantages de la prise en charge de Rust, on mentionne la sécurité et la qualité accrues des pilotes en raison de l'élimination des problèmes typiques lors du travail avec la mémoire, ainsi que la possibilité d'inclure des développements tiers dans Mesa, tels que Kazan (une implémentation de Vulkan dans Rouille). Les inconvénients incluent une complexité accrue du système de construction, la réticence à être liée au système de package cargo, des exigences étendues pour l'environnement de construction et la nécessité d'inclure le compilateur Rust dans les dépendances de construction requises pour créer des composants de bureau clés sous Linux.

Source: opennet.ru

Ajouter un commentaire