Coraz częściej procesory graficzne są wykorzystywane do zadań innych niż graficzne, takich jak obliczenia ryzyka, obliczenia dynamiki płynów i analizy sejsmiczne. Co nas powstrzymuje przed wprowadzeniem urządzeń opartych na GPU?
Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - części Stack Exchange, grupy witryn z pytaniami i odpowiedziami, prowadzonej przez społeczność.
Pytanie
Czytnik SuperUser Ell śledzi nowinki techniczne i jest ciekawy, dlaczego nie używamy więcej systemów opartych na procesorach graficznych:
Wydaje mi się, że w dzisiejszych czasach wiele obliczeń wykonuje się na GPU. Oczywiście grafika jest tam robiona, ale przy użyciu CUDA i tym podobnych, sztucznej inteligencji, algorytmów haszujących (pomyśl o Bitcoinach) i innych również na GPU. Dlaczego nie możemy po prostu pozbyć się procesora i używać samego GPU? Co sprawia, że GPU jest dużo szybsze niż CPU?
Rzeczywiście, dlaczego? Co sprawia, że procesor jest wyjątkowy?
Odpowiedź
Współautor SuperUser DragonLord oferuje dobrze obsługiwany przegląd różnic między procesorami graficznymi i procesorami:
Odpowiedź TL; DR: Procesory graficzne mają znacznie więcej rdzeni procesorów niż procesory CPU, ale ponieważ każdy rdzeń GPU działa znacznie wolniej niż rdzeń procesora i nie ma funkcji potrzebnych w nowoczesnych systemach operacyjnych, nie są one odpowiednie do wykonywania większości przetwarzania w codziennych komputerach. Najbardziej nadają się do operacji wymagających dużej mocy obliczeniowej, takich jak przetwarzanie wideo i symulacje fizyczne.
Szczegółowa odpowiedź: GPGPU to wciąż stosunkowo nowa koncepcja. Procesory GPU były początkowo używane tylko do renderowania grafiki; w miarę rozwoju technologii duża liczba rdzeni w procesorach graficznych w porównaniu z procesorami została wykorzystana do opracowania możliwości obliczeniowych dla procesorów graficznych, aby mogły one przetwarzać wiele równoległych strumieni danych jednocześnie, niezależnie od tego, jakie to dane. Chociaż procesory graficzne mogą mieć setki, a nawet tysiące procesorów strumieniowych, każdy z nich działa wolniej niż rdzeń procesora i ma mniej funkcji (nawet jeśli są Turing zakończony i może być zaprogramowany do uruchamiania dowolnego programu, który może uruchomić CPU). Funkcje, których brakuje w GPU, obejmują przerwania i pamięć wirtualną, które są wymagane do wdrożenia nowoczesnego systemu operacyjnego.
Innymi słowy, procesory i procesory graficzne mają znacząco różne architektury, dzięki czemu są lepiej przystosowane do różnych zadań. Procesor GPU może obsługiwać duże ilości danych w wielu strumieniach, wykonując na nich stosunkowo proste operacje, ale nie jest przystosowany do intensywnego lub złożonego przetwarzania pojedynczego lub kilku strumieni danych. Procesor jest znacznie szybszy w przeliczeniu na rdzeń (pod względem instrukcji na sekundę) i może łatwiej wykonywać złożone operacje na jednym lub kilku strumieniach danych, ale nie może wydajnie obsługiwać wielu strumieni jednocześnie.
W rezultacie GPU nie są przystosowane do obsługi zadań, które nie odnoszą znaczących korzyści lub nie mogą być zrównoleglone, w tym wielu typowych aplikacji konsumenckich, takich jak procesory tekstu. Co więcej, procesory graficzne wykorzystują zasadniczo inną architekturę; należałoby zaprogramować aplikację specjalnie dla GPU, aby działała, a do programowania procesorów graficznych 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 są lepiej dostosowane do wyrażania obliczeń jako operacji równoległej do wykonania przez wiele procesorów strumieniowych. Więcej informacji na temat technik potrzebnych do programowania procesorów graficznych można znaleźć w artykułach Wikipedii pod adresem przetwarzanie strumieniowe i Równoległe obliczenia .
Nowoczesne procesory graficzne są zdolne do wykonywania operacji wektorowych i arytmetyki zmiennoprzecinkowej, a najnowsze karty są w stanie manipulować liczbami zmiennoprzecinkowymi o podwójnej precyzji. Struktury takie jak CUDA i OpenCL umożliwiają pisanie programów dla procesorów graficznych, a natura procesorów graficznych sprawia, że są one najlepiej przystosowane do wysoce równoległych operacji, takich jak obliczenia naukowe, w których seria wyspecjalizowanych kart obliczeniowych GPU może być realnym zamiennikiem małego oblicz klaster jak w Osobiste superkomputery NVIDIA Tesla . Konsumenci z nowoczesnymi procesorami graficznymi, którzy mają doświadczenie w pracy z Folding @ home, mogą z nich korzystać Klienci GPU , który może wykonywać symulacje zwijania białek z bardzo dużą prędkością i wnieść więcej pracy do projektu (koniecznie przeczytaj FAQs po pierwsze, zwłaszcza te związane z procesorami graficznymi). Układy GPU mogą również umożliwić lepszą symulację fizyki w grach wideo przy użyciu technologii PhysX, przyspieszyć kodowanie i dekodowanie wideo oraz wykonywać inne zadania wymagające dużej mocy obliczeniowej. Do tego typu zadań najlepiej nadają się układy GPU.
AMD jest pionierem w konstrukcji procesora o nazwie Przyspieszona jednostka przetwarzania (APU) który łączy konwencjonalne rdzenie procesorów x86 z procesorami graficznymi. Mogłoby to pozwolić komponentom CPU i GPU na współpracę i poprawę wydajności w systemach z ograniczoną przestrzenią na oddzielne komponenty. Wraz z postępem technologicznym będziemy obserwować coraz większy stopień zbieżności tych niegdyś oddzielnych części. Jednak wiele zadań wykonywanych przez systemy operacyjne i aplikacje komputerów osobistych jest nadal lepiej dostosowanych do procesorów i potrzeba dużo pracy, aby przyspieszyć program za pomocą GPU. Ponieważ tak wiele istniejącego oprogramowania korzysta z architektury x86, a procesory graficzne wymagają różnych technik programowania i brakuje im kilku ważnych funkcji potrzebnych w systemach operacyjnych, ogólne przejście z procesora na procesor graficzny do codziennych zastosowań jest niezwykle trudne.
Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych zaawansowanych technicznie użytkowników Stack Exchange? Sprawdź cały wątek dyskusji tutaj .