Zunehmend werden GPUs für nicht grafische Aufgaben wie Risikoberechnungen, Berechnungen der Fluiddynamik und seismische Analysen verwendet. Was hindert uns daran, GPU-gesteuerte Geräte einzusetzen?
Die heutige Frage-Antwort-Sitzung wird uns mit freundlicher Genehmigung von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-Drive-Gruppierung von Q & A-Websites.
Die Frage
SuperUser-Leser Ell hält sich über technische Neuigkeiten auf dem Laufenden und ist neugierig, warum wir keine GPU-basierten Systeme verwenden:
Es scheint mir, dass heutzutage viele Berechnungen auf der GPU durchgeführt werden. Natürlich werden dort Grafiken erstellt, aber unter Verwendung von 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
Der SuperUser-Mitarbeiter DragonLord bietet einen gut unterstützten Überblick über die Unterschiede zwischen GPUs und CPUs:
TL; DR Antwort: GPUs haben weitaus mehr Prozessorkerne als CPUs. Da jedoch jeder GPU-Kern erheblich langsamer als ein CPU-Kern läuft und nicht über die für moderne Betriebssysteme erforderlichen Funktionen verfügt, sind sie nicht für die Durchführung der meisten Verarbeitungen im täglichen Computer geeignet. Sie eignen sich am besten für rechenintensive Operationen wie Videoverarbeitung und physikalische 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, damit sie 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 jeweils langsamer als ein CPU-Kern und haben weniger Funktionen (selbst wenn dies der Fall ist) Turing komplett und kann so programmiert werden, dass jedes Programm ausgeführt wird, das eine CPU ausführen kann). Zu den Funktionen, die in 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 erheblich unterschiedliche Architekturen, wodurch sie besser für unterschiedliche Aufgaben geeignet sind. Eine GPU kann große Datenmengen in vielen Datenströmen verarbeiten und relativ einfache Vorgänge ausführen, ist jedoch für eine umfangreiche oder komplexe Verarbeitung einzelner oder weniger Datenströme nicht geeignet. Eine CPU ist pro Kern viel schneller (in Bezug auf Anweisungen pro Sekunde) und kann komplexe Vorgänge mit einem oder wenigen Datenströmen einfacher ausführen, kann jedoch nicht viele Ströme gleichzeitig effizient verarbeiten.
Infolgedessen sind GPUs nicht für Aufgaben geeignet, die nicht wesentlich von der Parallelisierung profitieren oder nicht parallelisiert werden können, einschließlich vieler gängiger Verbraucheranwendungen wie Textverarbeitungsprogramme. 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 erheblich andere Techniken erforderlich. Diese verschiedenen Techniken umfassen neue Programmiersprachen, Änderungen an vorhandenen Sprachen und neue Programmierparadigmen, die besser geeignet sind, eine Berechnung als Paralleloperation auszudrücken, die von vielen Stream-Prozessoren ausgeführt werden soll. Weitere Informationen zu den Techniken, die zum Programmieren von GPUs erforderlich sind, finden Sie in den Wikipedia-Artikeln zu Stream-Verarbeitung und parallel computing .
Moderne GPUs können Vektoroperationen und Gleitkomma-Arithmetik 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 aufgrund der Art der GPUs eignen sie sich am besten für hochparallelisierbare Vorgänge, z. B. im wissenschaftlichen Rechnen, bei denen eine Reihe spezialisierter GPU-Rechenkarten ein praktikabler Ersatz für kleine sein kann Cluster wie in berechnen NVIDIA Tesla Personal Supercomputer . Verbraucher mit modernen GPUs, die Erfahrung mit Folding @ home haben, können damit einen Beitrag leisten GPU-Clients , die Proteinfaltungssimulationen mit sehr hohen Geschwindigkeiten durchführen und mehr Arbeit für das Projekt leisten können (lesen Sie unbedingt die FAQs Erstens, insbesondere im Zusammenhang mit GPUs. GPUs können mit PhysX auch eine bessere Physiksimulation in Videospielen ermöglichen, die Videokodierung und -decodierung beschleunigen und andere rechenintensive Aufgaben ausführen. Für diese Art von Aufgaben eignen sich GPUs am besten.
AMD ist Vorreiter bei einem Prozessordesign namens Accelerated Processing Unit (APU) Hier werden 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 eine zunehmende Konvergenz dieser einst getrennten Teile feststellen. 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 mithilfe 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 erforderlich sind, ist ein allgemeiner Übergang von der CPU zur GPU für das tägliche Rechnen äußerst schwierig.
Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie weitere Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Den vollständigen Diskussionsthread finden Sie hier .