Dlaczego ludzie używają procesorów graficznych do obliczeń o wysokiej wydajności zamiast bardziej specjalistycznych układów?

105

Z mojego zrozumienia, ludzie zaczęli używać procesorów graficznych do obliczeń ogólnych, ponieważ są one dodatkowym źródłem mocy obliczeniowej. I chociaż nie są szybkie jako procesor dla każdej operacji, mają wiele rdzeni, dzięki czemu można je lepiej dostosować do przetwarzania równoległego niż procesor. Ma to sens, jeśli posiadasz już komputer z procesorem graficznym do przetwarzania grafiki, ale nie potrzebujesz grafiki i chciałbyś więcej mocy obliczeniowej. Ale rozumiem również, że ludzie kupują procesory graficzne specjalnie w celu zwiększenia mocy obliczeniowej, bez zamiaru wykorzystywania ich do przetwarzania grafiki. Wydaje mi się to podobne do następującej analogii:

Muszę ścinać trawę, ale moja kosiarka jest lekka. Więc wyjmuję klatkę z wentylatora skrzynkowego, który trzymam w sypialni i wyostrzam ostrza. Przyklejam taśmą do mojej kosiarki i stwierdzam, że działa całkiem dobrze. Wiele lat później jestem oficerem ds. Zakupów w dużej firmie zajmującej się pielęgnacją trawników. Mam spory budżet na wydatki na narzędzia do ścinania trawy. Zamiast kupować kosiarki, kupuję kilka wentylatorów skrzynkowych. Ponownie działają dobrze, ale muszę zapłacić za dodatkowe części (takie jak klatka), których nie będę używać. (dla celów tej analogii musimy założyć, że kosiarki i wentylatory skrzynkowe kosztują mniej więcej tyle samo)

Dlaczego więc nie ma rynku dla układu lub urządzenia, które ma moc przetwarzania GPU, ale nie ma narzutu graficznego? Mogę wymyślić kilka możliwych wyjaśnień. Które z nich, jeśli w ogóle, jest poprawne?

  • Taka alternatywa byłaby zbyt droga do opracowania, gdy GPU jest już dobrą opcją (kosiarki do trawy nie istnieją, dlaczego nie użyć tego idealnie dobrego wentylatora skrzynkowego?).
  • Fakt, że „G” oznacza grafikę, oznacza jedynie zamierzone zastosowanie i nie oznacza tak naprawdę, że trzeba dokładać wszelkich starań, aby układ był lepiej przystosowany do przetwarzania grafiki niż jakikolwiek inny rodzaj pracy (kosiarki do trawy i wentylatory skrzynkowe są tym samym, gdy od razu do tego dochodzisz; żadne modyfikacje nie są konieczne, aby jedna działała podobnie jak druga).
  • Nowoczesne procesory graficzne noszą tę samą nazwę, co ich starożytni poprzednicy, ale w dzisiejszych czasach te wysokiej klasy nie są zaprojektowane specjalnie do przetwarzania grafiki (nowoczesne wentylatory skrzynkowe są zaprojektowane tak, aby działały głównie jako kosiarki do trawy, nawet jeśli starsze nie były).
  • Łatwo jest przetłumaczyć praktycznie każdy problem na język przetwarzania grafiki (trawę można kosić, dmuchając nad nią naprawdę szybko).

EDYTOWAĆ:

Odpowiedzi na moje pytanie, ale w oparciu o niektóre komentarze i odpowiedzi uważam, że powinienem wyjaśnić moje pytanie. Nie pytam, dlaczego wszyscy nie kupują własnych obliczeń. Oczywiście byłoby to przez większość czasu zbyt drogie.

Zauważyłem po prostu, że istnieje zapotrzebowanie na urządzenia, które mogą szybko wykonywać obliczenia równoległe. Zastanawiałem się, dlaczego wydaje się, że optymalnym takim urządzeniem jest jednostka przetwarzania grafiki, w przeciwieństwie do urządzenia zaprojektowanego do tego celu.

Alex S.
źródło
66
Ponieważ wyspecjalizowane do tego typu rzeczy; jest to w zasadzie ten sam rodzaj matematyki. A nVidia zbudowała i sprzedała płyty tylko dla GPU, aby ludzie mogli wykonywać tego typu masowo równoległe łamanie liczb.
Heptyt
7
Pamiętaj, że do żetonów dodaliśmy specjalne „jednostki”. AES odbywa się sprzętowo (tak myślę) na procesorach. AVX jest również zaimplementowany sprzętowo. Gdzie jednak się zatrzymasz? Chipmaker nie wie, czego potrzebujesz, a większość ludzi nie ma możliwości (technologicznych lub finansowych), aby mieć własne chipy zaprojektowane do bardzo specyficznych zadań. Karty graficzne to - jak powiedziano - jeden rodzaj wyspecjalizowanej architektury, która dobrze nadaje się do niektórych zadań. Nie nadają się do wszystkiego - ale do określonych zadań i dlatego tam są używane.
DetlevCM,
4
Dokładniejsza analogia zastąpiłaby wentylatory skrzynkowe kombajnami rolniczymi o szerokości 100 metrów.
MooseBoys
6
Mój komputer ma już gotowy do użycia procesor graficzny, więc zaprojektowanie i wyprodukowanie dedykowanego układu scalonego cofnęłoby mnie o kilka milionów.
PlasmaHH
19
Wypróbuj inną analogię. Załóżmy, że mamy wentylatory skrzyniowe i wirniki helikoptera. W naszym hipotetycznym świecie aplikacje dla wentylatorów skrzynkowych wymagały stopniowo większych wentylatorów pracujących z wyższymi prędkościami, dopóki nie skończyliśmy z 20-metrowymi wentylatorami z łopatkami z włókna węglowego, a masowa produkcja sprawiła, że ​​były tanie. Potem ktoś zdał sobie sprawę, że wentylator skrzynkowy o długości 20 m jest w zasadzie tylko wirnikiem śmigłowca z klatką wokół niego. To naprawdę jest tak podobne.
Graham

Odpowiedzi:

109

To naprawdę połączenie wszystkich twoich wyjaśnień. Tańsze i łatwiejsze, już istnieje, a design odszedł od czystej grafiki.


Współczesny procesor graficzny można postrzegać jako przede wszystkim procesory strumieniowe z dodatkowym sprzętem graficznym (oraz niektóre akceleratory o stałej funkcji, np. Do kodowania i dekodowania wideo). Programowanie GPGPU obecnie wykorzystuje interfejsy API specjalnie zaprojektowane do tego celu (OpenCL, Nvidia CUDA, AMD APP).

W ciągu ostatniej dekady lub dwóch procesory graficzne ewoluowały od potoku o stałej funkcji (prawie tylko grafika) do potoku programowalnego ( shadery pozwalają pisać niestandardowe instrukcje) na bardziej nowoczesne interfejsy API, takie jak OpenCL, które zapewniają bezpośredni dostęp do rdzeni shaderów bez towarzyszący potok grafiki.

Pozostałe bity graficzne są niewielkie. Stanowią one tak niewielką część kosztu karty, że pominięcie ich nie jest znacznie tańsze, a Ty ponosisz koszty dodatkowego projektu. Tak się zwykle nie dzieje - nie ma zorientowanego na obliczenia odpowiednika większości układów GPU - z wyjątkiem najwyższych poziomów, a te są dość drogie.

Zwykle używane są zwykłe układy graficzne do gier, ponieważ korzyści skali i względna prostota sprawiają, że są tanie i łatwe do rozpoczęcia. Jest to dość łatwa droga od programowania grafiki do przyspieszania innych programów za pomocą GPGPU. Łatwo jest również zaktualizować sprzęt, ponieważ dostępne są nowsze i szybsze produkty, w przeciwieństwie do innych opcji.


Zasadniczo wybory sprowadzają się do:

  • Procesor ogólnego przeznaczenia, doskonały do ​​rozgałęziania i kodu sekwencyjnego
  • Zwykły procesor graficzny do gier
  • GPU zorientowane na obliczenia, np. Nvidia Tesla i Radeon Instinct. Często nie obsługują one wcale grafiki, więc GPU jest trochę mylące. Używają jednak rdzeni GPU podobnych do zwykłych układów GPU, a kod OpenCL / CUDA / APP jest mniej więcej bezpośrednio przenośny.
  • Układy FPGA, które używają zupełnie innego modelu programowania i zwykle są bardzo kosztowne. To tutaj istnieje znacząca bariera wejścia. Nie są też niekoniecznie szybsze od GPU, w zależności od obciążenia.
  • Układy ASIC, niestandardowe układy (sprzętowe). Jest to bardzo, bardzo drogie i staje się tego warte tylko w ekstremalnej skali (mówimy co najmniej o tysiącach jednostek), a tam, gdzie jesteś pewien, że program nigdy nie będzie musiał się zmieniać. Są rzadko wykonalne w prawdziwym świecie. Będziesz także musiał przeprojektować i przetestować wszystko za każdym razem, gdy postęp technologiczny - nie możesz po prostu wymienić nowego procesora, tak jak w przypadku procesorów i procesorów graficznych.
Kok
źródło
16
Układy ASIC mają również sens, gdy komputer dosłownie się zwraca (wydobywanie kryptograficzne)
maniak ratchet
4
W rzeczywistości układy FPGA są często gorsze niż układy GPU. Problem polega na tym, że układy FPGA są bardzo elastyczne; mogą realizować wiele różnych operacji. Jednak obliczenia są na ogół formą matematyki, a tak naprawdę większość to tylko dwie operacje: dodawanie i mnożenie (odejmowanie i dzielenie są wariantami powyższego). Procesory graficzne są bardzo, bardzo dobre w tych dwóch operacjach, o wiele bardziej niż układy FPGA.
MSalters
19
Musisz wyjaśnić więcej na temat układów FPGA. Pomysł, że istnieje „krok naprzód”, jest nieco mylący. Są raczej krokiem w bok.
Yakk
6
Jako przykład tego ostatniego Google ma własne „jednostki przetwarzające Tensor” do uczenia maszynowego. W jakim stopniu są one dostosowane, nie jest jasne, ale są określane jako ASIC.
mbrig
4
@MSalters Jednym z głównych punktów sprzedaży układów FPGA w porównaniu do układów GPU jest wydajność / wat, która staje się coraz ważniejsza, gdy centra danych zaczynają uderzać w ścianę mocy (układy FPGA są generalnie bardziej wydajne energetycznie). Jeśli chodzi o matematykę, układy FPGA są porównywalne do układów GPU w arytmetyce stałoprzecinkowej i całkowitej, a jedynie w przypadku matematyki zmiennoprzecinkowej.
wilcroft,
32

Moja ulubiona analogia:

  • CPU : geniusz Polymath. Może robić jedną lub dwie rzeczy na raz, ale te rzeczy mogą być bardzo złożone.
  • GPU : mnóstwo pracowników o niskich kwalifikacjach. Każdy z nich nie może robić bardzo dużych problemów, ale w masie można wiele zrobić. Na twoje pytanie, tak, jest trochę grafiki, ale uważam, że jest marginalna.
  • ASIC / FPGA : Firma. Możesz zatrudnić tonę pracowników o niskich kwalifikacjach lub kilku geniuszy lub kombinację pracowników o niskich kwalifikacjach i geniuszy.

To, czego używasz, zależy od wrażliwości kosztów, stopnia, w jakim zadanie można zrównoleglać i innych czynników. Ze względu na sposób funkcjonowania na rynku procesory graficzne są najlepszym wyborem dla większości wysoce równoległych aplikacji, a procesory są najlepszym wyborem, gdy głównym problemem są moc i koszt jednostkowy.

Bezpośrednio na twoje pytanie: dlaczego GPU zamiast ASIC / FPGA? Koszt ogólny Nawet przy dzisiejszych zawyżonych cenach procesorów graficznych nadal jest (ogólnie) tańsze korzystanie z układów GPU niż projektowanie układów ASIC spełniających Twoje potrzeby. Jak wskazuje @ user912264, istnieją specjalne zadania, które mogą być przydatne dla układów ASIC / FPGA. Jeśli masz wyjątkowe zadanie i skorzystasz ze skali, warto zaprojektować układ ASIC / FPGA. W rzeczywistości możesz projektować / kupować / licencjonować projekty FPGA specjalnie do tego celu. Odbywa się to na przykład w celu zasilania pikseli w telewizorach o wysokiej rozdzielczości.

BobtheMagicMoose
źródło
7
Komentarze i tak nie mają na celu odpowiadania, a to wydaje mi się rozsądną odpowiedzią.
Raimund Krämer
1
@BobtheMogicMoose Ale może być o rząd wielkości szybsze użycie niestandardowego układu FPGA zaprojektowanego do analizy genomowej niż posiadanie równoważnego kodu w GPU. Gdy płacisz naukowcom za siedzenie i czekanie na wyniki, szybsza FPGA zwraca się bardzo szybko.
doneal24
FPGA stają się również znacznie bardziej dostępne dla zwykłego programisty - Microsoft na przykład ma rozwiązanie AI w chmurze wykorzystujące FPGA (Project BrainWave). AWS ma również pewne oferty. Każdy może wynająć niestandardowe układy FPGA do specjalistycznych zadań bez konieczności samodzielnego ich budowania, co nie jest możliwe w przypadku wielu zastosowań nawet kilka lat temu.
brichins
Tak, myślę, że istnieją nawet zestawy hobby FPGA, które są porównywalne do arduino raspberry-pi. Nadal uważam, że programowanie układów FPGA jest znacznie bardziej kosztowne niż bardziej rozwinięte architektury.
BobtheMagicMoose
10

Twoja analogia jest zła. Analogicznie, gdy kupujesz sprzęt dla dużej firmy zajmującej się pielęgnacją trawników, zakładasz , że dostępne są dobre kosiarki do trawy. W świecie komputerowym tak nie jest - procesory graficzne są najlepszym dostępnym narzędziem.

Koszty badań i rozwoju oraz możliwy wzrost wydajności specjalistycznego układu są prawdopodobnie zbyt wysokie, aby uzasadnić jego wykonanie.

To powiedziawszy, jestem świadomy tego, że Nvidia wypuszcza niektóre procesory graficzne specjalnie do obliczeń ogólnego przeznaczenia - nie miały one wyjść wideo - to trochę tak, jak sprzedawanie fanów boxów z usuniętymi klatkami.

jstbnfdsrtah
źródło
9

Oczywiście można użyć specjalistycznych układów, zarówno pod względem wydajności energetycznej, jak i prędkości obliczeniowej. Pozwól, że opowiem Ci historię wydobywania Bitcoinów:

  • Bitcoin jest nowy, maniacy wydobywają swoje procesory.
  • Bitcoin to nieco nowy, inteligentny maniak wydobywający za pomocą swoich układów GPU.
  • Bitcoin jest teraz (trochę) sławny, ludzie kupują FPGA.
  • Bitcoin jest teraz sławny (2013), nawet nowicjusze kupują układy ASIC („Application Specific Integrated Circuits”), aby efektywnie kopać.
  • Blokuj spadki nagród (okresowo), nawet stare ASIC nie są już opłacalne.

Więc nie, nie ma powodu, aby używać GPU zamiast specjalistycznego „gigantycznego kalkulatora”. Im większe zachęty ekonomiczne, tym bardziej sprzęt się specjalizuje. Są jednak dość trudne do zaprojektowania i niewykonalne, jeśli nie produkujesz tysięcy jednocześnie. Jeśli to nie jest opłacalne do projektowania chipów, można kupić jeden z tych od najbliższego Walmart.

TL; DR Oczywiście możesz używać bardziej specjalistycznych układów.

MCCCS
źródło
1
„Oczywiście możesz używać bardziej wyspecjalizowanych układów” - ale istnieją specjalne układy do bitcoinów (SHA-256), a następnie do litecoin (scrypt) i to wszystko. Wydajny sprzęt komputerowy na inne problemy nie istnieje. (To znaczy z wydajnością wyższą niż obecne wysokiej klasy układy GPU)
Agent_L
8

To, co opisujesz w swojej analogii, jest dokładnie tym, co się wydarzyło. Gdy tylko złapałeś wentylator i wyostrzyłeś ostrza, aby spróbować użyć go jako kosiarki, grupa badań zauważyła: „Hej, mamy tutaj całkiem niezły wielordzeniowy procesor, spróbujmy go użyć do obliczeń ogólnego zastosowania! „.

Wynik był dobry i piłka zaczęła się toczyć. Procesor graficzny przeszedł z urządzenia graficznego do obsługi obliczeń ogólnego zastosowania, aby pomóc w najbardziej wymagających sytuacjach.

Ponieważ zresztą najbardziej wymagającą obliczeniowo operacją, jakiej oczekujemy od komputerów, jest grafika. Wystarczy spojrzeć na oszałamiające postępy w dzisiejszych grach w porównaniu z tym, jak kilka lat temu. Oznacza to, że włożono wiele wysiłku i pieniędzy w opracowanie GPU, a fakt, że można je również wykorzystać do przyspieszenia pewnej klasy obliczeń ogólnego przeznaczenia (tj. Niezwykle równoległych), tylko zwiększył ich popularność.

Podsumowując, pierwsze wyjaśnienie, które oferujesz, jest najdokładniejsze:

  • Taka alternatywa byłaby zbyt droga do opracowania, gdy GPU jest już dobrą opcją.

Procesory graficzne, które już tam są, są łatwo dostępne dla wszystkich i działały.

Mario Chapa
źródło
5
Nie mogę się zgodzić, że „najbardziej wymagającą obliczeniowo operacją” jest grafika, w zależności oczywiście od tego, kim dokładnie jesteśmy „my”. Tak, dla zwykłych użytkowników, ale w społeczności naukowej i inżynieryjnej jest wiele rzeczy bardziej wymagających niż grafika. W końcu akceptowalną grafikę (jak w przypadku gier) można wykonać za pomocą jednego komputera PC i GPU klasy średniej. Znaczące problemy często łączą setki lub tysiące takich jednostek, aby uzyskać wydajność w zakresie petaflop - a wtedy problemy mogą nadal trwać kilka dni lub tygodni.
jamesqf
Najbardziej wymagający obliczeniowo operacji oczekuję od mojego komputera jest technicznie grafiki, ale struktura-z-ruchu obliczenia nie są, co większość ludzi (GPU) lub projektanci myśleć, gdy słyszą słowo „grafika”.
Mark
5

W szczególności procesory graficzne nie są „rdzeniami” w znaczeniu „równoległości zadań”. W przeważającej części ma on postać „równoległości danych”. SIMD to „jedna instrukcja z wieloma danymi”. Oznacza to, że nie zrobiłbyś tego:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Oznaczałoby to, że masz 1024 wskaźników instrukcji, z których wszystkie wykonują osobne zadania postępujące w różnym tempie. SIMD, czyli „przetwarzanie wektorowe”, wykona instrukcje dla całych macierzy naraz, podobnie jak to:

c = a * b

„Pętle” znajdują się w instrukcjach „*” i „=”, a nie poza instrukcjami. Powyższe zrobiłoby to dla wszystkich 1024 elementów jednocześnie, dla wskaźnika instrukcji SAME dla wszystkich z nich. To tak, jakby mieć trzy ogromne rejestry dla a, b i c. Kod SIMD jest bardzo ograniczony i działa dobrze tylko w przypadku problemów, które nie są nadmiernie „rozgałęzione”.

W realistycznych przypadkach te wartości SIMD nie są tak duże jak 1024 elementy. Wyobraź sobie zmienną, która jest połączoną ze sobą grupą int32. Możesz myśleć o mnożeniu i przypisywać je jako prawdziwą instrukcję maszynową.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

Prawdziwe procesory graficzne są bardziej skomplikowane niż SIMD, ale to ich istota. Dlatego nie możesz po prostu wrzucić losowego algorytmu procesora na procesor graficzny i oczekiwać przyspieszenia. Im więcej instrukcji rozgałęzia algorytm, tym mniej jest odpowiedni dla GPU.

Obrabować
źródło
5

Pozostałe odpowiedzi tutaj są całkiem dobre. Wrzucę też moje 2 centy.

Jednym z powodów, dla których procesory stały się tak wszechobecne, jest ich elastyczność. Możesz przeprogramować je dla nieskończonej różnorodności zadań. W dzisiejszych czasach firmy produkujące produkty są tańsze i szybsze, aby w coś wbić mały procesor lub mikrokontroler i zaprogramować jego funkcjonalność niż opracowywanie niestandardowych obwodów do wykonania tego samego zadania.

Korzystając z tego samego urządzenia, co inne, możesz skorzystać ze znanych rozwiązań problemów z korzystaniem z tego samego urządzenia (lub podobnego). W miarę dojrzewania platformy Twoje rozwiązania ewoluują, stają się bardzo dojrzałe i zoptymalizowane. Ludzie kodujący na tych urządzeniach również zdobywają wiedzę i stają się bardzo dobrzy w swoim fachu.

Jeśli miałbyś stworzyć nowy typ urządzenia od zera, jakąś alternatywę dla procesora graficznego, nawet najwcześniejsi odbiorcy zajęliby wiele lat, aby naprawdę dobrze wiedzieć, jak go używać. Jeśli podłączysz ASIC do swojego procesora, jak zoptymalizujesz obliczenia odciążające na tym urządzeniu?

Społeczność architektów komputerowych boryka się z tym pomysłem od kilku lat (oczywiście wcześniej była popularna, ale ostatnio doświadczyła renesansu). Te „akceleratory” (ich termin) mają różny stopień przeprogramowalności. Problem polega na tym, jak wąsko określasz zakres problemu, który może rozwiązać twój akcelerator? Rozmawiałem nawet z niektórymi ludźmi, którzy pracowali nad stworzeniem akceleratora wykorzystującego obwody analogowe z wzmacniaczami operacyjnymi do obliczania równań różniczkowych. Świetny pomysł, ale niezwykle wąski zakres.

Gdy będziesz miał działający akcelerator, siły ekonomiczne zdecydują o twoim losie. Bezwładność rynku jest niesamowitą siłą. Nawet jeśli coś jest świetnym pomysłem, czy opłacalne jest przefakturowanie działających rozwiązań w celu korzystania z tego nowego urządzenia? Może, może nie.

Procesory graficzne są tak naprawdę straszne w przypadku niektórych rodzajów problemów, więc wiele osób / firm pracuje na innych typach urządzeń. Ale procesory graficzne są już tak mocno zakorzenione, czy ich urządzenia będą kiedykolwiek opłacalne ekonomicznie? Chyba zobaczymy.

Edycja: Rozszerzając nieco moją odpowiedź, teraz kiedy jestem poza autobusem.

Przestudiowanym studium przypadku jest projekt Intel Larrabee. Zaczęło się jako równoległe urządzenie przetwarzające, które może tworzyć grafiki w oprogramowaniu; nie miał specjalistycznego sprzętu graficznego. Rozmawiałem z kimś, kto pracował nad projektem, a głównym powodem, dla którego powiedzieli, że się nie udał i został anulowany (oprócz okropnej polityki wewnętrznej) było to, że po prostu nie mogli zmusić kompilatora do stworzenia dobrego kodu dla niego. Oczywiście wygenerował działający kod, ale jeśli cały punkt produktu jest maksymalnie wydajny, lepiej mieć kompilator, który wytwarza całkiem optymalny kod. To potwierdza moją wcześniejszą wypowiedź na temat braku głębokiej wiedzy specjalistycznej w zakresie sprzętu i oprogramowania, ponieważ nowe urządzenie stanowi duży problem.

Niektóre elementy projektu Larrabee trafiły do ​​Xeon Phi / Intel MIC. Ten produkt trafił na rynek. Skoncentrowano się całkowicie na zrównolegleniu obliczeń naukowych i innych obliczeń typu HPC. Wygląda na to, że jest to teraz komercyjna porażka. Inna osoba, z którą rozmawiałem w firmie Intel, sugeruje, że po prostu nie są konkurencyjne cenowo / wydajnie w stosunku do układów GPU.

Ludzie próbowali zintegrować syntezę logiczną układów FPGA z kompilatorami, aby można było automatycznie generować kod dla akceleratorów FPGA. Nie działają tak dobrze.

Jednym z miejsc, które wydaje się być naprawdę żyzną glebą dla akceleratorów lub innych alternatyw dla GPU, jest chmura. Ekonomia skali istniejąca w takich dużych firmach jak Google, Amazon i Microsoft sprawia, że ​​warto inwestować w alternatywne systemy obliczeniowe. Ktoś już wspomniał o procesorach tensorowych Google. Microsoft ma FPGA i inne rzeczy w całej swojej infrastrukturze Bing i Azure. Ta sama historia z Amazonem. To absolutnie sensowne, jeśli waga może zrównoważyć twoją inwestycję w czas, pieniądze i łzy inżyniera.

Podsumowując, specjalizacja stoi w sprzeczności z wieloma innymi rzeczami (ekonomia, dojrzałość platformy, wiedza inżynierska itp.). Specjalizacja może znacznie poprawić wydajność, ale zawęża zakres zastosowania urządzenia. Moja odpowiedź skupiła się na wielu negatywach, ale specjalizacja ma również wiele zalet. Należy go bezwzględnie śledzić i badać, a jak już wspomniałem, wiele grup prowadzi go dość agresywnie.

Przepraszamy, edytuj jeszcze raz: Myślę, że twoje początkowe założenie jest błędne. Uważam, że mniej chodziło o poszukiwanie dodatkowych źródeł mocy obliczeniowej, a bardziej o rozpoznanie szansy. Programowanie grafiki jest bardzo algebrą liniową, a procesor graficzny został zaprojektowany do wydajnego wykonywania typowych operacji, takich jak mnożenie macierzy, operacje wektorowe itp. Operacje, które są również bardzo powszechne w obliczeniach naukowych.

Zainteresowanie procesorami graficznymi zaczęło się, gdy ludzie zdali sobie sprawę, że obietnice złożone przez projekt EPIC Intel / HP były znacznie zawyżone (koniec lat 90. na początku 2000 roku). Nie było ogólnego rozwiązania dla równoległości kompilatora. Więc zamiast mówić „gdzie znajdziemy więcej mocy obliczeniowej, och, moglibyśmy wypróbować procesor graficzny”, myślę, że bardziej „mamy coś, co jest dobre w obliczeniach równoległych, czy możemy to uczynić bardziej ogólnie programowalnym”. Wiele osób było zaangażowanych w naukową społeczność komputerową, która miała już równoległy kod Fortran, który mogliby uruchomić na maszynach Cray lub Tera (Tera MTA miała 128 wątków sprzętowych). Być może nastąpił ruch z obu kierunków, ale słyszałem tylko wzmianki o pochodzeniu GPGPU z tego kierunku.

NerdPirate
źródło
Czy przez „akceleratory” masz na myśli niestandardowy sprzęt lub supergromady węzłów obliczeniowych małej mocy? Czy możesz to rozwinąć, podając odniesienie do przykładowego sprzętu przyspieszającego.
manav mn
Przepraszam, myślałem, że wyjaśniłem to z kontekstu. Akcelerator to tylko termin ogólny na koprocesor lub kartę odciążającą. Zmienny punkt pierwotnie znajdował się w koprocesorze, a nie w głównym procesorze, i byłby uważany za akcelerator. GPU, DSP, Xeon Phi, FPGA, kiedy są na karcie PCIe lub czymś podobnym, analogiczne równanie różniczkowe, o którym wspominałem, są urządzenia, które pomagają w wirtualizacji, trwają badania nad akceleratorami sieci neuronowych. To są wszystkie przykłady akceleratorów.
NerdPirate
4

wprowadź opis zdjęcia tutaj

ASIC (niestandardowy krzem) jest bardzo szybki, ale jego zaprojektowanie i wyprodukowanie jest bardzo drogie. Układy ASIC były specyficzne dla określonego celu, a procesor był jednym z podejść, które pozwalały na „programowanie” komputerów, aby zadania komputerowe mogły być wykonywane przez oprogramowanie. Wczesne procesory dawały ludziom możliwość korzystania z mocy ASIC bez ogromnych kosztów poprzez programowanie układu w terenie. Takie podejście okazało się tak skuteczne, że dało początek (bardzo) szybkiemu komputerowi, którego używasz teraz.

Dlaczego więc procesory graficzne?

W połowie lat 90. firma 3DFX zdała sobie sprawę, że zadania renderowania 3D były tak specyficzne, że niestandardowy układ ASIC działałby DUŻO lepiej niż procesor. Stworzyli komputerowy koprocesor, który odciążył zadania renderowania 3D z CPU na ten koprocesor, który nazwali „GPU”. Konkurencja i popyt rynkowy sprawiły, że innowacje w tej przestrzeni doprowadziły do ​​tego, że procesory graficzne przeprowadzały obliczenia DUŻO szybciej niż procesory, więc pojawiło się pytanie: „Dlaczego nie mogę użyć GPU, aby zgnieść moje liczby zamiast procesora?” Producenci GPU dostrzegli zapotrzebowanie i sposób na zarobienie większych pieniędzy, dlatego zaczęli zmieniać swoje platformy, aby umożliwić programistom korzystanie ze swojego sprzętu. Ale sprzęt sprzętowy był tak specyficzny dla określonego celu, że istniały i nadal istnieją ograniczenia w tym, o co możesz poprosić GPU. Nie będę szczegółowo omawiać, dlaczego tutaj.

Dlaczego więc nie było więcej krzemu przeznaczonego do określonego celu? Dlaczego po prostu grafika?

Dwa powody: 1) Cena. Procesory graficzne miały dobry rynek i mogły to uzasadnić, ale nawet wtedy było to ogromne ryzyko. Nikt tak naprawdę nie wiedział, czy 3DFX może przynieść zysk (okazuje się, że tak naprawdę nie mogli i przestali działać). Nawet teraz, przy wielkości rynku GPU, jest tak naprawdę tylko 3 konkurentów. 2) Procesory faktycznie spełniały potrzebę „niestandardowego krzemu” z rozszerzeniami instrukcji. Wróć do MMX - tak naprawdę Intel próbował przyspieszyć grafikę w procesorze, gdy 3DFX nabierał prędkości. Od tego czasu zestaw instrukcji x86 urósł do rangi wszystkich tych niestandardowych rozszerzeń. Wiele z tych rozszerzeń miało wówczas sens (np. MMX), ale teraz są w dużej mierze martwe w procesorze. Nie można ich jednak usunąć, ponieważ wtedy psuje istniejące oprogramowanie. To' w rzeczywistości jednym z punktów sprzedaży ARM - ARM jest zestawem rozebranych instrukcji. Nie ma tylu rozszerzeń instrukcji, ale sprawia, że ​​krzem jest mniejszy i tańszy w produkcji.

Wydaje mi się, że można zarobić dużo pieniędzy, jeśli można zmniejszyć koszt niestandardowego krzemu. Czy nikt nad tym nie pracuje?

Istnieje technologia zwana FPGA - programowalna macierz bramek, która istnieje od pierwszych dni przetwarzania. Zasadniczo jest to mikroczip, który można zaprojektować „w terenie” za pomocą oprogramowania. To bardzo fajna technologia, ale cała struktura potrzebna do zaprogramowania układu zajmuje DUŻO krzemu i powoduje, że układy działają z dużo niższymi częstotliwościami zegara. Układy FPGA mogą być szybsze niż procesory, jeśli masz wystarczającą ilość krzemu w układzie ORAZ możesz skutecznie równolegle wykonać zadanie. Ale są ograniczone w logice, jaką możesz na nich postawić. Wszystkie oprócz najdroższych układów FPGA były wolniejsze niż układy GPU do wczesnego wydobywania bitcoinów, ale ich odpowiedniki ASIC skutecznie zakończyły opłacalność wydobywania układów GPU. Inne kryptowaluty stosowały określone algorytmy, których nie można zrównoleglać, więc układy FPGA i ASIC ”

Głównym ogranicznikiem układów FPGA jest rozmiar krzemu - ile logiki można zmieścić na układzie? Drugi to taktowanie zegara, ponieważ w FPGA trudno jest zoptymalizować takie rzeczy, jak hotspoty, wycieki i przesłuchy. Nowsze metody wytwarzania zminimalizowały te problemy, a Intel połączył siły z Altera, aby zapewnić układ FPGA, który może być wykorzystywany przez inżynierów do wykorzystania zalet „niestandardowego krzemu” jako koprocesora na serwerze. W pewnym sensie nadchodzi.

Czy układy FPGA kiedykolwiek zastąpią procesory i układy GPU?

Prawdopodobnie nie w najbliższym czasie. Najnowsze procesory i układy graficzne są MASYWNE, a krzem doskonale dostrojony pod kątem wydajności termicznej i elektrycznej. Nie można zoptymalizować układów FPGA w taki sam sposób, jak niestandardowego ASIC. Z wyjątkiem niektórych przełomowych technologii, procesor prawdopodobnie pozostanie rdzeniem twojego komputera dzięki koprocesorom FPGA i GPU.

Robear
źródło
1
Wiele z tych rozszerzeń miało wówczas sens (np. MMX), ale teraz są w dużej mierze martwe w procesorze. Renderowanie 3D jest dalekie od jedynego przypadku użycia karty SIMD. Większość „wagi” MMX to jednostki wykonawcze, które można współdzielić z szerszym wektorem, takim jak SSE2, AVX2 i AVX512. Są one szeroko stosowane do kodowania wideo wysokiej jakości na procesorach i wielu innych zadań, w tym obliczeń o wysokiej wydajności. Ale także implementacje bibliotek memchr, strlen i wielu innych rzeczy. np. filtrując tablicę więcej niż 1 element na raz
Peter Cordes,
3

Rzeczywiście istnieją wyspecjalizowane karty do szybkich obliczeń, np. Xilinx ma listę 178 kart PCI-e wykorzystujących układy FPGA, a około jedna trzecia z nich to „układy liczbowe” z jednym lub kilkoma mocnymi układami FPGA i dużą ilością płytka pamięci DDR. Istnieją również wysokowydajne płyty DSP ( przykład ) przeznaczone do zadań obliczeniowych o wysokiej wydajności.

Myślę, że popularność kart GPU wynika z ich celu, jakim jest szersza grupa klientów. Nie musisz inwestować w specjalny sprzęt, aby grać z Nvidią CUDA, więc zanim wykonasz zadanie wymagające specjalnego sprzętu, procesory graficzne Nvidia będą miały przewagę konkurencyjną, ponieważ już wiesz, jak je programować.

Dmitrij Grigoriew
źródło
2

Myślę, że odpowiedź na twoje pytanie zależy od tego, jak zdefiniować obliczenia o wysokiej wydajności.

Zasadniczo obliczenia o wysokiej wydajności są związane z czasem obliczeń. W takim przypadku lubię udostępniać łącze wysokowydajnego klastra obliczeniowego .

Link jest określony przyczynę użycia GPU; Korzystanie z kart graficznych (a raczej ich układów GPU) do wykonywania obliczeń na potrzeby obliczeń gridowych jest znacznie bardziej ekonomiczne niż używanie procesorów, mimo że jest mniej precyzyjne.

Cloud Cho
źródło
2
Wysokiej klasy GPGPU mają dobrą przepustowość dla 64-bitowej doubleprecyzji, a nie tylko 32-bitowej pojedynczej precyzji float. (Niektóre zwykłe procesory graficzne oszczędzają na HW dla double). Wszyscy główni dostawcy obsługują matematykę IEEE FP (myślę, że nawet w przypadku denormali). Tak więc nie ma utraty precyzji, chyba że chcesz wymienić precyzję na wydajność, np. 16-bitowy FP z pół-precyzją, który ma jeszcze lepszą przepustowość na niektórych urządzeniach (i oczywiście połowę przepustowości pamięci). Kod o wysokiej wydajności w procesorach często wykorzystuje również 32-bit float, aby uzyskać dwa razy więcej elementów na wektor SIMD i połowę przepustowości pamięci.
Peter Cordes,
1
@PeterCordes Widziałem trochę pracy w obliczeniach przybliżonych, która nawet spada do ośmiobitowej liczby zmiennoprzecinkowej, chociaż nie sądzę, aby wiele procesorów graficznych wspierało to sprzętowo.
JAB