PoCL 5 lançado com novo backend, melhorias e muito mais

E foi lançado o PoCL 5 com novo backend, melhorias e muito mais. Confira as novidades dessa importante atualização.

PoCL (Portable Computing Language) é uma implementação portátil de código aberto (licenciada pelo MIT) do padrão OpenC, além de ser uma implementação OpenCL de código aberto para vários dispositivos facilmente portável.

O objetivo principal deste projeto é melhorar a interoperabilidade da diversidade de dispositivos compatíveis com OpenCL, integrando-os em uma plataforma única e orquestrada centralmente.

Além disso, um dos principais objetivos de longo prazo é melhorar a portabilidade de desempenho dos programas OpenCL nos tipos de dispositivos que usam tempo de execução e técnicas de compilação.

Para os interessados ​​​​no projeto, saiba que o código do projeto é distribuído sob a licença MIT e o trabalho é suportado nas plataformas X86_64, MIPS32, ARM v7, AMD HSA APU e diversos processadores TTA especializados com arquitetura VLIW.

Agora, o lançamento da nova versão do PoCL 5.0 foi anunciado.

Novidades do PoCL 5

PoCL 5 lançado com novo backend, melhorias e muito mais
PoCL 5 lançado com novo backend, melhorias e muito mais

O lançamento da nova versão do PoCL 5.0 foi anunciado há poucos dias e entre as principais novidades que a nova versão apresenta, destaca-se um novo backend que permite o download de comandos OpenCL através de uma rede para um ou mais servidores, também é destaca melhorias no CUDA, melhorias de suporte e muito mais.

Como mencionado no início, a novidade mais importante é o novo backend “PoCL-Remote” que foi projetado para baixar comandos OpenCL através de uma rede para um ou mais servidores que executam o daemon ‘pocld’, incluído no PoCL.

Ao habilitar o suporte para OpenCL em outros sistemas de rede, o PoCL-Remote permite que você use OpenCL perfeitamente nesses hosts remotos.

É mencionado que, diferentemente das soluções de descarregamento de rede existentes para OpenCL, o PoCL-Remote usa a infraestrutura de gerenciamento de memória PoCL para rastrear objetos de memória e copiá-los apenas quando realmente necessário.

Quando é necessária uma migração de objetos de memória, o caminho mais eficiente para a transferência é automaticamente escolhido.

Outra novidade apresentada pela nova versão do PoCL 5.0 são os novos recursos adicionados ao driver NVIDIA CUDA para fornecer suporte parcial ao OpenCL 3.0.

O driver CUDA foi ampliado com novas funções para suportar recursos opcionais do OpenCL 3.0, diversas extensões essenciais para otimização execução no chipStar, bem como adição de operações atômicas OpenCL 2.x/3.x.

As melhorias de suporte incluem suporte para granulação fina SVM de granulação grossa, quando o dispositivo CUDA é compatível, bem como a introdução de suporte inicial para subgrupos: intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier, sub_group_ballot.

Além disso, nesta versão, o suporte para CPUs RISC-V foi aprimorado. PoCL foi testado no Starfive VisionFive 2 usando uma imagem Ubuntu 23.10 pré-instalada. Com LLVM 17 e GCC 13.2, 98% dos testes foram aprovados (apenas 4 testes de 253 falharam).

Das outras mudanças que se destacam nesta nova versão:

  • Numerosas melhorias adicionais foram implementadas no controlador da CPU, impulsionadas principalmente pelas necessidades do chipStar.
  • Implementação de cl_ext_float_atomics com suporte para FP32 e FP64.
  • Implementação de cl_khr_command_buffer atualizada para a versão 0.9.4.
    Back-end experimental de FPGA integrado à biblioteca do kernel.
  • Foi proposto um backend experimental AlmaIF para FPGAs que permite a reconfiguração transparente de FPGAs de diferentes fornecedores usando um banco de dados bitstream. Este trabalho faz parte de pesquisas em andamento e pode ser considerado um avanço significativo. O banco de dados com os bitstreams é gerado pelo projeto AFOCL.
  • Removido o suporte incompleto para renderização intermediária dos shaders SPIR 1.x/2.0. SPIR-V é declarado como a linguagem de sombreamento intermediária recomendada.
  • Habilite o suporte para FP16 e espaço de endereço genérico usando a entrada SPIR-V.
  • Adicionado suporte para Clang/LLVM 17.0.
  • Implementação de cl_ext_float_atomics (em FP32 + FP64) ao usar LLVM 17.
  • O suporte para Clang/LLVM 10-13 foi descontinuado.

Para saber mais sobre essa versão do PoCL, acesse a nota de lançamento.

Como instalar ou atualizar o PoCL

Para instalar a versão mais recente do PoCL nas principais distribuições Linux, acesse esta página:

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.