Foi lançado o projeto PoCL 5.0 (Portable Computing Language OpenCL), que desenvolve uma implementação do padrão OpenCL, independente dos fabricantes de aceleradores gráficos, permitindo o uso de diferentes backends para executar núcleos OpenCL em vários tipos de processadores gráficos e centrais. O código do projeto é distribuído sob a licença MIT. Suporta operação em plataformas X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU e diversos ASIP (Application-Specific Instruction-set Processor) e processadores TTA (Transport Triggered Architecture) com arquitetura VLIW.
A implementação do compilador de núcleos OpenCL é construída com base no LLVM, e o Clang é usado como frontend para OpenCL C. Para garantir a portabilidade e o desempenho adequados, o compilador de núcleos OpenCL pode gerar funções combinadas que podem utilizar diferentes recursos de hardware para paralelizar a execução do código, como VLIW, superescalaridade, SIMD, SIMT, multicores e multithreading. Há suporte para drivers ICD (Installable Client Driver). Existem backends para garantir operação via CPU, ASIP (TCE/TTA), GPU com arquitetura HSA e GPU NVIDIA (via libcuda).
Na nova versão:
- Foi implementado um novo backend "Remote", destinado à organização de computações distribuídas através da transferência do processamento de comandos OpenCL para outros hosts na rede, onde um processo em segundo plano pocld está em execução.
- No driver CUDA, foram implementadas funcionalidades adicionais e extensões do OpenCL 3.0, como operações atômicas, variáveis de escopo limitado, subgrupos intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier e sub_group_ballot.
- Foi aprimorado o suporte a CPUs baseadas na arquitetura RISC-V. O funcionamento do PoCL foi testado na placa Starfive VisionFive 2 com o ambiente Ubuntu 23.10, com LLVM 17 e GCC 13.2.
- Foi implementada a extensão cl_ext_float_atomics com suporte para FP32 e FP64.
- A implementação da extensão cl_khr_command_buffer foi atualizada para a versão 0.9.4.
- Foi proposto um backend experimental AlmaIF para FPGA.
- Foi removido o suporte inacabado ao intermediário de shaders SPIR 1.x/2.0. O SPIR-V foi declarado como o idioma intermediário de shaders recomendado.
- Adicionada a suporte para Clang/LLVM 17.0. O suporte para Clang/LLVM 10-13 foi declarado obsoleto.
Fonte: opennet.ru
