Connect with us

Wie man

Warum verwenden wir immer noch CPUs anstelle von GPUs?

Warum verwenden wir immer noch CPUs anstelle von GPUs?

GPUs werden zunehmend für nicht-grafische Aufgaben wie Risikoberechnungen, Strömungsberechnungen und seismische Analysen verwendet. Was hindert uns daran, GPU-gesteuerte Geräte einzuführen?

Die Frage

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

Es scheint mir, dass heutzutage viele Berechnungen auf der GPU durchgeführt werden. Offensichtlich werden dort Grafiken erstellt, aber mit CUDA und dergleichen werden KI, Hashing-Algorithmen (denken Sie an Bitcoins) und andere auch auf der GPU erstellt. Warum können wir nicht einfach die CPU 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 deutlich langsamer als ein CPU-Kern läuft und nicht über die Funktionen verfügt, die für moderne Betriebssysteme erforderlich sind, sind sie für den Großteil der Verarbeitung im alltäglichen Computing nicht geeignet. Sie eignen sich am besten für rechenintensive Operationen wie Videoverarbeitung und Physiksimulationen.

Die ausführliche Antwort: GPGPU ist noch ein relativ neues Konzept. GPUs wurden ursprünglich nur zum Rendern von Grafiken verwendet; Im Zuge des technologischen Fortschritts wurde die große Anzahl von Kernen in GPUs im Vergleich zu CPUs ausgenutzt, indem Rechenfunktionen für GPUs entwickelt wurden, damit diese viele parallele Datenströme gleichzeitig verarbeiten können, unabhängig davon, um welche Daten es sich handelt. Während GPUs Hunderte oder sogar Tausende von Stream-Prozessoren haben können, laufen sie alle langsamer als ein CPU-Kern und haben weniger Funktionen (selbst wenn sie es sind).Turing abgeschlossen und kann so programmiert werden, dass jedes Programm ausgeführt wird, das eine CPU ausführen kann). Zu den Funktionen, die bei 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 unterschiedliche Aufgaben besser geeignet machen. Eine GPU kann große Datenmengen in vielen Streams verarbeiten und relativ einfache Operationen damit ausführen, ist jedoch für die schwere oder komplexe Verarbeitung eines einzelnen oder weniger Datenstreams ungeeignet. Eine CPU ist pro Kern viel schneller (in Bezug auf Anweisungen pro Sekunde) und kann komplexe Operationen mit einem einzelnen oder wenigen Datenströmen einfacher ausführen, kann jedoch nicht viele Ströme gleichzeitig effizient verarbeiten.

Infolgedessen sind GPUs nicht geeignet, um Aufgaben zu bewältigen, die nicht wesentlich von Nutzen sind oder nicht parallelisiert werden können, einschließlich vieler gängiger Verbraucheranwendungen wie Textverarbeitungen. Darüber hinaus verwenden GPUs eine grundlegend andere Architektur; man müsste eine Anwendung speziell für eine GPU programmieren, damit sie funktioniert, und zum Programmieren von GPUs sind deutlich andere Techniken erforderlich. Diese unterschiedlichen Techniken umfassen neue Programmiersprachen, Modifikationen an bestehenden Sprachen und neue Programmierparadigmen, die besser geeignet sind, eine Berechnung als eine von vielen Stromprozessoren auszuführende parallele Operation auszudrücken. Weitere Informationen zu den zum Programmieren von GPUs erforderlichen Techniken finden Sie in den Wikipedia-Artikeln auf Stream-Verarbeitung und paralleles Rechnen.

Moderne GPUs können Vektoroperationen und Gleitkommaarithmetik ausführen, wobei die neuesten Karten Gleitkommazahlen mit doppelter Genauigkeit manipulieren können. Frameworks wie CUDA und OpenCL ermöglichen das Schreiben von Programmen für GPUs, und die Beschaffenheit von GPUs macht sie am besten für hochgradig parallelisierbare Operationen geeignet, z Rechencluster wie in NVIDIA Tesla Personal Supercomputer. Verbraucher mit modernen GPUs, die Erfahrung mit Folding@home haben, können sie verwenden, um mitzuwirken GPU-Clients, die Proteinfaltungssimulationen mit sehr hoher Geschwindigkeit durchführen und mehr Arbeit zum Projekt beitragen können (lesen Sie unbedingt die Häufig gestellte Fragen erstens, insbesondere solche im Zusammenhang mit GPUs). GPUs können auch eine bessere Physiksimulation in Videospielen mit PhysX ermöglichen, die Videocodierung und -decodierung beschleunigen und andere rechenintensive Aufgaben ausführen. Für diese Art von Aufgaben sind GPUs am besten geeignet.

AMD ist Vorreiter für ein Prozessordesign namens Beschleunigte Verarbeitungseinheit (APU) die herkömmliche x86-CPU-Kerne mit GPUs kombiniert. Dies könnte es den CPU- und GPU-Komponenten ermöglichen, zusammenzuarbeiten und die Leistung auf Systemen mit begrenztem Platz für separate Komponenten zu verbessern. Mit fortschreitender Technologie werden wir einen zunehmenden Grad an Konvergenz dieser einst getrennten Teile sehen. 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 GPUs unterschiedliche Programmiertechniken erfordern und einige wichtige Funktionen fehlen, die für Betriebssysteme benötigt werden, ist ein allgemeiner Übergang von CPU zu GPU für die alltägliche Computerarbeit äußerst schwierig.

Möchten Sie der Erklärung noch etwas hinzufügen? Ton in den Kommentaren ab. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Sehen Sie sich hier den vollständigen Diskussionsthread an.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia