Versió PoCL 5.0 amb una implementació independent de l'estàndard OpenCL

S'ha publicat el llançament del projecte PoCL 5.0 (Portable Computing Language OpenCL), desenvolupant una implementació de l'estàndard OpenCL que és independent dels fabricants d'acceleradors gràfics i permet l'ús de diversos backends per executar nuclis OpenCL en diferents tipus de gràfics i processadors centrals. . El codi del projecte es distribueix sota la llicència MIT. Admet el treball a les plataformes X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU i diversos processadors especialitzats ASIP (Application-Specific Instruction-set Processor) i TTA (Transport Triggered Architecture) amb arquitectura VLIW.

La implementació del compilador del nucli OpenCL es construeix sobre la base de LLVM, i Clang s'utilitza com a interfície per a OpenCL C. Per garantir la portabilitat i el rendiment adequats, el compilador del nucli OpenCL pot generar funcions de combinació que poden utilitzar diversos recursos de maquinari per paral·lelitzar l'execució de codi, com ara VLIW, superescalar, SIMD, SIMT, multi-nucli i multi-threading. Hi ha suport per als controladors ICD (Controlador de client instal·lable). Hi ha backends per admetre el funcionament mitjançant CPU, ASIP (TCE/TTA), GPU basada en l'arquitectura HSA i GPU NVIDIA (mitjançant libcuda).

En la nova versió:

  • S'ha implementat un nou backend "remot", dissenyat per organitzar la informàtica distribuïda transferint el processament d'ordres OpenCL a altres amfitrions de la xarxa que executen el procés pocld en segon pla.
  • El controlador CUDA implementa funcions i extensions addicionals d'OpenCL 3.0, com ara operacions atòmiques, variables amb àmbit, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier i sub_group_ballot.
  • Suport millorat per a CPU basats en l'arquitectura RISC-V. El funcionament de PoCL es va provar a la placa Starfive VisionFive 2 carregada amb l'entorn Ubuntu 23.10 amb LLVM 17 i GCC 13.2.
  • L'extensió cl_ext_float_atomics s'ha implementat amb suport per a FP32 i FP64.
  • La implementació de l'extensió cl_khr_command_buffer s'ha actualitzat a la versió 0.9.4.
  • S'ha proposat un backend AlmaIF experimental per a FPGA.
  • S'ha eliminat el suport incomplet per a la representació intermèdia dels shaders SPIR 1.x/2.0. SPIR-V es declara com el llenguatge d'ombrejat intermedi recomanat.
  • S'ha afegit suport per a Clang/LLVM 17.0. El suport per a Clang/LLVM 10-13 ha quedat obsolet.

Font: opennet.ru

Afegeix comentari