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 układem GPU?
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, grupy dyskusyjnej poświęconej tematyce społecznościowej.
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 mieszania (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 sprawia, że procesor jest wyjątkowy?
Pomocnik SuperUser DragonLord oferuje dobrze obsługiwany przegląd różnic mię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 procesów przetwarzania w codziennej pracy komputerowej. 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; w miarę rozwoju 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). Brakujące funkcje 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ą przystosowane do obsługi 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 jest 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 dla procesorów graficznych, a charakter układów GPU czyni je najbardziej odpowiednimi do wysoce równoległych operacji, takich jak obliczenia naukowe, w których seria wyspecjalizowanych kart obliczeniowych GPU może być dobrym zamiennikiem dla małych komputerów. obliczaj klastry, tak 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 przy bardzo dużych prędkościach i wnosić więcej pracy do projektu (najpierw przeczytaj często zadawane pytania, szczególnie te związane z GPU). Procesory graficzne umożliwiają również 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 typu zadania najlepiej nadają się procesory graficzne.
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 coraz większy stopień zbieżności tych osobnych części. Jednak wiele zadań wykonywanych przez systemy operacyjne i aplikacje dla komputerów PC jest jeszcze lepiej dostosowane do procesorów i wiele pracy wymaga przyspieszenia programu za pomocą GPU. Ponieważ tak wiele istniejącego oprogramowania wykorzystuje architekturę x86, a ponieważ procesory graficzne wymagają różnych technik programowania i brakuje kilku ważnych funkcji potrzebnych 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.