Foi apresentada uma versão do projeto PoCL 3.1 (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:
- Adicionado suporte para Clang/LLVM 15.0.
- Suporte de representação intermediária de shader SPIR-V significativamente aprimorado para drivers de CPU e CUDA.
- O driver para hardware especializado (CL_DEVICE_TYPE_ACCELERATOR) e dispositivos personalizados (CL_DEVICE_TYPE_CUSTOM) que não suportam compilação online foi significativamente redesenhado. Os drivers accel e ttasim foram mesclados no novo driver AlmaIF.
- O trabalho continua no driver da API gráfica Vulkan.
- É proposta uma implementação básica da extensão cl_khr_command_buffer, que permite escrever uma sequência de comandos OpenCL para execução em uma chamada.
Fonte: opennet.ru