Startseite » wie man » Warum verwenden wir immer noch CPUs anstelle von GPUs?

    Warum verwenden wir immer noch CPUs anstelle von GPUs?

    Zunehmend werden GPUs für nichtgraphische Aufgaben wie Risikoberechnungen, Strömungsberechnungen und seismische Analysen eingesetzt. Was hindert uns daran, GPU-gesteuerte Geräte einzusetzen??

    Die heutige Question & Answer-Sitzung wird von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-Gruppe von Q & A-Websites.

    Die Frage

    SuperUser-Leser Ell hält sich mit den technischen Neuigkeiten auf dem Laufenden und ist neugierig, warum wir nicht mehr GPU-basierte Systeme verwenden:

    Mir scheint, dass heutzutage viele Berechnungen auf der GPU gemacht werden. Offensichtlich werden dort Grafiken erstellt, aber unter Verwendung von CUDA und dergleichen werden AI, Hash-Algorithmen (etwa Bitcoins) und andere auch auf der GPU ausgeführt. Warum können wir die CPU nicht einfach loswerden und die GPU alleine verwenden? Was macht die GPU so viel schneller als die CPU?

    Warum eigentlich? Was macht die CPU einzigartig??

    Die Antwort

    SuperUser-Mitwirkender DragonLord bietet einen gut unterstützten Überblick über die Unterschiede zwischen GPUs und CPUs:

    TL; DR Antwort: GPUs haben weit mehr Prozessorkerne als CPUs, aber da jeder GPU-Kern wesentlich langsamer als ein CPU-Kern ist und nicht über die für moderne Betriebssysteme erforderlichen Funktionen verfügt, eignen sie sich nicht für die meisten Verarbeitungsvorgänge im alltäglichen Computergeschäft. Sie eignen sich am besten für rechenintensive Vorgänge wie Videoverarbeitung und Physik-Simulationen.

    Die ausführliche Antwort: GPGPU ist noch ein relativ neues Konzept. GPUs wurden ursprünglich nur zum Rendern von Grafiken verwendet. Mit fortschreitender Technologie wurde die große Anzahl von Kernen in GPUs im Vergleich zu CPUs ausgenutzt, indem Rechenfunktionen für GPUs entwickelt wurden, so dass sie viele parallele Datenströme gleichzeitig verarbeiten können, unabhängig von den Daten. Während GPUs Hunderte oder sogar Tausende von Stream-Prozessoren haben können, laufen sie jeweils langsamer als ein CPU-Kern und haben weniger Funktionen (auch wenn sie abgeschlossen sind und programmiert werden können, um jedes Programm auszuführen, das eine CPU ausführen kann). Zu den fehlenden Funktionen von GPUs gehören Interrupts und virtueller Speicher, die zur Implementierung eines modernen Betriebssystems erforderlich sind.

    Mit anderen Worten, CPUs und GPUs verfügen über deutlich unterschiedliche Architekturen, die sie für unterschiedliche Aufgaben besser geeignet machen. Eine GPU kann große Datenmengen in vielen Datenströmen verarbeiten und führt relativ einfache Vorgänge aus. Sie eignet sich jedoch nicht für die umfangreiche oder komplexe Verarbeitung einzelner oder weniger Datenströme. Eine CPU ist pro Kern wesentlich schneller (in Bezug auf Anweisungen pro Sekunde) und kann komplexe Vorgänge für einen einzelnen oder wenige Datenströme einfacher ausführen, kann jedoch nicht viele Streams gleichzeitig effizient verarbeiten.

    Infolgedessen sind GPUs nicht geeignet, Aufgaben zu erledigen, die nicht wesentlich von der Parallelisierung profitieren oder nicht parallelisiert werden können, einschließlich vieler gängiger Verbraucheranwendungen, wie z. B. Textprozessoren. Darüber hinaus verwenden GPUs eine grundlegend andere Architektur. Man müsste eine Anwendung speziell für eine GPU programmieren, damit sie funktioniert, und es sind erheblich andere Techniken erforderlich, um GPUs zu programmieren. Diese unterschiedlichen Techniken umfassen neue Programmiersprachen, Modifikationen an vorhandenen Sprachen und neue Programmierparadigmen, die besser geeignet sind, eine Berechnung als Paralleloperation auszudrücken, die von vielen Stream-Prozessoren ausgeführt wird. Weitere Informationen zu den zum Programmieren von GPUs erforderlichen Techniken finden Sie in den Wikipedia-Artikeln zu Stream-Verarbeitung und parallelem Computing.

    Moderne GPUs sind in der Lage, Vektoroperationen und Fließkomma-Arithmetik auszuführen. Die neuesten Karten können Fließkommazahlen mit doppelter Genauigkeit bearbeiten. Frameworks wie CUDA und OpenCL ermöglichen das Schreiben von Programmen für GPUs. Aufgrund der Beschaffenheit von GPUs eignen sie sich am besten für hochgradig parallelisierbare Vorgänge, z. B. für das Scientific Computing, bei denen eine Reihe spezialisierter GPU-Computerkarten einen brauchbaren Ersatz für einen kleinen Computer darstellen kann Computing-Cluster wie in NVIDIA Tesla Personal Supercomputers. Kunden mit modernen GPUs, die mit Folding @ home vertraut sind, können mit GPU-Kunden beitragen, die Simulationen der Proteinfaltung mit sehr hohen Geschwindigkeiten durchführen und mehr Arbeit in das Projekt einbringen können (lesen Sie zuerst die FAQs, insbesondere die mit GPUs). GPUs können mit PhysX auch eine bessere Physiksimulation in Videospielen ermöglichen, die Videocodierung und -decodierung beschleunigen und andere rechenintensive Aufgaben ausführen. GPUs eignen sich am besten für diese Aufgaben.

    AMD ist Vorreiter bei einem Prozessorkonzept mit der Bezeichnung Accelerated Processing Unit (APU), das herkömmliche x86-CPU-Kerne mit GPUs kombiniert. Dadurch können die CPU- und GPU-Komponenten zusammenarbeiten und die Leistung auf Systemen mit begrenztem Speicherplatz für separate Komponenten verbessern. Mit dem fortschreitenden Fortschritt der Technologie wird sich die Konvergenz dieser einmal getrennten Teile zunehmend erhöhen. Viele Aufgaben, die von PC-Betriebssystemen und -Anwendungen ausgeführt werden, sind jedoch immer noch besser für CPUs geeignet, und es ist viel Arbeit erforderlich, um ein Programm mit einer GPU zu beschleunigen. Da so viel vorhandene Software die x86-Architektur verwendet und da GPUs unterschiedliche Programmiertechniken erfordern und einige wichtige Funktionen fehlen, die für Betriebssysteme erforderlich sind, ist ein allgemeiner Übergang von der CPU zur GPU für das alltägliche Rechnen äußerst schwierig.


    Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.