Se ha publicado el lanzamiento del proyecto PoCL 5.0 (Portable Computing Language OpenCL), que desarrolla una implementación del estándar OpenCL independiente de los fabricantes de aceleradores gráficos y permite el uso de varios backends para ejecutar kernels OpenCL en diferentes tipos de gráficos y procesadores centrales. . El código del proyecto se distribuye bajo la licencia MIT. Admite el trabajo en plataformas X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU y varios procesadores especializados ASIP (procesador de conjunto de instrucciones específicas de la aplicación) y TTA (arquitectura activada por transporte) con arquitectura VLIW.
La implementación del compilador del kernel OpenCL se basa en LLVM y Clang se utiliza como interfaz para OpenCL C. Para garantizar la portabilidad y el rendimiento adecuados, el compilador del kernel OpenCL puede generar funciones combinadas que pueden utilizar varios recursos de hardware para paralelizar la ejecución de código, como VLIW, superescalar, SIMD, SIMT, multinúcleo y multiproceso. Hay soporte para controladores ICD (controlador de cliente instalable). Hay backends para admitir la operación a través de CPU, ASIP (TCE/TTA), GPU basada en arquitectura HSA y GPU NVIDIA (a través de libcuda).
Versículos nuevos:
- Se ha implementado un nuevo backend "Remoto", diseñado para organizar la computación distribuida transfiriendo el procesamiento de comandos OpenCL a otros hosts en la red que ejecutan el proceso pocld en segundo plano.
- El controlador CUDA implementa características y extensiones adicionales de OpenCL 3.0, como operaciones atómicas, variables de ámbito, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier y sub_group_ballot.
- Soporte mejorado para CPU basadas en la arquitectura RISC-V. El funcionamiento de PoCL se probó en la placa Starfive VisionFive 2 cargada con el entorno Ubuntu 23.10 con LLVM 17 y GCC 13.2.
- La extensión cl_ext_float_atomics se ha implementado con soporte para FP32 y FP64.
- La implementación de la extensión cl_khr_command_buffer se actualizó a la versión 0.9.4.
- Se ha propuesto un backend experimental de AlmaIF para FPGA.
- Se eliminó el soporte incompleto para la representación intermedia de los sombreadores SPIR 1.x/2.0. SPIR-V está declarado como el lenguaje de sombreado intermedio recomendado.
- Se agregó soporte para Clang/LLVM 17.0. La compatibilidad con Clang/LLVM 10-13 ha quedado obsoleta.
Fuente: opennet.ru