Ubunlog Darkcrizt  

Rusticl ya está certificado y es compatible con OpenCL 3.0

Rust-2

El controlador Rusticl de Mesa ha logrado superar con exito las pruebas Conformance Test Suite (CTS)

Los desarrolladores del proyecto Mesa anunciaron la certificación del controlador rusticl por parte de la organización Khronos, que superó con éxito todas las pruebas del CTS (Kronos Conformance Test Suite) y fue reconocido como totalmente compatible con la especificación OpenCL 3.0, que define la API y extensiones del lenguaje C para organizar la computación paralela multiplataforma.

Con ello se ha logrado la obtención de un certificado que permite declarar oficialmente la compatibilidad con los estándares y utilizar las marcas comerciales de Khronos asociadas a ellos.

El controlador está escrito en Rust y desarrollado por Karol Herbst de Red Hat, quien participa en el desarrollo de Mesa, el controlador Nouveau y la pila abierta de OpenCL.

Rusticl supera todas las pruebas CTS

Rusticl se acaba de convertir en el primer código Rust dentro de Mesa, con implementación de OpenCL que se fusionó recientemente en la versión de Mesa 22.3 y cabe mencionar que la prueba se realizó en un sistema con una GPU Intel integrada de 12.ª generación utilizando el controlador Gallium3D Iris.

Para quienes desconocen del controlador, Rusticl deben saber que este actúa como una contraparte de la interfaz OpenCL Clover de Mesa y también se desarrolla utilizando la interfaz Gallium de Mesa. Clover lleva mucho tiempo en estado de abandono y rusticl se posiciona como su futuro reemplazo. Además de lograr la compatibilidad con OpenCL 3.0, el proyecto Rusticl se diferencia de Clover en que admite extensiones OpenCL para el procesamiento de imágenes, pero aún no admite el formato FP16.

Rusticl usa rust-bindgen para generar enlaces para Mesa y OpenCL que permiten llamar a las funciones de Rust desde el código C y viceversa. La posibilidad de usar el lenguaje Rust en el proyecto Mesa se discute desde 2020.

Entre las ventajas del soporte de Rust mencionan mejorar la seguridad y calidad de los drivers al eliminar problemas típicos cuando se trabaja con memoria, así como la posibilidad de incluir desarrollos de terceros en Mesa, como Kazan (una implementación de Vulkan en Rust). Entre las deficiencias, hay una complicación del sistema de compilación, la falta de voluntad para vincularse al sistema de paquetes de carga, un aumento en los requisitos para el entorno de compilación y la necesidad de incluir el compilador Rust en las dependencias de compilación que se requieren para construir componentes de escritorio clave en Linux.

El código para admitir el lenguaje Rust y el controlador rusticl han sido aceptados en la corriente principal de Mesa y se ofrecerán en el lanzamiento de Mesa 22.3, que se espera para fines de noviembre. La compatibilidad con Rust y Rusticl estará deshabilitada de forma predeterminada y requerirá compilación con opciones explícitas «-D gallium-rusticl=true -Dllvm=enabled -Drust_std=2021«.

Al compilar, se requieren el compilador rustc, bindgen, LLVM, SPIRV-Tools y SPIRV-LLVM-Translator como dependencias adicionales.

Cabe mencionar que la API de OpenCL 3.0 cubre todas las versiones de OpenCL (1.2, 2.x), sin proporcionar especificaciones separadas para cada versión. OpenCL 3.0 brinda la capacidad de ampliar la funcionalidad central a través de la integración de especificaciones adicionales que se superpondrán en forma de opciones sin bloquear la naturaleza monolítica de OpenCL 1.2/2.X.

Ademas de ello, la especificación OpenCL 3.0 se ha alineado con el entorno, las extensiones y las especificaciones de la representación intermedia genérica SPIR-V, que también utiliza la API de Vulkan. Con ello tambien se ha agregado compatibilidad con la especificación SPIR-V 1.3 al núcleo OpenCL 3.0 como característica opcional. Mediante el uso de la representación intermedia SPIR-V para núcleos computacionales, se ha agregado soporte para operaciones con subgrupos.

Finalmente, tambien vale la pena destacar el trabajo en el desarrollo del controlador Nouveau, también realizado por Carol Herbst. El controlador Nouveau agrega compatibilidad básica con OpenGL para GNU NVIDIA GeForce RTX 30xx basada en la microarquitectura Ampere lanzada desde mayo de 2020. Los cambios relacionados con la compatibilidad con nuevos chips se incluirán en el kernel de Linux 6.2 y Mesa 22.3.

Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.