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

Se ha publicado la versión del proyecto PoCL 6.0 (Portable Computing Language OpenCL), que desarrolla una implementación del estándar OpenCL independiente de los fabricantes de aceleradores gráficos y permite utilizar diferentes backends para ejecutar núcleos de 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, APU HSA de AMD, GPU NVIDIA y varios ASIP (Application-Specific Instruction-set Processor) y procesadores TTA (Transport Triggered Architecture) con arquitectura VLIW.

La implementación del compilador de núcleos OpenCL se basa en LLVM, y se utiliza Clang como frontend para OpenCL C. Para garantizar la adecuada 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, superescalares, SIMD, SIMT, multicores y multihilo. Se proporciona soporte para controladores ICD.
(Installable Client Driver). Se incluyen backends para garantizar el funcionamiento 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 añadido soporte para Clang/LLVM 18.0, mientras que el soporte para LLVM 10, 11, 12 y 13 ha sido retirado.
  • Se ha implementado un nuevo backend cpu-tbb, que utiliza la biblioteca OneTBB, desarrollada por Intel, para la paralelización de operaciones y la planificación de tareas.
  • En el backend cpu, que proporciona la ejecución de núcleos de OpenCL en CPU, se ha añadido soporte para el estándar de programación paralela OpenMP, se ha incluido el método clGetDeviceAndHostTimer(), y se han implementado extensiones experimentales cl_pocl_svm_rect, cl_pocl_command_buffer_svm y cl_pocl_command_buffer_host_buffer.
  • En el backend 'Remote', destinado a organizar cálculos distribuidos mediante la externalización del procesamiento de comandos OpenCL a otros hosts en la red donde se ejecuta el proceso en segundo plano pocld, se ha añadido soporte para CG SVM (Coarse-Grain Shared Virtual Memory), la posibilidad de acceder al backend utilizando el protocolo de comunicación Vsock y soporte para la compilación y enlace de programas mediante las funciones clCompileProgram() y clLinkProgram().
  • En el backend LevelZero, que utiliza la API Level Zero, se permite crear búferes de más de 4 GB y se han implementado optimizaciones para los procesos de sincronización.
  • En el backend CUDA se han implementado las operaciones sub_group_shuffle y sub_group_shuffle_xor, y se ha incrementado el límite de CL_DEVICE_MAX_MEM_ALLOC_SIZE.

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