Wydanie PoCL 3.1 z niezależną implementacją standardu OpenCL

Zaprezentowano wersję projektu PoCL 3.1 (Portable Computing Language OpenCL), który rozwija implementację standardu OpenCL niezależną od producentów akceleratorów graficznych i umożliwiającą wykorzystanie różnych backendów do wykonywania jąder OpenCL na różnych typach kart graficznych i centralnych procesory. Kod projektu jest rozpowszechniany na licencji MIT. Obsługuje pracę na platformach X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA i różnych wyspecjalizowanych procesorach ASIP (procesor zestawu instrukcji specyficznych dla aplikacji) i TTA (architektura wyzwalana transportem) z architekturą VLIW.

Implementacja kompilatora jądra OpenCL zbudowana jest w oparciu o LLVM, a Clang służy jako frontend dla OpenCL C. Aby zapewnić odpowiednią przenośność i wydajność, kompilator jądra OpenCL może generować funkcje kombinowane, które mogą wykorzystywać różne zasoby sprzętowe do równoległego wykonywania kodu, takie jak VLIW, superskalarne, SIMD, SIMT, wielordzeniowe i wielowątkowe. Obsługiwane są sterowniki ICD (instalowalny sterownik klienta). Istnieją backendy obsługujące działanie poprzez CPU, ASIP (TCE/TTA), GPU oparte na architekturze HSA i GPU NVIDIA (przez libcuda).

W nowej wersji:

  • Dodano obsługę Clang/LLVM 15.0.
  • Znacząco ulepszona obsługa pośredniej reprezentacji modułu cieniującego SPIR-V dla sterowników CPU i CUDA.
  • Sterownik dla sprzętu specjalistycznego (CL_DEVICE_TYPE_ACCELERATOR) i urządzeń niestandardowych (CL_DEVICE_TYPE_CUSTOM), które nie obsługują kompilacji online, został znacznie przeprojektowany. Sterowniki accel i ttasim zostały połączone w nowym sterowniku AlmaIF.
  • Trwają prace nad sterownikiem API graficznego Vulkan.
  • Zaproponowano podstawową implementację rozszerzenia cl_khr_command_buffer, które umożliwia zapisanie sekwencji poleceń OpenCL do wykonania w jednym wywołaniu.

Źródło: opennet.ru

Dodaj komentarz