Opublikowano wydanie projektu PoCL 5.0 (Portable Computing Language OpenCL), rozwijającego implementację standardu OpenCL, niezależną od producentów akceleratorów graficznych i umożliwiającą korzystanie z różnych backendów do wykonywania jąder OpenCL na różnych typach procesorów graficznych i centralnych. Kod projektu jest dystrybuowany na licencji MIT. Obsługiwane są platformy X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU oraz różne specjalizowane procesory ASIP (Application-Specific Instruction-set Processor) i procesory TTA (Transport Triggered Architecture) z architekturą VLIW.
Implementacja kompilatora jąder OpenCL oparta jest na LLVM, a jako frontend dla OpenCL C używany jest Clang. Aby zapewnić odpowiednią przenośność i wydajność, kompilator jąder OpenCL może generować kombinowane funkcje, które mogą wykorzystywać różne zasoby sprzętowe do równoległego wykonywania kodu, takie jak VLIW, superskalarny, SIMD, SIMT, wielordzeniowość i wielowątkowość. Obsługiwane są sterowniki ICD (Installable Client Driver). Dostępne są backendy umożliwiające działanie poprzez CPU, ASIP (TCE/TTA), GPU oparte na architekturze HSA oraz GPU NVIDIA (przez libcuda).
W nowej wersji:
- Zrealizowano nowy backend „Remote”, przeznaczony do organizacji obliczeń rozproszonych poprzez przeniesienie przetwarzania komend OpenCL na inne hosty w sieci, na których działa proces w tle pocld.
- W sterowniku CUDA zaimplementowane zostały dodatkowe funkcje i rozszerzenia OpenCL 3.0, takie jak operacje atomowe, zmienne o ograniczonym zasięgu, podgrupy intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier oraz sub_group_ballot.
- Zwiększona została obsługa CPU opartego na architekturze RISC-V. Praca PoCL została przetestowana na płycie Starfive VisionFive 2 z załadowanym środowiskiem Ubuntu 23.10 z LLVM 17 i GCC 13.2.
- Zrealizowano rozszerzenie cl_ext_float_atomics z obsługą FP32 i FP64.
- Implementacja rozszerzenia cl_khr_command_buffer została zaktualizowana do wersji 0.9.4.
- Zaproponowano eksperymentalny backend AlmaIF dla FPGA.
- Usunięto niedokończoną obsługę pośredniej reprezentacji shaderów SPIR 1.x/2.0. Jako zalecany pośredni język shaderów zadeklarowano SPIR-V.
- Dodano obsługę Clang/LLVM 17.0. Ogłoszono przestarzałą obsługę Clang/LLVM 10-13.
Źródło: opennet.ru
