TL;DR odpowiedź:Układy GPU mają znacznie więcej rdzeni przetwarzających niż procesory główne, ale ponieważ każdy rdzeń GPU pracuje znacznie wolniej niż rdzeń CPU i nie posiada funkcji potrzebnych w nowoczesnych systemach operacyjnych, nie są one odpowiednie do wykonywania większości procesów w codziennej pracy. Są one najbardziej odpowiednie do wykonywania intensywnych obliczeniowo operacji, takich jak przetwarzanie wideo i symulacje fizyczne.
- *
GPGPU to wciąż stosunkowo nowa koncepcja. Układy GPU były początkowo wykorzystywane wyłącznie do renderowania grafiki; w miarę postępu technologicznego, duża liczba rdzeni w układach GPU w stosunku do procesorów centralnych została wykorzystana poprzez rozwinięcie możliwości obliczeniowych dla układów GPU, tak aby mogły one przetwarzać wiele równoległych strumieni danych jednocześnie, bez względu na to, jakie dane te mogą być. Podczas gdy procesory graficzne mogą mieć setki, a nawet tysiące procesorów strumieniowych, każdy z nich pracuje wolniej niż rdzeń CPU i ma mniej funkcji (nawet jeśli są one Turing complete i mogą być zaprogramowane do uruchamiania dowolnego programu, który może być uruchomiony przez CPU). Funkcje, których brakuje w układach GPU, to m.in. przerywacze i pamięć wirtualna, które są niezbędne do implementacji nowoczesnego systemu operacyjnego.
Innymi słowy, procesory i układy GPU mają znacząco różne architektury, które sprawiają, że lepiej nadają się do różnych zadań. Układ 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 ciężkiego lub złożonego przetwarzania na jednym lub kilku strumieniach danych. Procesor centralny jest znacznie szybszy w przeliczeniu na jeden rdzeń (pod względem instrukcji na sekundę) i może łatwiej wykonywać złożone operacje na jednym lub kilku strumieniach danych, ale nie jest w stanie wydajnie obsłużyć wielu strumieni jednocześnie.
W rezultacie, procesory graficzne nie są przystosowane do obsługi zadań, które nie przynoszą znaczących korzyści lub nie mogą być porównywane, w tym wielu popularnych aplikacji konsumenckich, takich jak procesory tekstu. Co więcej, procesory graficzne wykorzystują zasadniczo odmienną architekturę; trzeba by zaprogramować aplikację specjalnie dla niej, aby działała, a do zaprogramowania układów 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żenia obliczeń jako operacji równoległej, która ma być wykonana przez wiele procesorów strumieniowych. Więcej informacji o technikach potrzebnych do programowania układów GPU można znaleźć w artykułach Wikipedii na temat przetwarzania strumieniowego i obliczeń równoległych .
Nowoczesne układy GPU są zdolne do wykonywania operacji wektorowych i arytmetyki zmiennoprzecinkowej, a najnowsze karty potrafią manipulować podwójnie precyzyjnymi liczbami zmiennoprzecinkowymi. Ramy takie jak CUDA i OpenCL umożliwiają pisanie programów dla układów GPU, a charakter układów GPU sprawia, że są one najbardziej odpowiednie dla wysoce równoległych operacji, takich jak w obliczeniach naukowych, gdzie seria wyspecjalizowanych kart graficznych może być realnym zamiennikiem dla małego klastra obliczeniowego, jak w NVIDIA Tesla Personal Supercomputers . Konsumenci z nowoczesnymi procesorami graficznymi, którzy mają doświadczenie z Folding@home, mogą je wykorzystać do współpracy z klientami korzystającymi z procesorów graficznych , którzy mogą wykonywać białkowe symulacje składania z bardzo dużą prędkością i wnieść więcej pracy do projektu (upewnij się, że najpierw przeczytasz FAQs , zwłaszcza te związane z procesorami graficznymi). Układy GPU mogą także umożliwić lepszą symulację fizyki w grach wideo przy użyciu PhysX, przyspieszyć kodowanie i dekodowanie wideo oraz wykonywać inne wymagające obliczeniowo zadania. To właśnie tego typu zadania procesory graficzne są najbardziej odpowiednie do wykonywania.
AMD jest pionierem projektu procesora zwanego Accelerated Processing Unit (APU) , który łączy konwencjonalne rdzenie procesora x86 z układami GPU. Podejście to zapewnia wydajność graficzną znacznie przewyższającą rozwiązania graficzne zintegrowane z płytą główną (choć nie dorównuje droższym, dyskretnym układom GPU) i pozwala na stworzenie kompaktowego, taniego systemu o dobrej wydajności multimedialnej bez konieczności stosowania oddzielnego układu GPU. Najnowsze procesory firmy Intel oferują również zintegrowaną grafikę w układzie scalonym, chociaż wydajność zintegrowanego procesora graficznego konkurencyjnego ogranicza się obecnie do kilku układów z Intel Iris Pro Graphics. Wraz z postępem technologicznym będziemy świadkami rosnącego stopnia konwergencji tych niegdyś oddzielnych części. AMD wyobraża sobie przyszłość, w której CPU i GPU stanowią jedną całość, zdolną do bezproblemowej współpracy przy tym samym zadaniu .
Niemniej jednak, wiele zadań wykonywanych przez systemy operacyjne i aplikacje dla komputerów PC jest nadal lepiej dopasowanych do procesorów centralnych i wiele pracy jest potrzebne, aby przyspieszyć program wykorzystujący GPU. Ponieważ tak wiele istniejącego oprogramowania wykorzystuje architekturę x86, a także ponieważ procesory graficzne wymagają różnych technik programowania i brakuje im kilku ważnych funkcji potrzebnych w systemach operacyjnych, ogólne przejście z CPU na GPU do obliczeń codziennych jest bardzo trudne.