In der auf Rust basierenden OpenCL-Implementierung für Mesa wird die Unterstützung von OpenCL 3.0 ermöglicht.

Die für das Mesa-Projekt entwickelte neue Implementierung von OpenCL (rusticl), die in Rust geschrieben wurde, hat erfolgreich eine Reihe von CTS-Tests (Kronos Conformance Test Suite) bestanden, die vom Khronos-Konsortium zur Bewertung der Kompatibilität mit den OpenCL 3.0-Spezifikationen verwendet werden. Das Projekt wird von Karol Herbst von Red Hat geleitet, der an der Entwicklung von Mesa, dem Nouveau-Treiber und dem offenen OpenCL-Stack beteiligt ist. Karol hat sich mit Khronos in Verbindung gesetzt, um die offizielle Zertifizierung der Unterstützung von OpenCL 3.0 in rusticl zu erfragen.

Die Tests wurden auf einem System mit einem 12. Generation GPU Intel (Alder Lake) durchgeführt. Die Arbeit wurde unter Verwendung des Mesa-Treibers Iris durchgeführt, aber das Projekt sollte auch mit anderen Mesa-Treibern funktionieren, die das typelose Intermediate Representation (IR) der NIR-Shader verwenden. Der Merge-Antrag für Rusticl mit Mesa befindet sich derzeit in der Prüfung, und eine Entscheidung über die Einbindung von Rust-Code in Mesa wurde noch nicht getroffen. Bis Rusticl in die Hauptentwicklung von Mesa aufgenommen wird, kann eine separate Branch für den Build verwendet werden, wobei bei der Kompilierung die Build-Parameter „-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=true“ angegeben werden sollten.

Rusticl fungiert als das Pendant zum in Mesa vorhandenen OpenCL-Frontend Clover und wurde ebenfalls unter Verwendung der von Mesa bereitgestellten Gallium-Schnittstelle entwickelt. Clover befindet sich seit langem in einem vernachlässigten Zustand, und Rusticl wird als dessen zukünftiger Ersatz positioniert. Neben der Erreichung der Kompatibilität mit OpenCL 3.0 zeichnet sich das Rusticl-Projekt durch die Unterstützung von OpenCL-Erweiterungen für die Bildverarbeitung aus, unterstützt jedoch derzeit noch nicht das FP16-Format.

Für die Generierung von Bindings für Mesa und OpenCL, die es ermöglichen, Rust-Funktionen aus C-Code und umgekehrt aufzurufen, kommt in Rusticl rust-bindgen zum Einsatz. Die Möglichkeit, die Programmiersprache Rust im Mesa-Projekt zu nutzen, wird seit 2020 diskutiert. Vorteile der Rust-Unterstützung sind die Erhöhung der Sicherheit und Qualität von Treibern durch die Beseitigung typischer Probleme im Umgang mit dem Speicher sowie die Möglichkeit, externe Entwicklungen wie Kazan (eine Vulkan-Implementierung in Rust) in Mesa zu integrieren. Zu den Nachteilen gehören die Komplexität des Build-Systems, die Abhängigkeit von der Paketverwaltung cargo, erweiterte Anforderungen an die Build-Umgebung und die Notwendigkeit, den Rust-Compiler in die Build-Abhängigkeiten aufzunehmen, die für den Bau wesentlicher Komponenten des Desktops in Linux erforderlich sind.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster