Rilascio PoCL 5.0 con un'implementazione indipendente dello standard OpenCL

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

Aggiungi un commento