Dlaczego wciąż używamy procesorów zamiast GPU?
Coraz częściej stosuje się GPU do zadań nie graficznych, takich jak obliczenia ryzyka, obliczenia dynamiki płynów i analizy sejsmiczne. Co nas powstrzymuje od adaptacji urządzeń z procesorem GPU?
Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - podsekcji Stack Exchange, grupy dyskusyjnej poświęconej tematyce społecznościowej.
Pytanie
Czytnik SuperUser Ell jest na bieżąco z nowinkami technicznymi i jest ciekawy, dlaczego nie używamy więcej systemów opartych na GPU:
Wydaje mi się, że w dzisiejszych czasach wiele obliczeń odbywa się na GPU. Oczywiście są tam wykonywane grafiki, ale za pomocą CUDA i podobnych, AI, algorytmów mieszających (think Bitcoins) i innych są również wykonywane na GPU. Dlaczego nie możemy po prostu pozbyć się procesora i korzystać z GPU na własną rękę? Co sprawia, że GPU jest o wiele szybsze niż procesor?
Dlaczego tak naprawdę? Co czyni procesor wyjątkowym?
Odpowiedź
Pomocnik SuperUser DragonLord oferuje dobrze obsługiwany przegląd różnic pomiędzy procesorami graficznymi i procesorami:
Odpowiedź TL; DR: Procesory graficzne mają o wiele więcej rdzeni procesora niż procesory, ale ponieważ każdy rdzeń GPU działa znacznie wolniej niż rdzeń procesora i nie ma funkcji wymaganych w nowoczesnych systemach operacyjnych, nie są one odpowiednie do wykonywania większości operacji przetwarzania w codziennej pracy. Są one najbardziej odpowiednie do operacji wymagających dużej mocy obliczeniowej, takich jak przetwarzanie wideo i symulacje fizyki.
Szczegółowa odpowiedź: GPGPU jest wciąż stosunkowo nową koncepcją. Procesory graficzne były początkowo używane do renderowania wyłącznie grafiki; Wraz z rozwojem technologii wykorzystano dużą liczbę rdzeni w procesorach graficznych w porównaniu z procesorami, rozwijając możliwości obliczeniowe procesorów graficznych, dzięki czemu mogą przetwarzać wiele równoległych strumieni danych jednocześnie, bez względu na to, jakie dane mogą być. Podczas gdy procesory graficzne mogą mieć setki lub nawet tysiące procesorów strumieniowych, każdy z nich działa wolniej niż rdzeń procesora i ma mniej funkcji (nawet jeśli są one kompletne i można je zaprogramować do uruchamiania dowolnego programu, który może uruchomić procesor). Funkcje brakujące w procesorach graficznych obejmują przerwania i pamięć wirtualną, które są wymagane do wdrożenia nowoczesnego systemu operacyjnego.
Innymi słowy, procesory i procesory graficzne mają znacznie inną architekturę, dzięki czemu lepiej nadają się do różnych zadań. GPU może obsługiwać duże ilości danych w wielu strumieniach, wykonując na nich stosunkowo proste operacje, ale nie nadaje się do ciężkiego lub złożonego przetwarzania na jednym lub kilku strumieniach danych. Procesor jest znacznie szybszy na poziomie rdzenia (w zakresie instrukcji na sekundę) i może wykonywać złożone operacje na jednym lub kilku strumieniach danych z większą łatwością, ale nie może wydajnie obsługiwać wielu strumieni jednocześnie.
W rezultacie procesory graficzne nie są dostosowane do zadań, które nie odnoszą znaczących korzyści lub nie mogą być zrównoleglone, w tym wiele popularnych aplikacji konsumenckich, takich jak procesory tekstu. Ponadto GPU używają zasadniczo odmiennej architektury; należałoby zaprogramować aplikację specjalnie dla GPU, aby działał, a do programowania GPU wymagane są znacznie inne techniki. Te różne techniki obejmują nowe języki programowania, modyfikacje istniejących języków i nowe paradygmaty programowania, które lepiej nadają się do wyrażania obliczeń jako operacji równoległej, która ma być wykonywana przez wiele procesorów strumieniowych. Aby uzyskać więcej informacji na temat technik potrzebnych do programowania procesorów graficznych, zobacz artykuły Wikipedii na temat przetwarzania strumieniowego i obliczeń równoległych.
Współczesne procesory graficzne są zdolne do wykonywania operacji wektorowych i arytmetyki zmiennoprzecinkowej z najnowszymi kartami zdolnymi do manipulowania liczbami zmiennoprzecinkowymi o podwójnej precyzji. Ramy takie jak CUDA i OpenCL umożliwiają pisanie programów na GPU, a charakter GPU czyni je najbardziej odpowiednimi do wysoce równoległych operacji, takich jak obliczenia naukowe, gdzie seria wyspecjalizowanych kart obliczeniowych GPU może być dobrym zamiennikiem dla małych komputerów. obliczyć klastry jak w superkomputerach NVIDIA Tesla Personal. Konsumenci posiadający nowoczesne procesory graficzne, którzy mają doświadczenie z Folding @ home, mogą ich używać do obsługi klientów GPU, którzy mogą wykonywać symulacje zwijania białek z bardzo dużymi prędkościami i wnosić więcej pracy do projektu (najpierw przeczytaj często zadawane pytania, szczególnie te związane z GPU). Procesory graficzne umożliwiają także lepszą symulację fizyki w grach wideo przy użyciu PhysX, przyspieszają kodowanie i dekodowanie wideo oraz wykonują inne zadania wymagające dużej mocy obliczeniowej. To właśnie tego rodzaju zadania najlepiej nadają się do pracy z procesorami graficznymi.
AMD jest pionierem w projektowaniu procesorów zwanym Accelerated Processing Unit (APU), który łączy konwencjonalne rdzenie procesorów x86 z procesorami graficznymi. Może to umożliwić współpracę komponentów procesora i GPU oraz poprawić wydajność w systemach o ograniczonej przestrzeni dla oddzielnych komponentów. Wraz z postępem technologicznym zauważymy rosnącą zbieżność tych osobnych części. Jednak wiele zadań wykonywanych przez systemy operacyjne i aplikacje dla komputerów PC jest jeszcze lepiej dostosowane do procesorów, a do przyspieszenia programu za pomocą GPU potrzeba wiele pracy. Ponieważ tak wiele istniejącego oprogramowania korzysta z architektury x86, a ponieważ procesory graficzne wymagają różnych technik programowania i brakuje kilku ważnych funkcji wymaganych w systemach operacyjnych, ogólne przejście z procesora CPU na GPU do codziennego przetwarzania jest niezwykle trudne.
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.