Saltar al contenido
ᐅ HielosMendez – Información digital que te dejara helado 🧊🥶

OpenCL 3.0 comienza con un enorme paso atrás

OpenCL, una vez alabado como el futuro de la computación GPGPU, ha desaparecido más recientemente del centro de atención. La mayoría de las empresas de PC que lo apoyaron han encontrado razones para perseguir otros objetivos: Apple tiene su propia API Metal, Nvidia tiene la CUDA de creación propia y de éxito fenomenal, y AMD se ha centrado en Linux y su solución RoCm. Intel parece ser la única empresa que trabaja en sus controladores y soporte OpenCL de forma constante.

Aun así, el estándar OpenCL 2.2, que se publicó en 2017, aún no es compatible con proveedor en toda la industria informática. No es una buena señal cuando no puede encontrar una sola empresa que respalde su estándar tres años después de publicarlo, y Khronos Group está adoptando un enfoque radical para el desarrollo de OpenCL 3.0. Específicamente, están descartando OpenCL 2.0 y volviendo a una bifurcación del desarrollo de OCL 1.2.

Para ser claros, el código y la capacidad de OCL 2.xy no se eliminarán del estándar, simplemente se convertirán en una forma opcional de admitir hardware OCL. Todas las funciones introducidas hasta OpenCL 2.2 permanecerán disponibles para cualquier proveedor que desee escribir un controlador para admitirlas. La razón por la que el nuevo estándar se basa en OpenCL 1.2 es que esta es la última versión en la que todos están de acuerdo que contiene funciones absolutamente necesarias para admitir la totalidad de los casos de uso del estándar. El acuerdo es importante en este caso porque Khronos es un consorcio compuesto por varias organizaciones miembros, pero no ejerce ningún poder propio.

Aparte de las capacidades centrales de OCL 1.2, todo lo que se introduzca en el estándar en OCL 2.xy 3.0 será opcional. Cada proveedor podrá admitir capacidades específicas que tengan sentido para su hardware, pero no existen restricciones de «talla única» como las que llevaron a los proveedores a alejarse del estándar en primer lugar. Este nuevo enfoque se basa en la forma en que Khronos lanzó Vulkan, y OCL 3.0 será fácil de admitir para los desarrolladores. Todas las aplicaciones OpenCL 1.2 se ejecutarán perfectamente en un dispositivo OpenCL 3.0 y las aplicaciones OpenCL 2.x se ejecutarán perfectamente en dispositivos OCL 3.0 siempre que esos dispositivos sean compatibles con las funciones que utiliza la aplicación. Si tiene una aplicación OCL 1.2 o 2.x, no tiene que preocuparse de que OCL 3.0 afecte su compatibilidad con versiones anteriores.

Aquellos de ustedes que esperaban ver que OpenCL C ++ se pusiera al día, sin embargo … tenemos malas noticias. El idioma se está desechando por completo. Será reemplazado por «C ++ para OpenCL», que es similar a OpenCL C ++, pero distinto de él y se ejecuta bajo los auspicios de un proyecto diferente.

La gran característica nueva del estándar es la compatibilidad con DMA asíncrono, que permite que las transacciones DMA se ejecuten al mismo tiempo que los núcleos de cálculo o de forma sincrónica con otras transacciones DMA.

Anandtech tiene más detalles sobre las características y capacidades de bajo nivel que se agregan al estándar si desea leer más sobre el tema. No está claro que esta nueva versión de OpenCL marque una diferencia real para la industria de las PC, especialmente para los usuarios de Windows. A pesar del hecho de que aplicaciones como Folding @ Home y Blender usan OpenCL para varios propósitos (Blender lo usa para renderizar Cycles en GPUs AMD, por ejemplo), ninguno de los principales proveedores parece estar poniendo el lenguaje al frente y al centro de sus planes futuros. aunque esto podría cambiar una vez que Intel lance la versión de centro de datos de Xe.