Se presenta el lanzamiento del proyecto PoCL 3.1 (Portable Computing Language OpenCL), que desarrolla la implementación del estándar OpenCL, independiente de los fabricantes de aceleradores gráficos y que permite utilizar diferentes backend para ejecutar núcleos OpenCL en diversos tipos de procesadores gráficos y centrales. El código del proyecto se distribuye bajo la licencia MIT. Se admite el funcionamiento en plataformas X86_64, MIPS32, ARM v7, APU AMD HSA, GPU NVIDIA y varios ASIP (Application-Specific Instruction-set Processor) y microprocesadores TTA (Transport Triggered Architecture) con arquitectura VLIW.
La implementación del compilador de núcleos OpenCL se basa en LLVM, y como frontend para OpenCL C se utiliza Clang. Para garantizar la debida portabilidad y rendimiento, el compilador de núcleos OpenCL puede generar funciones combinadas que pueden utilizar diferentes recursos de hardware para paralelizar la ejecución del código, como VLIW, superscalaridad, SIMD, SIMT, multinúcleo y multihilo. Hay soporte para controladores ICD (Driver de Cliente Instalable). Existen backends para permitir la operación a través de CPU, ASIP (TCE/TTA), GPU basadas en la arquitectura HSA y GPU NVIDIA (a través de libcuda).
En la nueva versión:
- Se añadió soporte para Clang/LLVM 15.0.
- Se mejoró significativamente el soporte para la representación intermedia de shaders SPIR-V para controladores que utilizan CPU y CUDA.
- Se rediseñó significativamente el controlador para hardware especializado (CL_DEVICE_TYPE_ACCELERATOR) y dispositivos personalizados (CL_DEVICE_TYPE_CUSTOM) que no admiten compilación en línea. Los controladores accel y ttasim se han consolidado en un nuevo controlador AlmaIF.
- Se continuó trabajando en el controlador para la API gráfica Vulkan.
- Se propuso una implementación básica de la extensión cl_khr_command_buffer, que permite registrar una secuencia de comandos OpenCL para su ejecución en una sola llamada.
Fuente: opennet.ru
