Preséntase o lanzamento do proxecto PoCL 3.1 (Portable Computing Language OpenCL), que desenvolve unha implementación do estándar OpenCL independente dos fabricantes de aceleradores gráficos e que permite o uso de varios backends para executar núcleos OpenCL en diferentes tipos de gráficos e procesadores centrais. . O código do proxecto distribúese baixo a licenza MIT. Admite o traballo en plataformas X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU e varios procesadores especializados ASIP (Application-Specific Instruction-set Processor) e TTA (Transport Triggered Architecture) con arquitectura VLIW.
A implementación do compilador do núcleo OpenCL está construída sobre a base de LLVM e Clang úsase como interface para OpenCL C. Para garantir a portabilidade e o rendemento axeitados, o compilador do núcleo OpenCL pode xerar funcións combinadas que poden usar varios recursos de hardware para paralelizar a execución de código, como VLIW, superescalar, SIMD, SIMT, multi-core e multi-threading. Hai soporte para controladores ICD (Controlador de cliente instalable). Hai backends para admitir o funcionamento mediante CPU, ASIP (TCE/TTA), GPU baseada na arquitectura HSA e GPU NVIDIA (a través de libcuda).
Na nova versión:
- Engadido soporte para Clang/LLVM 15.0.
- Compatibilidade de representación intermedia do sombreador SPIR-V mellorada significativamente para os controladores de CPU e CUDA.
- O controlador para o hardware especializado (CL_DEVICE_TYPE_ACCELERATOR) e os dispositivos personalizados (CL_DEVICE_TYPE_CUSTOM) que non admiten a compilación en liña foi deseñado significativamente. Os controladores accel e ttasim fusionáronse no novo controlador AlmaIF.
- Continúa o traballo no controlador para a API de gráficos Vulkan.
- Proponse unha implementación básica da extensión cl_khr_command_buffer, que permite escribir unha secuencia de comandos OpenCL para a súa execución nunha chamada.
Fonte: opennet.ru