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

Se ha publicado la versión 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 que permite utilizar diferentes backends para ejecutar núcleos OpenCL en varios 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, AMD HSA APU, GPU NVIDIA y diferentes procesadores ASIP (Procesador de Instrucción Específica de Aplicaciones) y TTA (Arquitectura Activada por Transporte) 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 ha implementado un nuevo backend «Remote», diseñado para organizar cálculos distribuidos mediante el procesamiento remoto de comandos OpenCL en otros hosts en la red, donde se ejecuta el proceso en segundo plano pocld.
  • En el controlador CUDA se han implementado funciones adicionales y extensiones de OpenCL 3.0, como operaciones atómicas, variables de ámbito restringido, subgrupos intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier y sub_group_ballot.
  • Se ha mejorado el soporte de CPU basado en la arquitectura RISC-V. El funcionamiento de PoCL se ha probado en la placa Starfive VisionFive 2 con el entorno Ubuntu 23.10 cargado junto con LLVM 17 y GCC 13.2.
  • Se ha implementado la extensión cl_ext_float_atomics con soporte para FP32 y FP64.
  • La implementación de la extensión cl_khr_command_buffer se ha actualizado a la versión 0.9.4.
  • Se ha propuesto un backend experimental AlmaIF para FPGA.
  • Se ha eliminado el soporte inacabado para la representación intermedia de shaders SPIR 1.x/2.0. Se ha declarado a SPIR-V como el lenguaje intermedio recomendado para shaders.
  • Se ha añadido soporte para Clang/LLVM 17.0. Se ha declarado obsoleto el soporte para Clang/LLVM 10-13.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster