È stato rilasciato il progetto PoCL 3.1 (Portable Computing Language OpenCL), che sviluppa l'implementazione dello standard OpenCL, indipendente dai produttori di acceleratori grafici e consente di utilizzare diversi backend per eseguire i kernel OpenCL su diversi tipi di processori grafici e centrali. Il codice del progetto è distribuito sotto licenza MIT. È supportato il funzionamento su piattaforme X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU e vari processori ASIP (Application-Specific Instruction-set Processor) e 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:
- Aggiunta la compatibilità con Clang/LLVM 15.0.
- Migliorata notevolmente la supporto per la rappresentazione intermedia dei shader SPIR-V per i driver che utilizzano CPU e CUDA.
- Rivisitato significativamente il driver per l'hardware specializzato (CL_DEVICE_TYPE_ACCELERATOR) e per dispositivi personalizzati (CL_DEVICE_TYPE_CUSTOM) che non supportano la compilazione online. I driver accel e ttasim sono stati unificati in un nuovo driver AlmaIF.
- Proseguono i lavori sul driver per l'API grafica Vulkan.
- È stata proposta un'implementazione di base dell'estensione cl_khr_command_buffer, che consente di registrare una sequenza di comandi OpenCL per la loro esecuzione con una sola chiamata.
Fonte: opennet.ru
