Bylo zveřejněno vydání projektu PoCL 6.0 (Portable Computing Language OpenCL), které vyvíjí implementaci standardu OpenCL, nezávislou na výrobcích grafických akcelerátorů a umožňuje používat různé backendy pro provádění OpenCL jader na různých typech grafických a centrálních procesorů. Kód projektu je dostupný pod licencí MIT. Podporována je práce na platformách X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU a různých specializovaných ASIP (Application-Specific Instruction-set Processor) a TTA procesorech (Transport Triggered Architecture) s architekturou VLIW.
Implementace kompilátoru jader OpenCL je postavena na LLVM, a jako frontend pro OpenCL C se používá Clang. Pro zajištění náležité přenositelnosti a výkonu může kompilátor jader OpenCL generovat kombinované funkce, které mohou využívat různé hardwarové zdroje pro paralelizaci vykonávání kódu, jako jsou VLIW, superskalární, SIMD, SIMT, vícejádrové a vícivláknové. Podpora ICD ovladačů
(Installable Client Driver). Existují backendy pro zajištění práce přes CPU, ASIP (TCE/TTA), GPU na bázi architektury HSA a GPU NVIDIA (přes libcuda).
V nové verzi:
- Byla přidána podpora Clang/LLVM 18.0, byla zrušena podpora LLVM 10, 11, 12 a 13.
- Byl implementován nový backend cpu-tbb, který používá pro paralelizaci operací a plánování vykonávání úloh knihovnu OneTBB vyvíjenou společností Intel.
- V backendu cpu, který zajišťuje provádění OpenCL jader na CPU, byla přidána podpora standardu paralelního programování OpenMP, přidána metoda clGetDeviceAndHostTimer(), a také byla implementována experimentální rozšíření cl_pocl_svm_rect, cl_pocl_command_buffer_svm a cl_pocl_command_buffer_host_buffer.
- V backendu „Remote“, určeném pro organizaci distribuovaných výpočtů prostřednictvím přenesení zpracování příkazů OpenCL na jiné hostitele v síti, na nichž běží pozadí proces pocld, byla přidána podpora CG SVM (Coarse-Grain Shared Virtual Memory), možnost přístupu k backendu pomocí komunikačního protokolu Vsock a podpora kompilace a linkování programů pomocí funkcí clCompileProgram() a clLinkProgram().
- V backendu LevelZero, který používá API Level Zero, bylo povoleno vytváření bufferů větších než 4 GB a byly implementovány optimalizace procesů synchronizace.
- V backendu CUDA byly implementovány operace sub_group_shuffle a sub_group_shuffle_xor, a byl zvýšen limit CL_DEVICE_MAX_MEM_ALLOC_SIZE.
Zdroj: opennet.ru
