Presentación da especificación OpenCL 3.0

A empresa Khronos, responsable do desenvolvemento das especificacións da familia OpenGL, Vulkan e OpenCL, anunciou sobre a finalización do desenvolvemento das especificacións OpenCL 3.0 que definen API e extensións da linguaxe C para organizar a computación paralela multiplataforma mediante CPUs multi-núcleo, GPU, FPGA, DSP e outros chips especializados, a partir dos utilizados en supercomputadoras e servidores na nube. aos chips que se poden atopar en dispositivos móbiles e tecnoloxía integrada. O estándar OpenCL está completamente aberto e non require taxas de licenza. No traballo sobre o estándar participaron empresas como IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments e Toshiba.

Na fase actual, a especificación ten asignado o estado provisional, o que implica a posibilidade de perfeccionamento en función da retroalimentación enviada a través de GitHub. Unha vez que se teñan en conta os comentarios, finalizarase a especificación e publicarase unha suite de probas final para probar a compatibilidade das implementacións existentes.

Presentación da especificación OpenCL 3.0

O máis salientable Características OpenCL 3.0:

  • A API de OpenCL 3.0 cobre agora todas as versións de OpenCL (1.2, 2.x), sen proporcionar especificacións separadas para cada versión. OpenCL 3.0 ofrece a posibilidade de estender a funcionalidade básica mediante a integración de especificacións adicionais que se colocarán en capas en forma de opcións sen bloquear a natureza monolítica de OpenCL 1.2/2.X.
  • Só se declara obrigatoria a funcionalidade que cumpra con OpenCL 1.2 e todas as funcións propostas nas especificacións de OpenCL 2.x clasifícanse como opcionais. Este enfoque facilitará a creación de implementacións personalizadas compatibles con OpenCL 3.0 e ampliará a gama de dispositivos nos que se pode usar OpenCL 3.0. Por exemplo, os fabricantes poden implementar compatibilidade con OpenCL 3.0 sen implementar funcións específicas de OpenCL 2.x. Para acceder ás funcións opcionais do idioma, OpenCL 3.0 engadiu un sistema de consultas de proba que lle permite avaliar a compatibilidade de elementos individuais da API, así como macros especiais.
  • A unificación con especificacións publicadas anteriormente facilita a migración de aplicacións a OpenCL 3.0. As aplicacións OpenCL 1.2 poderán executarse en dispositivos compatibles con OpenCL 3.0 sen modificación. As aplicacións OpenCL 2.x tampouco requirirán cambios de código, sempre que o ambiente OpenCL 3.0 proporcione a funcionalidade necesaria (para garantir a portabilidade futura, recoméndase que as aplicacións OpenCL 2.x engadan consultas de proba para avaliar a compatibilidade coas funcións OpenCL 2.x). sendo utilizado). Os desenvolvedores de controladores con implementacións de OpenCL poden actualizar facilmente os seus produtos a OpenCL 3.0, engadindo só procesamento de consultas para determinadas chamadas de API e aumentando gradualmente a funcionalidade co paso do tempo.
  • A especificación OpenCL 3.0 está aliñada co entorno, as extensións e as especificacións da representación intermedia xenérica SPIR-V, que tamén utiliza a API de Vulkan. O soporte para a especificación SPIR-V 1.3 inclúese no núcleo OpenCL 3.0 como función opcional. Mediante o uso dunha representación intermedia SPIR-V engadiuse soporte para operacións con subgrupos para núcleos de computación.
    Presentación da especificación OpenCL 3.0

  • Engadido soporte para unha extensión para realizar operacións DMA asíncronas (Asynchronous DMA), compatible con chips tipo DSP con acceso directo á memoria. A DMA asíncrona permite utilizar transaccións DMA para transferir datos entre a memoria global e local de forma asíncrona, en paralelo con cálculos ou outras operacións de transferencia de datos.
  • Actualizouse a especificación de extensións de programación paralela C versión 3.0, e o desenvolvemento de extensións da linguaxe OpenCL para C++ foi detido en favor do proxecto "C++ para OpenCL". C++ para OpenCL é un compilador baseado en Clang/LLVM e emisión Núcleos C++ e OpenCL C en representación intermedia SPIR-V ou código máquina de baixo nivel. A través da difusión, SPIR-V tamén organiza a montaxe de aplicacións C++ utilizando a biblioteca de modelos SYCL, que simplifica a creación de aplicacións paralelas.

    Presentación da especificación OpenCL 3.0

  • Propúxose un compilador para transmitir OpenCL a través da API Vulkan clspv, que converte os núcleos OpenCL nunha representación Vulkan SPIR-V e unha capa clvk para permitir que a API OpenCL funcione enriba de Vulkan.

    Presentación da especificación OpenCL 3.0

Fonte: opennet.ru

Engadir un comentario