Lanzamento de PoCL 5.0 con implementación independente do estándar OpenCL

Publicouse o lanzamento do proxecto PoCL 5.0 (Portable Computing Language OpenCL), que desenvolve unha implementación do estándar OpenCL independente dos fabricantes de aceleradores gráficos e que permite o uso de varios backends para executar núcleos OpenCL en diferentes tipos de gráficos e procesadores centrais. . O código do proxecto distribúese baixo a licenza MIT. Admite o traballo en plataformas X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU e varios procesadores especializados ASIP (Application-Specific Instruction-set Processor) e TTA (Transport Triggered Architecture) con arquitectura VLIW.

A implementación do compilador do núcleo OpenCL está construída sobre a base de LLVM e Clang úsase como interface para OpenCL C. Para garantir a portabilidade e o rendemento axeitados, o compilador do núcleo OpenCL pode xerar funcións combinadas que poden usar varios recursos de hardware para paralelizar a execución de código, como VLIW, superescalar, SIMD, SIMT, multi-core e multi-threading. Hai soporte para controladores ICD (Controlador de cliente instalable). Hai backends para admitir o funcionamento mediante CPU, ASIP (TCE/TTA), GPU baseada na arquitectura HSA e GPU NVIDIA (a través de libcuda).

Na nova versión:

  • Implementouse un novo backend "Remoto", deseñado para organizar a computación distribuída transferindo o procesamento de comandos OpenCL a outros hosts da rede que executan o proceso pocld en segundo plano.
  • O controlador CUDA implementa funcións e extensións adicionais de OpenCL 3.0, como operacións atómicas, variables de ámbito, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier e sub_group_ballot.
  • Compatibilidade mellorada para CPU baseadas na arquitectura RISC-V. O funcionamento de PoCL probouse na tarxeta Starfive VisionFive 2 cargada co ambiente Ubuntu 23.10 con LLVM 17 e GCC 13.2.
  • A extensión cl_ext_float_atomics implementouse con soporte para FP32 e FP64.
  • A implementación da extensión cl_khr_command_buffer actualizouse á versión 0.9.4.
  • Propúxose un backend de AlmaIF experimental para FPGA.
  • Eliminouse a compatibilidade incompleta para a representación intermedia dos sombreadores SPIR 1.x/2.0. SPIR-V declárase como a linguaxe de sombreado intermedio recomendada.
  • Engadido soporte para Clang/LLVM 17.0. O soporte para Clang/LLVM 10-13 quedou en desuso.

Fonte: opennet.ru

Engadir un comentario