Especificações finais do OpenCL 3.0 publicadas

A preocupação Khronos, responsável pelo desenvolvimento das especificações da família OpenGL, Vulkan e OpenCL, объявил na publicação das especificações finais OpenCL 3.0, definindo 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, desde aqueles usados ​​em supercomputadores e servidores em nuvem até chips que podem ser encontrados em dispositivos móveis e tecnologia incorporada. O padrão OpenCL é totalmente aberto e não exige taxas de licença.

Simultaneamente publicado abra OpenCL SDK com ferramentas, exemplos, documentação, arquivos de cabeçalho, ligações C++ e bibliotecas C para desenvolver aplicativos compatíveis com OpenCL 3.0. Também é apresentado implementação inicial do OpenCL 3.0 baseado no compilador Clang, que está em fase de revisão de patches para inclusão na estrutura principal do LLVM. Empresas como IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments e Toshiba participaram do trabalho no padrão.

Especificações finais do OpenCL 3.0 publicadas

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ções finais do OpenCL 3.0 publicadas

  • 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ções finais do OpenCL 3.0 publicadas

  • 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ções finais do OpenCL 3.0 publicadas

Fonte: opennet.ru

Adicionar um comentário