Pubblicato il rilascio del progetto PoCL 5.0 (Portable Computing Language OpenCL) che sviluppa un'implementazione dello standard OpenCL indipendente dai produttori di acceleratori grafici e consente l'utilizzo di diversi backend per l'esecuzione dei kernel OpenCL su diverse tipologie di grafici e processori centrali . Il codice del progetto è distribuito sotto la licenza MIT. Supporta il lavoro su piattaforme X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA e vari processori specializzati ASIP (Application-Specific Instruction-set Processor) e TTA (Transport Triggered Architecture) con architettura VLIW.
L'implementazione del compilatore del kernel OpenCL è costruita sulla base di LLVM e Clang viene utilizzato come front-end per OpenCL C. Per garantire portabilità e prestazioni adeguate, il compilatore del kernel OpenCL può generare funzioni combinate che possono utilizzare varie risorse hardware per parallelizzare l'esecuzione del codice, come VLIW, superscalare, SIMD, SIMT, multi-core e multi-threading. È disponibile il supporto per i driver ICD (driver client installabile). Esistono backend per supportare il funzionamento tramite CPU, ASIP (TCE/TTA), GPU basata sull'architettura HSA e GPU NVIDIA (tramite libcuda).
Nella nuova versione:
- È stato implementato un nuovo backend "Remote", progettato per organizzare il calcolo distribuito trasferendo l'elaborazione dei comandi OpenCL ad altri host sulla rete che eseguono il processo pocld in background.
- Il driver CUDA implementa funzionalità ed estensioni OpenCL 3.0 aggiuntive come operazioni atomiche, variabili con ambito, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier e sub_group_ballot.
- Supporto migliorato per CPU basate sull'architettura RISC-V. Il funzionamento PoCL è stato testato sulla scheda Starfive VisionFive 2 caricata con ambiente Ubuntu 23.10 con LLVM 17 e GCC 13.2.
- L'estensione cl_ext_float_atomics è stata implementata con il supporto per FP32 e FP64.
- L'implementazione dell'estensione cl_khr_command_buffer è stata aggiornata alla versione 0.9.4.
- È stato proposto un backend sperimentale AlmaIF per FPGA.
- Rimosso il supporto incompleto per la rappresentazione intermedia degli shader SPIR 1.x/2.0. SPIR-V è dichiarato come il linguaggio shader intermedio consigliato.
- Aggiunto supporto per Clang/LLVM 17.0. Il supporto per Clang/LLVM 10-13 è stato deprecato.
Fonte: opennet.ru