FPGA i GP(GPU) w wysokowydajnych obliczeniach i przetwarzaniu sygnałów. Podstawowe informacje.

Ponieważ już wielokrotnie wspominałem o układach rekonfigurowalnych FPGA (wiki: [PL] [Ang], pora dokładniej wyjaśnić zakres użyteczności tych urządzeń. Przede wszystkim,nie chodzi tu o klasyczne rozwiązania stosowane obecnie przez większość prostych,przeciętnych użytkowników komputerów (choć mogłoby),lecz o zaawansowane obliczenia i symulacje. Zasadniczo więc, mówimy o rozwiązaniach,które bardziej już zaczynają przypominać komputery serwerowe,lub wielkie serwerownie/klastry, niż przeciętnego peceta. (Swoją drogą zresztą,z przeciętnych pecetów można zrobić klaster typu Beowulf)

Oczywiście, w wielkich rozwiązaniach serwerowych stosowane są też liczne mikroprocesory (CPU) – zwłaszcza firm Intel (w przypadku serwerów np. Xeon,Itanium) i AMD (Opteron), w zakładach produkcyjnych zaś,głównie mikroprocesory ARM. Interesujące z pewnych względów są również inne architektury procesorów,np. architektura SPARC – chyba jedyna w pełni otwarta architektura komercyjnego,realnie sprawdzonego procesora – i jej pochodne. Nie można też zapomnieć, o potencjale pojawiających się na rynku mikroprocesorów APU (CPU + GPU) (wiki: [PL] [Ang]). Koszt użycia opartego o nie systemu wieloprocesorowego jest jednak (pomimo potencjalnie oferowanych znakomitych możliwości) większy – tak pod względem kosztów układów, jak i potencjalnej eksploatacji w obliczeniach równoległych,dlatego nie będę ich ujmował w niniejszym tekście,aby uniknąć dodatkowych komplikacji.

Jeśli chodzi o przeprowadzanie symulacji, czy złożonych równoległych obliczeń fizycznych stosunkowo dobrą opinie uzyskały ostatnio rozwiązania typu (GP)GPU. Pod pojęciem GPU kryją się jak wiadomo układy karty graficznej,zatem jako (GP)GPU rozumiemy w praktyce wykorzystanie kart graficznych w skomplikowanych obliczeniach „generalnego przeznaczenia” (General-Purpose computing on Graphic Processor Units).

https://upload.wikimedia.org/wikipedia/commons/5/5b/Geforce3gpu.jpg

Jest to możliwe dzięki faktowi że współczesne mikroprocesory kart graficznych posiadają setki albo nawet tysiące (te obecne zdecydowanie tysiące) pojedynczych rdzeni,na których wykonywane są elementarne obliczenia. Rdzenie te są dużo prostsze w budowie niż rdzenie współczesnych procesorów wielordzeniowych i mają mniejsze możliwości – ale,jak pisałem jest ich piekielnie dużo.I one wszystkie pracują naraz.

Początkowo, użycie procesora graficznego do innego rodzaju obliczeń nie było to takie proste, ale od czasu wprowadzenia rozwiązań takich jak np. technologia CUDA firmy Nvidia, obliczenia te można całkiem rozsądnie przyspieszyć. Również nowsze programy komercyjne (szczególnie dla środowiska Windows), stosujące metodę elementów skończonych w symulacjach, wykorzystują już często możliwości nowoczesnych kart graficznych. Za pomocą kart graficznych można znacznie szybciej obliczać funkcje hashujące, niż na pojedynczym współczesnym procesorze.

Czy zatem GP(GPU) jest najlepszym rozwiązaniem kwestii obliczeń równoległych ? Niekoniecznie.

Układy FPGA również zajmują znaczące miejsce, jeśli chodzi o złożone obliczenia,tym niemniej do niedawna zaprogramowanie ich było to możliwe głównie przy użyciu sprzętowych języków HDL. Układy te, jeśli chodzi o obliczanie stosowanych w kryptografii funkcji hashujących są wręcz uznawane za lepsze, zarówno jeśli chodzi o rezultaty związane z szybkością, jak i koszt energetyczny – nie tylko wśród społeczności naukowo-technicznej,ale i osób „kopiących bitcoiny”.

Przykładowy układ programowalny firmy Altera

Z efektywnością rozwiązań takich jak GP(GPU) można zapoznać się na przykładzie układu Nvidia Tesla, omówionego w artykule wikipedii i przedstawionego poniżej:

Istotne jest,że moc obliczeniową układów GPU mierzymy w FLOPSach (w Polskiej „terminologii”: „flop”),  czyli liczbie operacji zmiennoprzecinkowych na sekundę, natomiast moc obliczeniowa układów FPGA podawana jest raczej w stałoprzecinkowych jednostkach MIPS.  Nie można zatem mówić o prostej porównywalności tych układów pod względem mocy obliczeniowej

I co teraz z tym począć ? Opinie naprawdę wyglądają przecież na bardzo różne. Dla przykładu:

No dobrze. O co w tym wszystkim zatem chodzi ? Jakie wnioski można wyciągnąć z tego szumu informacyjnego, na temat roli układów GPU i FPGA w obliczeniach i systemach obliczeniowych

1. To prawda, że układy (GP)GPU i FPGA mogą konkurować na rynku obliczeniowym, mają też na nim charakterystyczne zalety i wady. I tak:

  • Układy GPU są bardzo wydajne pod względem jakości obliczeń (zwłaszcza w operowaniu danymi , przypominającymi obraz) i łatwiej dostępne na rynku (a zatem, potencjalnie tańsze w zakupie/łatwiejsze w odsprzedaniu)
  • Układy FPGA są za to bardziej wydajne pod względem energochłonności (koszt energetyczny obsługi kart graficznych i całej reszty komputera w tym procesora).
  • GPU mogą być łatwiejsze w zaprogramowaniu jak FPGA i wymagają mniejszej wiedzy, ponieważ ich programowanie z reguły odbywa się w języku wysokiego poziomu. (np. podobnych do C)
  • Układy GPU są za to potencjalnie mniej elastyczne, niż układy FPGA ponieważ są typowymi układami ASIC.

Jeśli zatem tu układy typu GPU wygrywają,to głównie ze względu na mniejsze wymagania co do wiedzy,łatwość programowania i niską cenę urządzenia. Jednak wydajność i koszty odpowiednio zaprogramowanego układu FPGA mogą być odpowiedniejsze/lepsze.

2. Generalnie układy FPGA i GPU mają jednak różne obszary zastosowań:

  • Układy GPU pracując na liczbach zmiennoprzecinkowych oferują dokładniejsze wyniki, gdy układy FPGA są znacznie mniej wydajne, jeśli chodzi o liczby zmiennoprzecinkowe (ich zaimplementowanie wymaga więcej miejsca na układzie)
  • Układy GPU nie są ze względu na swą konstrukcję wydajne przy małych liczb całkowitych czy operacjach dzielenia. Liczby całkowite to bardziej domena procesora czy układów FPGA.
  • Układy GPU uzyskują pełną efektywność tam, gdzie problem można efektywnie uczynić równoległym i minimalną rolę odgrywają zależności w obliczeniach i korzystaniu ze wspólnych danych.
  • Szczyt efektywności układów FPGA występuje tam, gdzie korzysta się z 1 algorytmu (przeprogramowanie zajmuje czas) – choć zważywszy na malejący czas, potrzebny do przeprogramowania układu, ma to coraz mniejsze znaczenie.
  • Układy FPGA mają dużo większą wydajność I/O (wejścia/wyjścia) niż karty graficzne z układem GPU, ograniczone do złącz PCI-Express (nawet wysokowydajnych PCI x16 – złącza te są prawdziwym „wąskim gardłem” dla GPGPU) i nie wymagają nadzoru procesora.
  • Układy FPGA często lepiej radzą sobie z przetwarzaniem danych z licznych źródeł, oraz pewnych form obrazu niezgodnych ze standardami wg których tworzono układy GPU.
  • Układy FPGA są szczególnie cenne dla systemów czasu rzeczywistego, czyli takich, gdzie nawet 1 µs ma znaczenie i nie może być przerw związanych np. ze współdzieleniem zasobów.
  • Nie każdy rodzaj obrazu jest domeną GPU.

Tezy te znajdują częściowe potwierdzenie również w artykule „FPGAs and GPGPUs Vie for Military System Design Mindshare” czasopisma COTS Journal. (artykuł z 2012 roku).

Zalety systemów elektronicznych opartych o FPGA, są zatem chyba szczególnie interesujące, dla rozwiązań analogicznych do np. architektury mainframe, używanej do wielu równocześnie przeprowadzanych operacji (głównie transakcyjnych) oraz wskazują,że jest ona bardziej rozwiązaniem, uzupełniającym niektóre słabości architektury (GP)GPU. Co więcej architektury oparte o FPGA, dają możliwość implementacji rozwiązań informatycznych o charakterze sprzętowym i algorytmów niemożliwych do zrealizowania przy pomocy GPU.

Oczywiście abstrahując od obliczeń musimy również pamiętać,że układy FPGA mogą zastępować niektóre rzadkie i prototypowe urządzenia, jeśli zostaną odpowiednio zaprogramowane. GPU nie. Należy też pamiętać, że duża część problemów, związanych z programowaniem tak pod architekturą (GP)GPU oraz pod układami FPGA jest do rozwiązania w środowisku OpenCL (Wiki:[PL] [Ang]).

Ponieważ w chwili obecnej, nie stać mnie ani finansowo ani pod względem praktycznym na w pełni praktyczne porównanie tych rozwiązań – ewentualne komentarze i korekty osób które tego próbowały (i które pomogą ocenić praktyczną rolę tych rozwiązań czytelnikom tego bloga) są bardzo mile widziane. Dziękuję.

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s