Megjelent a PoCL 6.0 (Portable Computing Language OpenCL) projekt kiadása, amely az OpenCL szabvány gyártóktól független megvalósítását fejleszti, és lehetővé teszi különböző backendek használatát OpenCL magok végrehajtásához különböző grafikus és központi processzorokon. A projekt kódja MIT licenc alatt érhető el. Támogatott platformok: X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU és különböző specializált ASIP (Application-Specific Instruction-set Processor) és TTA processzorok (Transport Triggered Architecture) VLIW architektúrával.
Az OpenCL magok fordítójának megvalósítása LLVM alapokon nyugszik, míg az OpenCL C frontendjaként a Clang szolgál. A megfelelő hordozhatóság és teljesítmény biztosítása érdekében az OpenCL magok fordítója kombinált függvényeket tud generálni, amelyek különböző hardverforrásokat használhatnak a kód végrehajtásának párhuzamosításához, mint például VLIW, superskaláris, SIMD, SIMT, többmagos és több szálú. ICD driverek támogatása elérhető.
(Installable Client Driver). A backendek között megtalálhatók a működést biztosító fejlesztések CPU, ASIP (TCE/TTA), HSA architektúrájú GPU és NVIDIA GPU (libcuda-n keresztül) számára.
Az új verzióban:
- Hozzáadva a Clang/LLVM 18.0 támogatása, a LLVM 10, 11, 12 és 13 támogatásának megszüntetése.
- Megvalósítva egy új cpu-tbb backend, amely a műveletek párhuzamosításához és a feladatok végrehajtási ütemezéséhez az Intel által fejlesztett OneTBB könyvtárat használja.
- A cpu backend, amely OpenCL magok végrehajtását biztosít a CPU-n, támogatja a párhuzamos programozási szabványt, OpenMP-t, hozzáadva a clGetDeviceAndHostTimer() módszert, valamint kísérleti bővítményeket valósít meg, mint a cl_pocl_svm_rect, cl_pocl_command_buffer_svm és cl_pocl_command_buffer_host_buffer.
- A "Remote" backend, amely elosztott számítások lebonyolítására szolgál az OpenCL parancsok más gépekre történő kiküldésével, ahol a pocld háttérfolyamat fut, támogatja a CG SVM (Coarse-Grain Shared Virtual Memory) használatát, lehetővé téve a backendre való hívást a Vsock kommunikációs protokollon keresztül, valamint a programok fordításának és linkelésének támogatását a clCompileProgram() és clLinkProgram() függvények segítségével.
- A LevelZero backend, amely a Level Zero API-t használja, lehetővé teszi 4GB-nál nagyobb méretű puffer létrehozását és optimalizálásokat valósít meg a szinkronizálási folyamatokban.
- A CUDA backendben megvalósították a sub_group_shuffle és sub_group_shuffle_xor műveleteket, és növelték a CL_DEVICE_MAX_MEM_ALLOC_SIZE határt.
Forrás: opennet.ru
