Pubblicato il rilascio del progetto PoCL 6.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. Supporto driver ICD disponibile
(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:
- Aggiunto il supporto per Clang/LLVM 18.0, eliminato il supporto per LLVM 10, 11, 12 e 13.
- È stato implementato un nuovo backend cpu-tbb, utilizzando la libreria OneTBB sviluppata da Intel per parallelizzare le operazioni e pianificare l'esecuzione delle attività.
- Nel backend della CPU, che garantisce l'esecuzione dei kernel OpenCL sulla CPU, è stato aggiunto il supporto per lo standard di programmazione parallela OpenMP, è stato aggiunto il metodo clGetDeviceAndHostTimer() e sono state implementate le estensioni sperimentali cl_pocl_svm_rect, cl_pocl_command_buffer_svm e cl_pocl_command_buffer_host_buffer.
- Il backend "Remote", progettato per organizzare il calcolo distribuito spostando l'elaborazione dei comandi OpenCL su altri host sulla rete che eseguono il processo pocld in background, ha aggiunto il supporto per CG SVM (Coarse-Grain Shared Virtual Memory), la capacità di accedere al backend che utilizza il protocollo di comunicazione Vsock e supporto per la compilazione e il collegamento di programmi utilizzando le funzioni clCompileProgram() e clLinkProgram().
- Il backend LevelZero, che utilizza l'API Level Zero, consente la creazione di buffer più grandi di 4 GB e vengono implementate ottimizzazioni per i processi di sincronizzazione.
- Nel backend CUDA sono state implementate le operazioni sub_group_shuffle e sub_group_shuffle_xor e il limite CL_DEVICE_MAX_MEM_ALLOC_SIZE è stato aumentato.
Fonte: opennet.ru
