Lanzamiento de PoCL 5.0 con una implementación independiente del estándar OpenCL

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

Añadir un comentario