Foi apresentada uma versão do projeto PoCL 3.0 (Portable Computing Language OpenCL), que desenvolve uma implementação do padrão OpenCL independente de fabricantes de aceleradores gráficos e permite a utilização de diversos backends para execução de kernels OpenCL em diferentes tipos de gráficos e centrais. processadores. O código do projeto é distribuído sob a licença do MIT. Suporta trabalho em plataformas X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA e vários processadores especializados ASIP (Application-Specific Instruction-set Processor) e TTA (Transport Triggered Architecture) com arquitetura VLIW.
A implementação do compilador de kernel OpenCL é construída com base no LLVM e o Clang é usado como front end para OpenCL C. Para garantir portabilidade e desempenho adequados, o compilador do kernel OpenCL pode gerar funções combinadas que podem usar vários recursos de hardware para paralelizar a execução de código, como VLIW, superescalar, SIMD, SIMT, multi-core e multi-threading. Há suporte para drivers ICD (driver de cliente instalável). Existem backends para suportar operação via CPU, ASIP (TCE/TTA), GPU baseada na arquitetura HSA e GPU NVIDIA (via libcuda).
Na nova versão:
- O conjunto mínimo de recursos necessários para suportar a especificação OpenCL 3.0 foi implementado. Atualmente, o suporte ao OpenCL 3.0 está disponível apenas em back-ends baseados em CPU com LLVM 14 (outros back-ends e versões mais antigas do LLVM fornecem suporte para OpenCL 1.2).
- Adicionado suporte para Clang/LLVM 14.
- Rastreamento e visualização aprimorados.
- Adicionado suporte para gerar grupos especializados de funções e incluí-los em arquivos executáveis com kernels OpenCL.
Fonte: opennet.ru