Se introduce la especificación OpenCL 3.0

El consorcio Khronos, responsable del desarrollo de las especificaciones de las familias OpenGL, Vulkan y OpenCL, объявил sobre la finalización del desarrollo de las especificaciones OpenCL 3.0 que definen API y extensiones del lenguaje C para organizar la computación paralela multiplataforma utilizando CPU, GPU, FPGA, DSP y otros chips de múltiples núcleos, de los utilizados en supercomputadoras y servidores en la nube. a chips que se pueden encontrar en dispositivos móviles y tecnología integrada. El estándar OpenCL es completamente abierto y no requiere pagos de licencia. En el trabajo sobre el estándar participaron empresas como IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments y Toshiba.

En la etapa actual, a la especificación se le ha asignado un estado provisional, lo que implica la posibilidad de perfeccionarlo en función de los comentarios enviados a través de GitHub. Una vez que se tengan en cuenta los comentarios, se finalizará la especificación y se publicará un conjunto de pruebas final para probar la compatibilidad de las implementaciones existentes.

Se introduce la especificación OpenCL 3.0

Lo mas notable Características OpenCL 3.0:

  • La API 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 proporciona 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.
  • Sólo se declara obligatoria la funcionalidad que cumple con OpenCL 1.2, y todas las características propuestas en las especificaciones de OpenCL 2.x se clasifican como opcionales. Este enfoque facilitará la creación de implementaciones personalizadas 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 la compatibilidad con OpenCL 3.0 sin implementar funciones específicas de OpenCL 2.x. Para acceder a funciones de lenguaje opcionales, OpenCL 3.0 ha agregado un sistema de consultas de prueba que le permite evaluar el soporte de elementos API individuales, así como macros especiales.
  • La unificación con especificaciones publicadas anteriormente facilita la migración de aplicaciones a OpenCL 3.0. Las aplicaciones OpenCL 1.2 podrán ejecutarse en dispositivos compatibles con OpenCL 3.0 sin modificaciones. Las aplicaciones OpenCL 2.x tampoco requerirán cambios de código, siempre que el entorno OpenCL 3.0 proporcione la funcionalidad requerida (para garantizar la portabilidad futura, se recomienda que las aplicaciones OpenCL 2.x agreguen consultas de prueba para evaluar la compatibilidad con las funciones de OpenCL 2.x). siendo utilizado). Los desarrolladores de controladores con implementaciones de OpenCL pueden actualizar fácilmente sus productos a OpenCL 3.0, agregando solo procesamiento de consultas para ciertas llamadas API y aumentando gradualmente la funcionalidad con el tiempo.
  • La especificación OpenCL 3.0 está alineada 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. La compatibilidad con la especificación SPIR-V 1.3 se incluye en el núcleo OpenCL 3.0 como característica opcional. Mediante el uso de una representación intermedia. ESPIR-V Se ha agregado soporte para operaciones con subgrupos para núcleos informáticos.
    Se introduce la especificación OpenCL 3.0

  • Se agregó soporte para una extensión para realizar operaciones DMA asíncronas (Asynchronous DMA), compatible con chips tipo DSP con acceso directo a la memoria. DMA asíncrono hace posible utilizar transacciones DMA para transferir datos entre la memoria global y local de forma asíncrona, en paralelo con cálculos u otras operaciones de transferencia de datos.
  • La especificación C Parallel Programming Extensions se ha actualizado para versión 3.0, y se suspendió el desarrollo de extensiones del lenguaje OpenCL para C++ en favor del proyecto “C++ para OpenCL”. C++ para OpenCL es un compilador basado en Clang/LLVM y radiodifusión Kernels C++ y OpenCL C en representación intermedia SPIR-V o código de máquina de bajo nivel. A través de la transmisión, SPIR-V también organiza el ensamblaje de aplicaciones C++ utilizando la biblioteca de plantillas SYCL, que simplifica la creación de aplicaciones paralelas.

    Se introduce la especificación OpenCL 3.0

  • Se ha propuesto un compilador para transmitir OpenCL a través de la API de Vulkan. clspv, que convierte los núcleos OpenCL en una representación Vulkan SPIR-V y una capa clvk para permitir que la API OpenCL funcione sobre Vulkan.

    Se introduce la especificación OpenCL 3.0

Fuente: opennet.ru

Añadir un comentario