Die neue, in Rust geschriebene OpenCL-Implementierung (rusticl), die fĂŒr das Mesa-Projekt entwickelt wird, hat die CTS-Testsuite (Kronos Conformance Test Suite) erfolgreich bestanden, die vom Khronos-Konsortium zur Bewertung der KompatibilitĂ€t mit den OpenCL 3.0-Spezifikationen verwendet wird. Entwickelt wird das Projekt von Karol Herbst von Red Hat, der an der Entwicklung von Mesa, dem Nouveau-Treiber und dem OpenCL Open Stack beteiligt ist. Es wird darauf hingewiesen, dass Carol Khronos bezĂŒglich der offiziellen Zertifizierung der OpenCL 3.0-UnterstĂŒtzung in Rusticl kontaktiert hat.
Die Tests wurden auf einem System mit einer Intel-GPU der 12. Generation (Alder Lake) durchgefĂŒhrt. Die Arbeiten wurden mit dem Mesa-Iris-Treiber durchgefĂŒhrt, das Projekt soll aber auch mit anderen Mesa-Treibern funktionieren, die die typlose Zwischendarstellung (IR) von NIR-Shadern nutzen. Der Antrag auf Fusion von Rusticle mit Mesa wird noch geprĂŒft und es wurde noch keine Entscheidung darĂŒber getroffen, ob Rust-Code in Mesa aufgenommen werden soll. Bevor Rusticl in die Hauptkomposition von Mesa aufgenommen wird, können Sie einen separaten Zweig zum Erstellen verwenden. Beim Kompilieren sollten Sie die Build-Parameter â-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=â angeben WAHR".
Rusticle fungiert als Analogon zu Mesas OpenCL-Frontend Clover und wird ebenfalls unter Verwendung der in Mesa bereitgestellten Gallium-Schnittstelle entwickelt. Der Clover-Anteil wurde lange Zeit aufgegeben und Rusticl wird als zukĂŒnftiger Ersatz positioniert. Neben der Erreichung der OpenCL 3.0-KompatibilitĂ€t unterscheidet sich das Rusticle-Projekt von Clover durch die UnterstĂŒtzung von OpenCL-Erweiterungen fĂŒr die Bildverarbeitung, unterstĂŒtzt jedoch noch nicht das FP16-Format.
Rusticl verwendet rust-bindgen, um Bindungen fĂŒr Mesa und OpenCL zu generieren. Dadurch können Rust-Funktionen aus C-Code aufgerufen werden und umgekehrt. Die Möglichkeit, Rust im Mesa-Projekt einzusetzen, wird seit 2020 diskutiert. Zu den Vorteilen der Rust-UnterstĂŒtzung zĂ€hlen erhöhte Treibersicherheit und -qualitĂ€t durch die Beseitigung hĂ€ufiger Speicherprobleme sowie die Möglichkeit, Drittanbieterentwicklungen wie Kazan (eine Rust-Implementierung von Vulkan) in Mesa zu integrieren. Nachteile sind die erhöhte KomplexitĂ€t des Build-Systems, die ZurĂŒckhaltung gegenĂŒber dem Cargo-Paketierungssystem, erweiterte Anforderungen an die Build-Umgebung und die Notwendigkeit, den Rust-Compiler in die Build-AbhĂ€ngigkeiten fĂŒr die Erstellung wichtiger Desktop-Komponenten aufzunehmen. Linux.
Source: opennet.ru
