Dlaczego Mike Pound mierzy zdolności obliczeniowe swojego komputera za pomocą kart graficznych, a nie procesorów?

17

Niedawno oglądałem świetne wideo Computerphile na temat haseł, w którym Mike Pound chwali się superkomputerem swojej firmy z 4 kartami graficznymi (dokładnie Titan X).

Jako entuzjasta symulacji numerycznych marzę o zbudowaniu pulpitu wyłącznie do prac symulacyjnych. Dlaczego Mike Pound mierzy zdolności obliczeniowe swojego komputera za pomocą kart graficznych, a nie procesorów? Gdybym budował komputer, o co powinienem dbać bardziej?

Ra31513
źródło
11
Nie sądzę, aby było to pytanie Gorilla vs. Shark ... Istnieje proste pytanie: „Dlaczego Mike Pound mierzy zdolności obliczeniowe swojego komputera za pomocą kart graficznych, a nie procesorów?” na które można odpowiedzieć, a jego odpowiedź ma konstruktywną wartość dla przyszłych czytelników.
Maybe_Factor
6
@gnat: nawet nie blisko. Oczywiście pytanie w obecnej formie nie dotyczy inżynierii oprogramowania. Myślę jednak, że można to interpretować jako pytanie dotyczące inżynierii systemu, gdzie system = „połączenie sprzętu + oprogramowania”.
Doc Brown,
10
Komputer z 4 kartami graficznymi nie jest superkomputerem (podobnie zresztą jak klaster 10 Raspberry Pis).
Matti Virkkunen,
10
To tylko bardzo droga konfiguracja komputera, a nie superkomputer ...
Bakuriu,
3
Czy nie jest prosta odpowiedź na pytanie „Dlaczego Mike Pound mierzy zdolności obliczeniowe swojego komputera za pomocą kart graficznych”, ponieważ w kontekście łamie się hasło? Jeśli masz problem z przestrzenią, czymś innym, na czym musisz się martwić, może być czymś zupełnie innym.
JimmyJames,

Odpowiedzi:

32

Mike Pound najwyraźniej ceni zdolność obliczeniową kart graficznych wyższą niż zdolność obliczeniowa procesorów.

Dlaczego? Karta graficzna składa się zasadniczo z WIELU uproszczonych procesorów, które działają równolegle. W przypadku niektórych prac symulacyjnych wiele obliczeń można łatwo sparaliżować i przetwarzać równolegle na tysiącach rdzeni dostępnych na kartach graficznych, skracając całkowity czas przetwarzania.

o który przedmiot powinienem dbać bardziej? To naprawdę zależy od obciążenia, na którym ci zależy, oraz od tego, jak obciążenie to może / jest sparaliżowane do użycia na karcie graficznej. Jeśli obciążenie jest zawstydzająco równoległym zestawem prostych obliczeń, a oprogramowanie zostało napisane, aby korzystać z dostępnych kart graficznych, wówczas więcej kart graficznych będzie miało znacznie większy wpływ na wydajność niż więcej procesorów (dolar za dolara).

Może czynnik
źródło
5
Dodawanie niektórych liczb. Powiedzmy, że twoim głównym komputerem byłby AMD Epyc Server, 64 rdzenie, 128 z Hyperthreading. Powiedzmy też, że „rdzeń” karty graficznej jest tylko 10% tak szybki. JEDEN TitanX wciąż ma 3072 rdzeni cuda, około 12000 na konfigurację. Masz pomysł? JEŚLI możesz uruchomić problem na karcie graficznej, nie jest to „szybsze” - to jak porównywanie prędkości powozu z samochodem Formuły 1.
TomTom,
3
+1 za „żenująco równoległy zestaw prostych obliczeń”, bardzo dobrze napisane. Krótko i na temat.
Michael Viktor Starberg
11
@TomTom: W rzeczywistości moim preferowanym porównaniem jest porównanie samochodu Formuły 1 (twojego CPU) z pociągiem kulowym. Jasne, pociąg i samochód mają w przybliżeniu taką samą prędkość. Ale pociąg może przewieźć 1000 osób z A do B szybciej niż samochód Formuły 1.
slebetman
2
@slebetman chodzi o to, że procesor jest zwykle znacznie szybszy w wydajności jednordzeniowej (nie w przybliżeniu tej samej prędkości). Może uda nam się pójść na kompromis i porównać naddźwiękowy samolot odrzutowy z lokomotywą parową.
Darren Ringer
2
Gdybym musiał wybrać analogię opartą na pojeździe, powiedziałbym, że CPU jest jak myśliwiec (jest znacznie szybszy w transporcie punkt-punkt i ma wiele sztuczek, których inne pojazdy nie mogą, ale mogą tylko przenosić bardzo mały ładunek), podczas gdy GPU jest jak statek towarowy (może przenosić znacznie więcej ładunków równolegle, ale ma znacznie wolniejszy obrót).
Lie Ryan,
5

Sprawdź https://developer.nvidia.com/cuda-zone (i Google cuda nvidia, aby uzyskać więcej informacji). Architektura cuda i wysokiej klasy karty graficzne są dość szeroko stosowane w superkomputerach stacjonarnych. Zazwyczaj można złożyć kilka kart Tflop za mniej niż 10 000 USD (USD) przy użyciu gotowych komponentów Whitebox.

Więc...

Jako entuzjasta symulacji numerycznych marzę o zbudowaniu pulpitu wyłącznie do prac symulacyjnych

... cuda to dla ciebie najlepsza gra w mieście. Może spróbuj ponownie zapytać na /scicomp// lub w innej witrynie stosu wymiany, bardziej bezpośrednio zaangażowanej w tego rodzaju sprawy.

(Nawiasem mówiąc, zakładam, że nie podoba ci się pomysł, że mówimy tutaj o masowo równoległym programowaniu, więc może być konieczne zapoznanie się z tym paradygmatem projektowania algorytmów.)

John Forkosh
źródło
I jak zwykle wracamy do Ordos.
Michael Viktor Starberg
2
@MichaelViktorStarberg Czy tylko ja nie rozumiem odniesienia do Ordos?
MarnixKlooster ReinstateMonica
Obawiam się, że jesteś ...: /
Ismael Miguel
4
@MarnixKlooster: Miałem do Google „Ordos”. Nie jestem pewien, co „miasto-widmo” w Chinach ma wspólnego z superkomputerami lub teraflopami.
Robert Harvey
@MarnixKlooster Rzeczywiście nie jesteś.
jpmc26,
2

Jeśli budowałem komputer, o co powinienem dbać bardziej?

Z praktycznego punktu widzenia prawdopodobnie powinieneś zwrócić uwagę na płytę główną i procesor, biorąc pod uwagę względną trudność aktualizacji w porównaniu do GPU. Po zakupie jest okropny czas na odkrycie, że nie masz miejsca na cztery procesory graficzne lub wystarczająco szybki procesor, aby wszystkie były zajęte.

Należy również pamiętać, że wydajność procesora graficznego jest najczęściej zgłaszana w przypadku FLOP o pojedynczej precyzji, a spada nieco w przypadku podwójnej precyzji. Jeśli potrzebujesz dodatkowej precyzji w swoich symulacjach, skończysz znacznie poniżej reklamowanej prędkości.

Off do wyścigów inżynierii oprogramowania

Istnieją naprawdę dwie główne obawy z punktu widzenia oprogramowania, wąskie gardło von Neumanna i model programowania. Procesor ma dość dobry dostęp do pamięci głównej, GPU ma na pokładzie dużą ilość szybszej pamięci. Nie jest nieznane, że czas przenoszenia danych do i z GPU całkowicie neguje jakiekolwiek zwycięstwo prędkości. Ogólnie procesor wygrywa w przypadku umiarkowanych obliczeń na dużych ilościach danych, podczas gdy GPU przoduje w ciężkich obliczeniach na mniejszych ilościach. Wszystko to prowadzi nas do modelu programowania.

Na wysokim poziomie problemem jest starożytna i honorowa debata MIMD / SIMD. Systemy z wieloma instrukcjami / wieloma danymi odniosły największe sukcesy w informatyce ogólnej i komercyjnej. W tym modelu, który obejmuje SMP, istnieje wiele procesorów, z których każdy wykonuje swój własny strumień instrukcji. To komputerowy odpowiednik francuskiej kuchni, w której kierujesz niewielką liczbą wykwalifikowanych kucharzy do wykonania stosunkowo skomplikowanych zadań.

Z drugiej strony systemy z pojedynczą instrukcją / wieloma danymi bardziej przypominają ogromne pomieszczenie pełne urzędników przykutych do biur, zgodnie z instrukcjami z głównego sterownika. „Wszyscy DODAJ wiersze 3 i 5!” Był używany w czystej postaci w ILLIAC i niektórych systemach „mini-super”, ale zaginął na rynku. Obecne procesory graficzne są bliskimi kuzynami, są bardziej elastyczne, ale mają tę samą ogólną filozofię.

Podsumowując krótko:

  • Dla każdej operacji procesor będzie szybszy, a GPU może wykonać wiele jednocześnie. Różnica jest najbardziej widoczna w przypadku liczb zmiennoprzecinkowych 64-bitowych.
  • Rdzenie procesora mogą działać na dowolnym adresie pamięci, dane GPU muszą być spakowane na mniejszym obszarze. Wygrywasz tylko wtedy, gdy wykonujesz wystarczającą liczbę obliczeń, aby zrównoważyć czas transferu.
  • Kod ciężki w warunkach warunkowych zwykle będzie szczęśliwszy na CPU.
Matthew Gauthier
źródło