TL;DR-Antwort: GPUs haben weitaus mehr Prozessorkerne als CPUs, aber da jeder GPU-Kern deutlich langsamer läuft als ein CPU-Kern und nicht über die Funktionen verfügt, die für moderne Betriebssysteme erforderlich sind, sind sie für die Ausführung des größten Teils der Verarbeitung in alltäglichen Berechnungen nicht geeignet. Am besten eignen sie sich für rechenintensive Operationen wie Videoverarbeitung und Physiksimulationen.
GPGPU ist noch ein relativ neues Konzept. Ursprünglich wurden GPUs nur für das Rendern von Grafiken verwendet; mit fortschreitender Technologie wurde die im Vergleich zu CPUs große Anzahl von Kernen in GPUs durch die Entwicklung von Rechenfähigkeiten für GPUs ausgenutzt, so dass diese viele parallele Datenströme gleichzeitig verarbeiten können, ganz gleich, um welche Daten es sich dabei handelt. Obwohl GPUs Hunderte oder sogar Tausende von Datenstromprozessoren haben können, laufen sie alle langsamer als ein CPU-Kern und haben weniger Funktionen (selbst wenn sie Turing komplett sind und so programmiert werden können, dass sie jedes Programm ausführen können, das eine CPU ausführen kann). Zu den Funktionen, die GPUs fehlen, gehören Interrupts und virtueller Speicher, die für die Implementierung eines modernen Betriebssystems erforderlich sind.
Mit anderen Worten: CPUs und GPUs haben deutlich unterschiedliche Architekturen, die sie für verschiedene Aufgaben besser geeignet machen. Ein Grafikprozessor kann große Datenmengen in vielen Datenströmen verarbeiten und relativ einfache Operationen darauf ausführen, ist aber für die schwere oder komplexe Verarbeitung von einzelnen oder wenigen Datenströmen ungeeignet. Eine CPU ist auf einer Pro-Kern-Basis (in Bezug auf Anweisungen pro Sekunde) viel schneller und kann komplexe Operationen auf einem einzelnen oder wenigen Datenströmen leichter ausführen, kann aber nicht viele Datenströme gleichzeitig effizient verarbeiten.
Infolgedessen sind GPUs nicht geeignet für Aufgaben, die nicht wesentlich von der Parallelisierung profitieren oder nicht parallelisiert werden können, einschließlich vieler gängiger Verbraucheranwendungen wie Textverarbeitungsprogramme. Außerdem verwenden GPUs eine grundlegend andere Architektur; man müsste eine Anwendung speziell für einen GPU programmieren, damit sie funktioniert, und für die Programmierung von GPUs sind erheblich andere Techniken erforderlich. Zu diesen unterschiedlichen Techniken gehören neue Programmiersprachen, Modifikationen bestehender Sprachen und neue Programmierparadigmen, die besser geeignet sind, eine Berechnung als eine parallele Operation auszudrücken, die von vielen Stromprozessoren ausgeführt werden muss. Weitere Informationen zu den für die Programmierung von GPUs erforderlichen Techniken finden Sie in den Wikipedia-Artikeln über Stream Processing und Parallel Computing .
Moderne GPUs sind in der Lage, Vektoroperationen und Fließkomma-Arithmetik auszuführen, wobei die neuesten Karten in der Lage sind, Fließkomma-Zahlen mit doppelter Genauigkeit zu manipulieren. Frameworks wie CUDA und OpenCL ermöglichen es, Programme für GPUs zu schreiben, und aufgrund der Beschaffenheit von GPUs eignen sie sich am besten für hochgradig parallelisierbare Operationen, wie z.B. im wissenschaftlichen Rechnen, wo eine Reihe von spezialisierten GPU-Computerkarten einen brauchbaren Ersatz für einen kleinen Compute-Cluster wie in NVIDIA Tesla Personal Supercomputers darstellen können. Verbraucher mit modernen GPUs, die Erfahrung mit Folding@home haben, können diese nutzen, um mit GPU clients beizutragen, die Proteinfaltungssimulationen mit sehr hohen Geschwindigkeiten durchführen und mehr Arbeit in das Projekt einbringen können (lesen Sie auf jeden Fall zuerst die FAQs , insbesondere die, die sich auf GPUs beziehen). GPUs können auch eine bessere Physiksimulation in Videospielen mit PhysX ermöglichen, die Video-Kodierung und -Dekodierung beschleunigen und andere rechenintensive Aufgaben durchführen. Für diese Art von Aufgaben sind GPUs am besten geeignet.
AMD leistet Pionierarbeit bei einem Prozessordesign namens Accelerated Processing Unit (APU) , das herkömmliche x86-CPU-Kerne mit GPUs kombiniert. Dieser Ansatz ermöglicht eine Grafikleistung, die der von Motherboard-integrierten Grafiklösungen weit überlegen ist (wenn auch nicht mit teureren diskreten GPUs konkurrieren kann), und ermöglicht ein kompaktes, kostengünstiges System mit guter Multimedia-Leistung ohne die Notwendigkeit eines separaten Grafikprozessors. Die neuesten Intel-Prozessoren bieten ebenfalls integrierte On-Chip-Grafiken, obwohl die konkurrenzfähige integrierte GPU-Leistung derzeit auf die wenigen Chips mit Intel Iris Pro Graphics beschränkt ist. Mit dem weiteren Fortschritt der Technologie werden wir einen zunehmenden Grad der Konvergenz dieser einst getrennten Teile sehen. AMD stellt sich vor eine Zukunft, in der CPU und GPU eine Einheit bilden und nahtlos an derselben Aufgabe arbeiten können .
Dennoch sind viele Aufgaben, die von PC-Betriebssystemen und Anwendungen ausgeführt werden, immer noch besser für CPUs geeignet, und es ist viel Arbeit erforderlich, um ein Programm mit einem GPU zu beschleunigen. Da so viel vorhandene Software die x86-Architektur verwendet und weil GPUs andere Programmiertechniken erfordern und einige wichtige Funktionen fehlen, die für Betriebssysteme benötigt werden, ist ein genereller Übergang von der CPU zum Grafikprozessor für alltägliche Berechnungen sehr schwierig.