Rilascio di PoCL 5.0 con implementazione indipendente dello standard OpenCL

È stata pubblicata la versione del progetto PoCL 5.0 (Portable Computing Language OpenCL), che sviluppa l'implementazione dello standard OpenCL, indipendente dai produttori di acceleratori grafici e consente di utilizzare vari backend per eseguire nuclei OpenCL su diversi tipi di processori grafici e centrali. Il codice del progetto è distribuito con licenza MIT. È supportato su piattaforme X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA e vari ASIP (Application-Specific Instruction-set Processor) e processori TTA (Transport Triggered Architecture) con architettura VLIW.

L'implementazione del compilatore per i nuclei OpenCL è basata su LLVM, e come frontend per OpenCL C viene utilizzato Clang. Per garantire la necessaria portabilità e prestazioni, il compilatore dei nuclei OpenCL può generare funzioni combinate, che possono utilizzare diverse risorse hardware per parallelizzare l'esecuzione del codice, come VLIW, superscalabilità, SIMD, SIMT, multi-core e multithreading. È presente il supporto per i driver ICD (Installable Client Driver). Sono disponibili backend per garantire il funzionamento attraverso CPU, ASIP (TCE/TTA), GPU basate su architettura HSA e GPU NVIDIA (tramite libcuda).

Nella nuova versione:

  • È stato implementato un nuovo backend "Remote", progettato per organizzare calcoli distribuiti tramite l'esternalizzazione dell'elaborazione di comandi OpenCL su altri host nella rete, sui quali è in esecuzione il processo in background pocld.
  • Nel driver CUDA sono state realizzate ulteriori funzionalità e estensioni di OpenCL 3.0, come operazioni atomiche, variabili con ambito limitato, sotto-gruppi intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier e sub_group_ballot.
  • Migliorato il supporto per CPU basate sull'architettura RISC-V. Il funzionamento di PoCL è stato testato su scheda Starfive VisionFive 2 con ambiente Ubuntu 23.10, utilizzando LLVM 17 e GCC 13.2.
  • È stata implementata l'estensione cl_ext_float_atomics con supporto per FP32 e FP64.
  • L'implementazione dell'estensione cl_khr_command_buffer è stata aggiornata alla versione 0.9.4.
  • Proposto un backend sperimentale AlmaIF per FPGA.
  • Rimossa la supporto incompleto per la rappresentazione intermedia degli shader SPIR 1.x/2.0. SPIR-V è stato dichiarato come linguaggio intermedio di shader raccomandato.
  • Aggiunto il supporto per Clang/LLVM 17.0. Dichiarato obsoleto il supporto per Clang/LLVM 10-13.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster