PoCL 1.6, samodzielna implementacja standardu OpenCL

Uruchomienie nowa wersja projektu PoCL 1.6 (Portable Computing Language OpenCL), najważniejszymi cechami wersji 1.6 jest obsługa Clang / LLVM 11.0, a także praca wykonana w celu poprawy wydajności i funkcji CUDA, lepsza kompatybilność z PowerPC i ulepszone wykorzystanie debugowania OpenCL.

Dla tych, którzy nie są zaznajomieni z PoCL, powinniście wiedzieć, co to jest przenośna implementacja open source (na licencji MIT) standardu OpenCL (1.2 z obsługą niektórych funkcji 2.0). Oprócz tego, że jest implementacją OpenCL dla wielu urządzeń (prawdziwie heterogeniczne) łatwo przenośne, głównym celem tego projektu jest poprawa interoperacyjności różnorodności urządzeń zgodnych z OpenCL poprzez integrację ich w jedną centralnie zorganizowaną platformę.

Ponadto jednym z kluczowych długoterminowych celów jest poprawa przenośności wydajności programów OpenCL na typach urządzeń, które wykorzystują techniki wykonywania i kompilacji.

Kompilator jądra OpenCL jest oparty na LLVM, a Clang jest używany jako interfejs dla OpenCL C. Aby zapewnić odpowiednią wydajność i przenośność, kompilator jądra OpenCL może generować połączone funkcje, które mogą korzystać z różnych zasobów sprzętowych w celu zrównoleglenia wykonywania kodu. , takie jak VLIW, superscalar, SIMD, SIMT, wielordzeniowe i wielowątkowe. Dostępna jest obsługa sterowników ICD (Installable Client Driver). Istnieją backendy, które zapewniają pracę przez CPU, ASIP (TCE / TTA), GPU oparty na architekturze HSA i GPU NVIDIA (CUDA).

Główne nowe funkcje PoCL 1.6

Ta nowa wersja PoCL 1.6 podkreśla możliwość skompilowania tej implementacji ze sterownikami urządzeń włączonymi w czasie kompilacji, a także dostępność urządzenia zostanie zweryfikowana podczas uruchamiania (wcześniej systemy, na których zbudowano i uruchomiono PoCL powinni mieć taką samą obsługę kontrolera). Zaimplementowano możliwość użycia menedżera pakietów Conda do dystrybucji pakietów binarnych PoCL z obsługą CUDA dla systemów Linux-x86_64 i Linux-ppc64le.

Kolejną wyróżniającą się zmianą jest obsługa LLVM 11 wraz z rozszerzonymi możliwościami debugowania kodu OpenCL podczas korzystania z kontrolera CPU.

Dodatkowo należy zauważyć, że przeprowadzono optymalizację wydajnościową backendu CUDA, co pozwoliło znacznie przyspieszyć operacje związane z wykorzystaniem pamięci lokalnej (FFT, GEMM).

Testy porównawcze wykorzystujące testy SHOC (które są teraz stale testowane, pokazują, że te optymalizacje dały znacznie lepszą wydajność, szczególnie w przypadku testów porównawczych obejmujących pamięć lokalną, taką jak FFT i GEMM, w porównaniu poprzednie odniesienie. PoCL obecnie często osiąga konkurencyjną wydajność dzięki zastrzeżonemu sterownikowi OpenCL firmy Nvidia). Z zadowoleniem przyjmujemy wkład w identyfikację i eliminację pierwotnych przyczyn pozostałych obszarów problemowych. Z zadowoleniem przyjmujemy również wkład w poprawę zakresu funkcji dla standardów OpenCL 1.2 / 3.0.

  • Wydajność PoCL w wielu testach jest teraz zbliżona do zastrzeżonego sterownika OpenCL firmy NVIDIA.
  • Dodano parametr kompilacji HARDENING_ENABLE, aby włączyć opcje kompilatora w celu wygenerowania bezpieczniejszego libpocl.so kosztem obniżenia wydajności.
  • Zwrócono obsługę systemów PowerPC 8/9, dla których poziom implementacji OpenCL przy korzystaniu z urządzeń pthread i CUDA odpowiada poziomowi CUDA w systemach x86_64.
  • Zmieniono ABI dla jąder CUDA, które używają lokalnych bloków __. Po uaktualnieniu użytkownicy muszą wyczyścić pamięć podręczną pocl.
  • Usunięto obsługę opcji budowania SINGLE_LLVM_LIB, zamiast używać STATIC_LLVM i llvm-config do definiowania bibliotek do powiązania.

Wreszcie, jeśli chcesz dowiedzieć się więcej o tej nowej wersji, możesz sprawdzić szczegóły w oryginalnej reklamie. 

Osoby, które chcą dowiedzieć się więcej o tej implementacji, mogą skorzystać z konsultacji oficjalna strona internetowa tego, gdzie można znaleźć dokumentację i pobrać pliki.

Kod projektu jest rozpowszechniany na licencji MIT, a praca jest obsługiwana na platformach X86_64, MIPS32, ARM v7, AMD HSA APU oraz różnych specjalistycznych procesorach TTA o architekturze VLIW.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.