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

Zaprezentowano wersję projektu PoCL 3.0 (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:

  • Zaimplementowano minimalny zestaw funkcji wymaganych do obsługi specyfikacji OpenCL 3.0. Obsługa OpenCL 3.0 jest obecnie dostępna tylko w backendach opartych na procesorach z LLVM 14 (inne backendy i starsze wersje LLVM zapewniają obsługę OpenCL 1.2).
  • Dodano obsługę Clang/LLVM 14.
  • Ulepszone śledzenie i wizualizacja.
  • Dodano obsługę generowania wyspecjalizowanych grup funkcji i włączania ich do plików wykonywalnych z jądrami OpenCL.

Źródło: opennet.ru

Dodaj komentarz