Especificação OpenCL 3.0 introduzida

A preocupação Khronos, responsável pelo desenvolvimento das especificações da família OpenGL, Vulkan e OpenCL, объявил sobre a conclusão do desenvolvimento das especificações OpenCL 3.0 que definem APIs e extensões da linguagem C para organizar a computação paralela multiplataforma usando CPUs multi-core, GPUs, FPGAs, DSPs e outros chips especializados, daqueles usados ​​em supercomputadores e servidores em nuvem aos chips que podem ser encontrados em dispositivos móveis e tecnologia embarcada. O padrão OpenCL é totalmente aberto e não exige taxas de licença. Empresas como IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments e Toshiba participaram do trabalho no padrão.

No estágio atual, a especificação recebeu status provisório, o que implica a possibilidade de refinamento com base no feedback enviado via GitHub. Uma vez levados em consideração os comentários, a especificação será finalizada e um conjunto de testes final será publicado para testar a compatibilidade das implementações existentes.

Especificação OpenCL 3.0 introduzida

Mais notável características OpenCL 3.0:

  • A API OpenCL 3.0 agora cobre todas as versões do OpenCL (1.2, 2.x), sem fornecer especificações separadas para cada versão. O OpenCL 3.0 oferece a capacidade de estender a funcionalidade principal por meio da integração de especificações adicionais que serão colocadas em camadas na forma de opções sem bloquear a natureza monolítica do OpenCL 1.2/2.X.
  • Somente funcionalidades que estejam em conformidade com o OpenCL 1.2 são declaradas obrigatórias, e todos os recursos propostos nas especificações do OpenCL 2.x são classificados como opcionais. Essa abordagem facilitará a criação de implementações personalizadas compatíveis com OpenCL 3.0 e expandirá a gama de dispositivos nos quais o OpenCL 3.0 pode ser usado. Por exemplo, os fabricantes podem implementar suporte ao OpenCL 3.0 sem implementar recursos específicos do OpenCL 2.x. Para acessar recursos opcionais de linguagem, o OpenCL 3.0 adicionou um sistema de consultas de teste que permite avaliar o suporte de elementos API individuais, bem como macros especiais.
  • A unificação com especificações lançadas anteriormente facilita a migração de aplicações para OpenCL 3.0. Os aplicativos OpenCL 1.2 poderão ser executados em dispositivos que suportam OpenCL 3.0 sem modificação. Os aplicativos OpenCL 2.x também não exigirão alterações de código, desde que o ambiente OpenCL 3.0 forneça a funcionalidade necessária (para garantir a portabilidade futura, recomenda-se que os aplicativos OpenCL 2.x adicionem consultas de teste para avaliar o suporte aos recursos do OpenCL 2.x sendo usado). Os desenvolvedores de drivers com implementações OpenCL podem facilmente atualizar seus produtos para OpenCL 3.0, adicionando apenas processamento de consultas para determinadas chamadas de API e aumentando gradualmente a funcionalidade ao longo do tempo.
  • A especificação OpenCL 3.0 está alinhada com o ambiente, extensões e especificações da representação intermediária genérica SPIR-V, que também é usada pela API Vulkan. O suporte para a especificação SPIR-V 1.3 está incluído no núcleo do OpenCL 3.0 como um recurso opcional. Através do uso de uma representação intermediária SPIR-V foi adicionado suporte para operações com subgrupos para núcleos de computação.
    Especificação OpenCL 3.0 introduzida

  • Adicionado suporte para uma extensão para execução de operações DMA assíncronas (Asynchronous DMA), suportadas em chips do tipo DSP com acesso direto à memória. O DMA assíncrono possibilita o uso de transações DMA para transferir dados entre a memória global e local de forma assíncrona, em paralelo com cálculos ou outras operações de transferência de dados.
  • A especificação C Parallel Programming Extensions foi atualizada para versão 3.0, e o desenvolvimento de extensões de linguagem OpenCL para C++ foi descontinuado em favor do projeto “C++ para OpenCL”. C++ para OpenCL é um compilador baseado em Clang/LLVM e transmissão Kernels C++ e OpenCL C em representação intermediária SPIR-V ou código de máquina de baixo nível. Através da transmissão, o SPIR-V também organiza a montagem de aplicações C++ utilizando a biblioteca de templates SYCL, o que simplifica a criação de aplicações paralelas.

    Especificação OpenCL 3.0 introduzida

  • Um compilador foi proposto para transmitir OpenCL através da API Vulkan clspv, que converte kernels OpenCL em uma representação Vulkan SPIR-V e uma camada clvk para permitir que a API OpenCL funcione no Vulkan.

    Especificação OpenCL 3.0 introduzida

Fonte: opennet.ru

Adicionar um comentário