El soporte de OpenCL es un aspecto que incluso hoy en día se le sigue atragantando a Mesa, la pila gráfica encargada de suministrar los drivers del espacio de usuario. Los soportes de OpenGL y Vulkan son muy buenos desde hace tiempo, pero la cosa cambia bastante y para peor cuando se trata de OpenCL.
OpenCL es un framework de computación paralela desarrollado por Khronos Group (la misma institución responsable de OpenGL y Vulkan) que permite escribir programas que se ejecutan en plataformas heterogéneas, las cuales pueden consistir en CPU, GPU, procesadores de señales digitales (DSP), matrices de puertas lógicas programable en campo (FPGA) y otros procesadores o aceleradores de hardware. Por lo general es usado en sectores profesionales, pudiendo ser empleado, por ejemplo, en DaVinci Resolve, y tiene en el CUDA de NVIDIA a su principal rival.
Si bien Mesa tiene un driver de OpenCL hecho para funcionar con gráficas Radeon, este muestra un rendimiento muy pobre, así que al final, para emplear el framework, hay que usar ROCm en gráficas Radeon o el driver privativo de NVIDIA (veremos hasta dónde llega Intel con IGC). El primero es de código abierto (MIT), pero pocas distribuciones lo empaquetan por completo, mientras que el segundo sobra decir que es privativo. En consecuencia, es probable que el usuario se vea limitado a la hora elegir distribución para lidiar con OpenCL.
Afortunadamente, puede que en un futuro no muy lejano la cosa empiece a cambiar, ya que desde hace tiempo está en desarrollo Rusticl, un driver de OpenCL 3 que, de cumplirse con la programación prevista, tendría que ser introducido oficialmente en el futuro Mesa 22.3. Está escrito en Rust, ese lenguaje que tan de moda está últimamente, y según ha publicado Karol Herbst, empleada de Red Hat que trabaja en su desarrollo, ha superado en rendimiento a ROCm sobre una GPU RDNA 2.
ROCm: 36108
— 🐧🦀karolherbst🦀🐧 (@karolherbst) October 14, 2022
Rusticl: 37423
I should start optimizing stuff before @AMD closes the gap... pic.twitter.com/RPp0hGvGtm
Eso sí, es importante tener en cuenta que ROCm no solo proporciona soporte de OpenCL, sino también otras características relacionadas con la computación a nivel de GPU como HIP, con el que AMD pretende soportar CUDA. Pese a todo, Rusticl es una pequeña puerta a la esperanza, aunque aquí habrá que ver si las soluciones que se apoyan en OpenCL deciden soportarlo.
OpenCL, al contrario que OpenGL y Vulkan, raras veces es necesario para el usuario común, pero su correcto soporte a través de Mesa puede contribuir a su democratización y la libertad de elección por parte del usuario.
Fuente: muylinux