Ya fueron dadas a conocer las especificaciones finales de OpenCL 3.0

Hace algunos meses compartimos aquí en el blog la noticia de la publicación del desarrollo de OpenCL 3.0 por parte de Khronos Concern (responsable del desarrollo de especificaciones para la familia OpenGL, Vulkan y OpenCL).

Y fue hasta hace poco que se anunció la publicación de las especificaciones finales de OpenCL 3.0, definiendo API y extensiones del lenguaje C para organizar computación paralela multiplataforma usando CPUs multi-core, GPUs, FPGAs, DSPs y otros chips especializados desde los que se utilizan en supercomputadoras y servidores en la nube hasta chips que se pueden encontrar en dispositivos móviles y tecnología integrada.

Al mismo tiempo, se publicó un SDK OpenCL de código abierto con herramientas, ejemplos, documentación, archivos de encabezado, enlaces para bibliotecas C ++ y C para desarrollar aplicaciones compatibles con OpenCL 3.0.

También se presenta la implementación inicial de OpenCL 3.0 basada en el compilador Clang, que se encuentra en la etapa de revisión por pares para su inclusión en el paquete principal LLVM. Empresas como IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments y Toshiba han contribuido al estándar.

Hoy, el Grupo de Trabajo de Khronos® OpenCL ™ se complace en anunciar el lanzamiento de las especificaciones de OpenCL 3.0 finalizadas , incluida una nueva especificación de lenguaje OpenCL C 3.0 unificada, junto con una versión inicial temprana de un SDK de OpenCL de Khronos para permitir a los desarrolladores levantarse rápidamente acelerar con OpenCL.

Principales características de OpenCL 3.0

La API de OpenCL 3.0 ahora cubre todas las versiones de OpenCL (1.2, 2.x), sin proporcionar especificaciones separadas para cada versión.

OpenCL 3.0 ofrece la capacidad de ampliar la funcionalidad principal mediante 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.

Solo la funcionalidad que cumple con OpenCL 1.2 se declara obligatoria, y todas las características propuestas en las especificaciones de OpenCL 2.x se denominan opcionales.

Este enfoque simplificará la creación de implementaciones especializadas que sean compatibles con OpenCL 3.0 y ampliará la gama de dispositivos en los que se puede utilizar OpenCL 3.0.

Por ejemplo, los fabricantes pueden implementar soporte para OpenCL 3.0 sin implementar características específicas de OpenCL 2.x. Para acceder a las funciones de lenguaje opcionales, se ha agregado un sistema de solicitud de prueba a OpenCL 3.0 para evaluar la compatibilidad con elementos de API individuales, así como macros especiales.

La unificación con especificaciones publicadas anteriormente facilita la traducción de aplicaciones a OpenCL 3.0. Las aplicaciones OpenCL 1.2 podrán ejecutarse en dispositivos que admitan OpenCL 3.0 sin modificaciones.

Las aplicaciones OpenCL 2.x tampoco requieren cambios de código, pero si el entorno OpenCL 3.0 proporciona la funcionalidad necesaria (para la portabilidad futura, se recomienda a las aplicaciones OpenCL 2.x que agreguen consultas de prueba para evaluar la compatibilidad con las características de OpenCL 2.x que se están utilizando).

Los desarrolladores de controladores con implementaciones de OpenCL pueden actualizar fácilmente sus productos a OpenCL 3.0 agregando solo el procesamiento de solicitudes para ciertas llamadas de API y aumentar gradualmente la funcionalidad con el tiempo.

La especificación OpenCL 3.0 se ha alineado con el entorno, las extensiones y las especificaciones del intermedio genérico SPIR-V, que también se utiliza en la API de Vulkan. El soporte para la especificación SPIR-V 1.3 se incluye en el OpenCL 3.0 principal como una característica opcional. Se ha agregado soporte para operaciones con subgrupos mediante el uso de la representación intermedia SPIR-V para núcleos de cómputo.

Además de que se agregó soporte para una extensión para realizar operaciones DMA asíncronas admitidas en chips DMA similares a DSP.

La DMA asincrónica hace posible utilizar transacciones DMA para transferir datos entre la memoria global y local de forma asincrónica, en paralelo con los cálculos en curso u otras transferencias de datos.

La especificación de las extensiones de programación paralela para el lenguaje C se ha actualizado a la versión 3.0 y el desarrollo de las extensiones del lenguaje OpenCL para C ++ se interrumpe en favor del proyecto «C ++ para OpenCL».

Para traducir OpenCL a través de la API de Vulkan , se propone el compilador clspv, que convierte los kernels de OpenCL a la representación Vulkan SPIR-V, y la capa clvk para garantizar que la API de OpenCL funcione sobre Vulkan.

Fuente: https://www.khronos.org/


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.