Foi lançado o projeto PoCL 3.0 (Portable Computing Language OpenCL), que desenvolve a 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, APU AMD HSA, GPU NVIDIA e vários processadores ASIP (Application-Specific Instruction-set Processor) e 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:
- Implementado um conjunto mínimo de funcionalidades exigido para suportar a especificação OpenCL 3.0. O suporte para OpenCL 3.0 está disponível apenas no backend baseado em CPU com LLVM 14 (em outros backends e com versões mais antigas do LLVM, o suporte é para OpenCL 1.2).
- Adicionado suporte ao Clang/LLVM 14.
- Melhorada a rastreabilidade e visualização.
- Adicionado suporte à geração de grupos de funções especializadas e inclusão delas em executáveis com núcleos OpenCL.
Fonte: opennet.ru
