Warum verwenden Leute GPUs für Hochleistungsberechnung anstelle eines spezielleren Chips?

22114
Alex S

Nach meinem Verständnis begannen die Leute, GPUs für die allgemeine Datenverarbeitung zu verwenden, da sie eine zusätzliche Quelle für Rechenleistung darstellen. Und obwohl sie nicht für jede Operation eine schnelle CPU sind, haben sie viele Kerne, sodass sie für die parallele Verarbeitung besser geeignet sind als eine CPU. Dies ist sinnvoll, wenn Sie bereits über einen Computer verfügen, der über eine GPU für die Grafikverarbeitung verfügt. Sie benötigen jedoch keine Grafiken und möchten mehr Rechenleistung. Ich verstehe aber auch, dass Menschen GPUs kaufen, die speziell zur Steigerung der Rechenleistung verwendet werden, ohne dass sie dazu gedacht sind, Grafiken zu verarbeiten. Dies scheint mir der folgenden Analogie ähnlich zu sein:

Ich muss mein Gras mähen, aber mein Rasenmäher ist schwach. Also entferne ich den Käfig vom Boxfächer, den ich in meinem Schlafzimmer aufbewahre, und schärfe die Klingen. Ich klebe es mit meinem Mäher zusammen und finde, dass es einigermaßen gut funktioniert. Jahre später bin ich Einkaufsbeauftragter für ein großes Rasenpflegegeschäft. Ich habe ein beträchtliches Budget, das ich für Geräte des Grasschneidens ausgeben kann. Anstatt Rasenmäher zu kaufen, kaufe ich eine Reihe von Box-Fans. Wieder funktionieren sie gut, aber ich muss für zusätzliche Teile (wie den Käfig) bezahlen, die ich nicht verwenden werde. (Im Sinne dieser Analogie müssen wir davon ausgehen, dass Rasenmäher und Kastenlüfter etwa gleich teuer sind)

Warum gibt es also keinen Markt für einen Chip oder ein Gerät, das über die Rechenleistung einer GPU verfügt, nicht aber den Grafik-Overhead? Ich kann mir einige mögliche Erklärungen vorstellen. Welcher von ihnen ist richtig?

  • Eine solche Alternative wäre zu teuer für die Entwicklung, wenn die GPU bereits eine gute Option ist (Rasenmäher gibt es nicht, warum verwenden Sie nicht diesen perfekten Box-Lüfter?).
  • Die Tatsache, dass "G" für Grafik steht, bedeutet nur eine beabsichtigte Verwendung und bedeutet nicht wirklich, dass der Chip besser an die Grafikverarbeitung angepasst werden muss als jede andere Art von Arbeit (Rasenmäher und Boxenlüfter sind das Gleiche, wenn) Sie kommen genau hin, es sind keine Modifikationen notwendig, damit einer wie der andere funktioniert.
  • Moderne GPUs tragen den gleichen Namen wie ihre alten Vorgänger, aber heutzutage sind die High-End-Prozessoren nicht speziell für die Verarbeitung von Grafiken konzipiert (moderne Box-Lüfter funktionieren meist als Rasenmäher, auch wenn ältere nicht so waren).
  • Es ist einfach, so ziemlich jedes Problem in die Sprache der Grafikverarbeitung zu übersetzen (Gras kann durch Luftblasen sehr schnell geschnitten werden).

BEARBEITEN:

Meine Frage wurde beantwortet, aber aufgrund einiger Kommentare und Antworten möchte ich meine Frage klarstellen. Ich frage nicht, warum nicht jeder seine eigenen Berechnungen kauft. Natürlich wäre das die meiste Zeit zu teuer.

Ich habe lediglich festgestellt, dass es einen Bedarf an Geräten gibt, die schnell parallele Berechnungen durchführen können. Ich habe mich gefragt, warum es so aussieht, als sei die Grafikverarbeitungseinheit das optimale Gerät, im Gegensatz zu einem für diesen Zweck entwickelten Gerät.

104
Weil sie sich auf diese Art von Dingen spezialisiert haben; Es ist im Grunde dieselbe Art von Mathematik. Und nVidia hat ausschließlich GPU-Boards entwickelt und verkauft, um diese Art massiv paralleler Zahlenverarbeitung durchzuführen. Heptite vor 5 Jahren 66
Denken Sie daran, dass den Chips spezielle "Einheiten" hinzugefügt werden. AES wird in Hardware (glaube ich) auf CPUs ausgeführt. AVX ist auch in Hardware implementiert. Aber wo hört ihr auf? Der Chipmaker weiß nicht, was Sie brauchen, und die meisten Leute verfügen nicht über die Fähigkeiten (technologisch oder finanziell), um ihre eigenen Chips für ganz bestimmte Aufgaben entwickeln zu können. Grafikkarten sind - wie schon gesagt - eine Art spezialisierter Architektur, die sich für bestimmte Aufgaben gut eignet. Sie sind nicht für alles gut - aber für bestimmte Aufgaben und werden daher dort eingesetzt. DetlevCM vor 5 Jahren 7
Eine genauere Analogie würde die Box-Ventilatoren durch einen 100 Meter breiten Landwirtschaftsmähdrescher ersetzen. MooseBoys vor 5 Jahren 4
Mein PC verfügt bereits über eine einsatzbereite GPU. Das Design und die Herstellung eines dedizierten Chips würde mich um einige Millionen zurücksetzen. PlasmaHH vor 5 Jahren 6
Versuchen Sie es mit einer anderen Analogie. Nehmen wir an, wir haben Box-Fans und Hubschrauberrotoren. In unserer hypothetischen Welt benötigten Anwendungen für Box-Ventilatoren progressiv größere Ventilatoren, die mit höheren Geschwindigkeiten laufen, bis wir schließlich mit 20-Meter-Kohlefaser-Klingen-Box-Ventilatoren endeten und die Massenproduktion sie günstig machte. Dann bemerkte jemand, dass ein 20-Meter-Box-Lüfter im Wesentlichen nur ein Hubschrauberrotor mit einem Käfig ist. Es ist wirklich so ähnlich. Graham vor 5 Jahren 19
Eine weitere schlechte Analogie (weil alle Analogien schlecht sind), vergleichen Sie die Verwendung von GPUs für nichtgrafische Rechenaufgaben mit der Art und Weise, wie Festplattenverbraucher - selbst massive Verbraucher wie der Cloud-Speicheranbieter BackBlaze - ihren Bestand durch Produktionskäufe auffüllen -the-counter externe Laufwerke zu Verkaufspreisen und "Fall" der Fälle. Es ist nicht so, dass es keinen Markt für interne Laufwerke gibt. Manchmal ist es sogar billiger, Massenprodukte zu kaufen, die nicht spezialisiert sind, selbst wenn das Spezialisierte existiert. https://www.backblaze.com/blog/backblaze_drive_farming/ FeRD vor 5 Jahren 2
Ich denke, die primäre Antwort ist der erste Punkt - es wäre zu teuer, um etwas spezialisierteres zu haben. Chipfabriken gehören zu den fortschrittlichsten und teuersten Anlagen der Welt und kosten Milliarden von Dollar. Interessanter Artikel: https://www.bloomberg.com/news/articles/2016-06-09/how-intel-makes-a-chip WhatEvil vor 5 Jahren 1
@DetlevCM: Sie haben Recht. Der AES-NI-Befehlssatz wurde den Intel-CPUs um 2010 hinzugefügt und ist seitdem in praktisch allen Mainstream-CPUs enthalten. Ich denke, es ist fair zu sagen, dass wenn Sie eine 5 Jahre alte oder neuere CPU verwenden, die Wahrscheinlichkeit hoch ist, dass Ihr AES hardwarebeschleunigt ist, es sei denn, Sie deaktivieren dies in Ihrer Anwendung explizit. Daniel Kamil Kozar vor 5 Jahren 0
Es scheint, als hätten Sie den [Coprozessor] (https://en.wikipedia.org/wiki/Coprocessor) mit drei Großbuchstaben falsch geschrieben;) Mazura vor 5 Jahren 0
In Ihrem Unternehmen sind nur 50 Mähmesser erforderlich. Fordern Sie ein Angebot an, damit ein Ingenieur Ihre perfekt optimierten Mähmesser entwerfen kann und ein Metallgeschäft eine kurze Auflage von 50 Mähblättern für Sie ausführen kann. Dann werden Sie sehen, warum nicht jeder nach Maß arbeitet Silizium für ihre spezifischen Berechnungen. Johnny vor 5 Jahren 0
Es gibt einen Markt für spezialisierte Chips, z. B. preiswerte [Intel Movidius] (https://developer.movidius.com/) oder [Intel Nervana] (https://ai.intel.com/intel-nervana-neural- Netzwerkprozessor /) (was AFAIK noch in der Forschung und nicht für den Einzelhandel ist) laika vor 5 Jahren 0
Ihre Analogie bezüglich des Box-Lüfters und des Rasenmähers ist deaktiviert. Stellen Sie sich vor, Sie hätten mit einem Box-Lüfter zur Kühlung begonnen. Dann wurde dir klar, dass du auch mit dem Box-Fan Gras (schlecht) schneiden könntest und dann angefangen hast. Dann erfand jemand ein spezielles Grasschneidgerät, und viele Leute begannen damit, Gras zu schneiden. Eines Tages bemerkte jemand, dass wenn er den Grasschneider nahm und ein paar Stücke entfernte, eine Art Lüfter entsteht, der in manchen Situationen besser kühlt als Box-Lüfter. Nun kaufen viele Leute, die eine solche Kühlung wünschen, Grasschneider anstelle von größeren Box-Fans. Todd Wilcox vor 5 Jahren 1
Mir fehlt die Wiederholung, um zu antworten, also bitte stimmen Sie dies bitte zu und ich werde eine seriöse Antwort posten, wenn ich 10 Wiederholungen bekomme :). Ich bin Softwareentwickler und nutze CPU / GPU ausgiebig. Ich habe auch EE-Expertise. "Warum gibt es also keinen Markt für einen Chip oder ein Gerät, das über die Rechenleistung einer GPU verfügt?" Das nennt man ASIC und sie sind teuer in der Herstellung. Ein FPGA ist im Wesentlichen eine ASIC, die "im Feld" programmiert werden kann, aber sie sind viel langsamer - zu langsam, um mit ASICs konkurrenzfähig zu sein. Intel hat sich jedoch mit Stratix zusammengetan, um das zu ändern (google: AWS EC2 F1). Erwiderte diesen Kommentar für eine robustere Antwort :) Robear vor 5 Jahren 0
Weil es sehr teuer ist, einen völlig neuen Chip zu entwerfen. Wenn Sie etwas kaufen, das bereits existiert, müssen Sie nicht mit solchen Kosten spielen. mathreadler vor 5 Jahren 0
@Robear Upvotes für Kommentare bringen keine Wiederholungen. David Richerby vor 5 Jahren 2
@Robear Schlagen Sie gute Bearbeitungen für fünf verschiedene Beiträge vor, die genehmigt werden, und Sie können Antworten schreiben. Todd Wilcox vor 5 Jahren 1

10 Antworten auf die Frage

109
Bob

Es ist wirklich eine Kombination all Ihrer Erklärungen. Günstiger und einfacher gibt es bereits, und das Design hat sich von reinen Grafiken entfernt.


Eine moderne GPU kann als primärer Stream-Prozessor mit zusätzlicher Grafikhardware (und einigen Beschleunigern mit fester Funktion, z. B. zum Codieren und Decodieren von Video) angesehen werden. Die GPGPU- Programmierung verwendet heutzutage speziell dafür entwickelte APIs (OpenCL, Nvidia CUDA, AMD APP).

In den letzten ein oder zwei Jahrzehnten haben sich GPUs von einer Pipeline mit fester Funktion (nur Grafiken) zu einer programmierbaren Pipeline (mit Shader können Sie benutzerdefinierte Anweisungen schreiben) zu moderneren APIs wie OpenCL entwickelt, die einen direkten Zugriff auf die Shader-Kerne ohne ermöglichen begleitende Grafik-Pipeline.

Die restlichen Grafikbits sind geringfügig. Sie machen einen so geringen Teil der Kosten für die Karte aus, dass es nicht wesentlich billiger ist, sie wegzulassen, und Sie müssen die Kosten für ein zusätzliches Design tragen. Daher wird dies normalerweise nicht durchgeführt - es gibt kein rechnerorientiertes Äquivalent der meisten GPUs - außer auf den höchsten Ebenen, und diese sind recht teuer.

Normale "Gaming" -GPUs werden sehr häufig verwendet, da Skaleneffekte und relativ einfache Bedienbarkeit sie kostengünstig und leicht machen. Dies ist ein relativ einfacher Weg von der Grafikprogrammierung zur Beschleunigung anderer Programme mit GPGPU. Es ist auch einfach, die Hardware zu aktualisieren, da im Gegensatz zu den anderen Optionen neuere und schnellere Produkte verfügbar sind.


Grundsätzlich gibt es folgende Möglichkeiten:

  • Universal-CPU, ideal für Verzweigungen und sequenziellen Code
  • Normal "Gaming" GPU
  • Rechenorientierte GPU, z. B. Nvidia Tesla und Radeon Instinct Diese unterstützen häufig keine Grafikausgabe, daher ist die GPU ein bisschen irreführend. Sie verwenden jedoch ähnliche GPU-Kerne wie normale GPUs und der OpenCL / CUDA / APP-Code ist mehr oder weniger direkt portierbar.
  • FPGAs, die ein sehr anderes Programmiermodell verwenden und in der Regel sehr teuer sind. Hier besteht eine erhebliche Eintrittsbarriere. Sie sind auch nicht unbedingt schneller als eine GPU, abhängig von der Arbeitslast.
  • ASICs, kundenspezifische Schaltungen (Hardware). Dies ist sehr teuer und lohnt sich nur bei extremer Skalierung (wir sprechen zumindest viele Tausende von Einheiten), und wo Sie sicher sind, dass das Programm niemals geändert werden muss. Sie sind in der realen Welt selten realisierbar. Sie müssen auch die gesamte Sache jedes Mal neu entwerfen und testen, wenn sich die Technologie weiterentwickelt. Sie können nicht einfach einen neuen Prozessor eintauschen, wie Sie dies mit CPUs und GPUs tun können.
ASICs sind auch sinnvoll, wenn sich das Rechnen buchstäblich für sich bezahlt macht (Crypto Mining) ratchet freak vor 5 Jahren 16
Tatsächlich sind FPGAs oft schlechter als GPUs. Das Problem ist, dass FPGAs sehr flexibel sind. Sie können viele verschiedene Operationen ausführen. Berechnungen sind jedoch im Allgemeinen eine Form der Mathematik, und in der Tat besteht der Hauptteil aus nur zwei Operationen: Addition und Multiplikation (Subtraktion und Division sind Varianten des obigen). GPUs sind bei diesen beiden Operationen sehr gut, viel mehr als FPGAs. MSalters vor 5 Jahren 4
Sie müssen mehr über FPGAs erfahren. Die Vorstellung, dass es einen "Aufstieg" gibt, ist ein bisschen irreführend. Sie sind eher einen Schritt seitwärts. Yakk vor 5 Jahren 19
@ratchetfreak Auch beim Crypto Mining gelten einige Punkte von Bob. Sie sind für Bitcoin geeignet, da es unwahrscheinlich ist, dass sich das Programm ändert (die Bitcoin-Community ist an SHA256 gebunden). Dies trifft nicht auf alle Währungen zu - beispielsweise plant Ethereum in naher Zukunft Änderungen. Die Monero-Community hat kürzlich ihr Engagement für die Änderung des Hash-Werts unter Beweis gestellt, falls ASIC-Bergleute entwickelt wurden. James_pic vor 5 Jahren 2
Als letztes Beispiel verfügt Google über eigene "Tensor Processing Units" für maschinelles Lernen. Inwieweit sie angepasst werden, ist unklar, wird jedoch als ASICs bezeichnet. mbrig vor 5 Jahren 6
Während Rechenkerne, Speichercontroller und interne Kommunikationsfunktionen einen großen Teil der Transistoranzahl in High-End-Karten ausmachen. Video-Kodierungs- / Dekodierungsblöcke mit fester Funktion für die neuesten Codecs machen einen Großteil der Gesamtgröße für Low-End-Modelle aus. Ich kann jetzt kein Beispiel finden, aber als NVIDIAs Pascal herauskam, erinnere ich mich an Leute, die festgelegte Kern- und Transistorkennzahlen verwendeten, um die Größe der Hardware mit fester Funktion abzuschätzen und zu folgern, dass die GPU-Kerne kaum die Hälfte der Fläche des GP107-Chips ausmachen ( 1050/1050 Ti); und spekulieren, ob ein kleineres Modell die erforderliche Arbeit wert wäre Dan Neely vor 5 Jahren 0
@MSalters Einer der Hauptvorteile von FPGAs gegenüber GPUs ist die Leistung / Watt, die immer wichtiger wird, wenn Rechenzentren an die Macht geraten (FPGAs sind im Allgemeinen energieeffizienter). Was die Mathematik angeht, sind FPGAs in der Festkomma- und Ganzzahlarithmetik mit GPUs vergleichbar und liegen nur in der Gleitkomma-Mathematik hinterher. wilcroft vor 5 Jahren 4
@wilcroft: GPUs schlagen FPGAs in Bezug auf Leistung / Watt für ihre typischen Workloads. Kein Wunder, dass es sich bei CPUs im Wesentlichen um ASICs handelt - anwendungsspezifische ICs, bei denen die Anwendung Grafikdarstellung ist. Und das beinhaltet natürlich viele Matrixmultiplikationen. MSalters vor 5 Jahren 1
@ Malter Zitieren? Bei General Purpose Compute (was die Frage war) wurde bei allen Untersuchungen, die ich gesehen habe, gezeigt, dass FPGAs einen erheblichen Leistungsvorteil haben. (Quellen: https://ieeexplore.ieee.org/document/5325422/, https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7032542, http://www.bertendsp.com/ pdf / whitepaper / BWP001_GPU_vs_FPGA_Performance_Comparison_v1.0.pdf, http://www.ann.ece.ufl.edu/courses/eel6686_15spr/papers/paper1a.pdf usw.) wilcroft vor 5 Jahren 0
Meines Wissens ist es die Hauptstärke eines FPGAs, dass er leicht umprogrammiert werden kann. Als solches hat es nicht die Geschwindigkeit eines ASICs (von dem CPUs und GPUs eine Art sind), hat aber auch sehr viel niedrigere Kosten (aufgrund fehlender Werkzeugkosten) für benutzerdefinierte Funktionen, die schneller ausgeführt werden können als ein ASIC reine Softwarelösung. Michael vor 5 Jahren 1
32
BobtheMagicMoose

Meine Lieblingsanalogie:

  • CPU : Ein Polymath-Genie. Kann ein oder zwei Dinge gleichzeitig tun, aber diese Dinge können sehr komplex sein.
  • GPU : Eine Tonne gering qualifizierte Arbeitskräfte. Jeder von ihnen kann keine großen Probleme lösen, aber in der Masse kann man viel erreichen. Zu Ihrer Frage: Ja, es gibt einige Grafik-Overheads, aber ich glaube, es ist marginal.
  • ASIC / FPGA : Ein Unternehmen. Sie können eine Tonne gering qualifizierter Arbeiter oder ein paar Genies oder eine Kombination aus gering qualifizierten Arbeitern und Genies einstellen.

Was Sie verwenden, hängt von der Kostensensitivität, dem Grad der Parallelisierung einer Aufgabe und anderen Faktoren ab. Aufgrund der Marktentwicklung sind GPUs die beste Wahl für die meisten parallelen Anwendungen, und CPUs sind die beste Wahl, wenn Leistung und Stückkosten im Vordergrund stehen.

Direkt zu Ihrer Frage: Warum eine GPU über einen ASIC / FPGA? Im Allgemeinen kosten. Trotz der heutigen überhöhten GPU-Preise ist es (generell) immer noch billiger, eine GPU zu verwenden, als einen ASIC zu entwickeln, der Ihren Anforderungen entspricht. Wie @ user912264 darauf hinweist, gibt es bestimmte Aufgaben, die für ASICs / FPGAs nützlich sein können. Wenn Sie eine einzigartige Aufgabe haben und von der Skalierung profitieren, kann es sich lohnen, einen ASIC / FPGA zu entwerfen. In der Tat können Sie FPGA-Designs speziell für diesen Zweck entwerfen / kaufen / lizenzieren. Dies geschieht beispielsweise, um die Pixel in hochauflösenden Fernsehern mit Strom zu versorgen.

Kommentare sind sowieso nicht für Antworten, und das scheint mir eine vernünftige Antwort zu sein. Raimund Krämer vor 5 Jahren 7
@BobtheMogicMoose Es kann jedoch um Größenordnungen schneller sein, einen für die Genomanalyse entwickelten benutzerdefinierten FPGA zu verwenden, als den entsprechenden Code in einer GPU zu haben. Wenn Sie Wissenschaftler dafür bezahlen, auf die Ergebnisse zu warten, zahlt sich das schnellere FPGA sehr schnell aus. user912264 vor 5 Jahren 1
FPGAs werden auch für gewöhnliche Entwickler viel zugänglicher - Microsoft verfügt beispielsweise über eine [Cloud-KI-Lösung mit FPGAs] (https://blogs.microsoft.com/ai/build-2018-project-brainwave/) (Project BrainWave) ). AWS hat auch einige Angebote. Jeder kann individuelle FPGAs für spezielle Aufgaben ausleihen, ohne sie selbst bauen zu müssen, was für viele Anwendungsfälle noch vor einigen Jahren nicht machbar war. brichins vor 5 Jahren 0
Ja, ich denke, es gibt sogar FPGA-Hobby-Kits, die mit einem Arduino-Himbeer-Pi vergleichbar sind. Ich denke immer noch, FPGAs zu programmieren ist viel teurer als weiterentwickelte Architekturen. BobtheMagicMoose vor 5 Jahren 0
10
jstbnfdsrtah

Ihre Analogie ist schlecht. In der Analogie, wenn Sie Geräte für ein großes Rasenpflegeunternehmen kaufen, gehen Sie davon aus, dass gute Rasenmäher verfügbar sind. Dies ist in der Computerwelt nicht der Fall - GPUs sind das beste verfügbare Werkzeug.

Die Kosten für Forschung und Entwicklung sowie mögliche Leistungssteigerungen für einen spezialisierten Chip sind wahrscheinlich zu hoch, als dass man einen Chip rechtfertigen könnte.

Ich bin mir jedoch bewusst, dass Nvidia einige GPUs speziell für den Allzweck-Computing ausgibt - sie hatten keine Videoausgänge - ein bisschen wie ein Verkauf von Box-Fans, bei denen die Käfige bereits entfernt wurden.

9
MCCCS

Natürlich können Sie spezielle Chips verwenden, entweder für die Energieeffizienz oder für die Berechnungsgeschwindigkeit. Ich erzähle Ihnen die Geschichte des Bitcoin-Bergbaus:

  • Bitcoin ist neu, Geeks mit ihren CPUs.
  • Bitcoin ist etwas neues, kluge Geeks mit ihren GPUs.
  • Bitcoin ist jetzt (irgendwie) berühmt, die Leute kaufen FPGAs.
  • Bitcoin ist mittlerweile berühmt (2013), auch Neulinge kaufen ASICs ("Application Specific Integrated Circuits"), um effizient abzubauen.
  • Blockieren Sie Belohnungsabfälle (periodisch), selbst alte ASICs sind nicht mehr rentabel.

Nein, es gibt keine Gründe, eine GPU anstelle eines spezialisierten "Riesenrechners" zu verwenden. Je größer die wirtschaftlichen Anreize sind, desto stärker wird die Hardware spezialisiert. Sie sind jedoch ziemlich schwer zu entwerfen und nicht durchführbar, wenn Sie nicht Tausende auf einmal produzieren. Wenn es nicht rentabel ist Chips zu entwerfen, können Sie eine von kaufen diejenigen vom nächsten Walmart.

TL; DR Natürlich können Sie spezialisiertere Chips verwenden.

"Natürlich können Sie mehr spezialisierte Chips verwenden" - aber es gibt spezielle Chips für Bitcoin (SHA-256), dann für Litecoin (Scrypt), und das ist es schon. Hochleistungscomputerhardware für andere Probleme gibt es nicht. (Das heißt, die Leistung ist höher als bei aktuellen High-End-GPUs.) Agent_L vor 5 Jahren 1
8
Mario Chapa

Was Sie in Ihrer Analogie beschreiben, ist genau das, was passiert ist. Gerade als Sie sich Ihren Lüfter schnappten und die Klingen schärften, um zu versuchen, sie als Mäher zu verwenden, realisierte eine Gruppe von Forschern: "Hey, wir haben hier eine ziemlich schöne Multi-Core-Prozessoreinheit, wir können versuchen, sie für allgemeine Berechnungen zu verwenden! ".

Das Ergebnis war gut und der Ball begann zu rollen. Die GPU ging von einem reinen Grafikgerät aus, um allgemeine Berechnungen zur Unterstützung der anspruchsvollsten Situationen zu unterstützen.

Der rechnerisch anspruchsvollste Vorgang, den wir von Computern erwarten, ist ohnehin die Grafik. Es genügt, einen Blick auf die erstaunlichen Fortschritte zu werfen, wie Spiele heute aussehen, im Vergleich zu vor wenigen Jahren. Dies bedeutet, dass viel Aufwand und Geld in die Entwicklung der GPUs gesteckt wurde, und die Tatsache, dass sie auch verwendet werden könnten, um eine bestimmte Klasse von Allzweckberechnungen (dh extrem parallel) zu beschleunigen, erhöhte deren Beliebtheit.

Zusammenfassend ist die erste Erklärung, die Sie anbieten, die genaueste:

  • Eine solche Alternative wäre zu teuer, wenn die GPU bereits eine gute Option ist.

GPUs waren bereits vorhanden, sie sind für jeden verfügbar und arbeiteten.

Ich muss nicht zustimmen, dass es sich bei "am rechenintensivsten Vorgang" um Grafiken handelt, abhängig davon, wer "wir" sind. Für allgemeine Benutzer, ja, aber in der Wissenschafts- und Ingenieurgemeinschaft gibt es viele Dinge, die anspruchsvoller sind als Grafiken. Schließlich können akzeptable Grafiken (wie für Spiele) mit einem einzelnen PC und einer GPU-Combo der Mittelklasse erstellt werden. Signifikante Probleme kombinieren oft Hunderte oder Tausende solcher Einheiten, um eine Leistung im Petaflop-Bereich zu erzielen - und dann können Probleme noch Tage oder Wochen Rechenzeit in Anspruch nehmen. jamesqf vor 5 Jahren 5
Die rechnerisch anspruchsvollste Operation, die ich von meinem Computer erwarte, sind * technisch * Grafiken, aber die Berechnungen der Struktur aus Bewegung sind nicht das, woran die meisten Leute (oder GPU-Designer) denken, wenn sie das Wort "Grafiken" hören. Mark vor 5 Jahren 0
5
Rob

Insbesondere sind GPUs keine "Kerne" im Sinne von "Task-Parallelität". Meistens handelt es sich um "Datenparallelität". SIMD ist "Single Instruction Multiple Data". Das bedeutet, dass Sie dies nicht tun würden:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Dies bedeutet, dass Sie über 1024 Befehlszeiger verfügen, die jeweils separate Aufgaben mit unterschiedlichen Raten ausführen. SIMD oder "Vector Computing" führt Anweisungen über ganze Arrays gleichzeitig aus, und zwar eher wie folgt:

c = a * b

Die "Schleifen" befinden sich in den Anweisungen "*" und "=" und liegen nicht außerhalb der Anweisungen. Das Obige würde dies für alle 1024 Elemente gleichzeitig tun, am gleichen Befehlszeiger für alle. Es ist, als hätte man drei große Register für a, b und c. SIMD-Code ist extrem eingeschränkt und funktioniert nur bei Problemen, die nicht übermäßig "verzweigt" sind.

In realistischen Fällen sind diese SIMD-Werte nicht ganz so groß wie 1024 Artikel. Stellen Sie sich eine Variable vor, die aus einer Gruppe von int32 besteht. Sie können sich das Multiplizieren vorstellen und als echte Maschinenanweisung zuweisen.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

Echte GPUs sind komplizierter als SIMD, aber das ist das Wesentliche. Aus diesem Grund können Sie nicht einfach einen zufälligen CPU-Algorithmus auf eine GPU werfen und eine Beschleunigung erwarten. Je mehr Befehlsverzweigungen der Algorithmus macht, desto weniger ist er für eine GPU geeignet.

5
NerdPirate

Die anderen Antworten hier sind ziemlich gut. Ich werde auch meine 2 Cent einwerfen.

Ein Grund dafür, dass CPUs so allgegenwärtig geworden sind, ist ihre Flexibilität. Sie können sie für eine unendliche Vielzahl von Aufgaben neu programmieren. Heutzutage ist es für Unternehmen, die Produkte herstellen, die eine kleine CPU oder einen Mikrocontroller in etwas stecken und deren Funktionalität programmieren, billiger und schneller als die Entwicklung kundenspezifischer Schaltungen, um dieselbe Aufgabe zu erfüllen.

Wenn Sie dasselbe Gerät wie andere Geräte verwenden, können Sie die bekannten Lösungen für Probleme nutzen, die dasselbe Gerät (oder ein ähnliches Gerät) verwenden. Und während die Plattform reifer wird, entwickeln sich Ihre Lösungen immer weiter und werden sehr ausgereift und optimiert. Die Leute, die auf diesen Geräten kodieren, gewinnen auch Fachwissen und werden sehr gut im Handwerk.

Wenn Sie einen neuen Gerätetyp von Grund auf erstellen möchten, eine Alternative zu einer GPU, würde es Jahre dauern, bis die ersten Anwender tatsächlich wissen, wie sie verwendet werden. Wenn Sie einen ASIC an Ihre CPU anschließen, wie optimieren Sie die Ablade-Berechnung auf dieses Gerät?

Die Computerarchitektur-Community ist seit einigen Jahren mit dieser Idee konfrontiert (sie war offensichtlich populär, hat aber kürzlich eine Renaissance erlebt). Diese "Beschleuniger" (ihre Laufzeit) sind in unterschiedlichem Umfang programmierbar. Das Problem ist, wie eng definieren Sie den Umfang des Problems, das Ihr Beschleuniger bewältigen kann? Ich habe sogar mit einigen Leuten gesprochen, die an der Entwicklung eines Beschleunigers mit analogen Schaltungen mit Operationsverstärkern gearbeitet haben, um Differentialgleichungen zu berechnen. Tolle Idee, aber extrem enger Spielraum.

Wenn Sie einen Beschleuniger haben, entscheiden die wirtschaftlichen Kräfte über Ihr Schicksal. Die Trägheit des Marktes ist eine unglaubliche Kraft. Auch wenn etwas eine großartige Idee ist, ist es wirtschaftlich machbar, Ihre Arbeitslösungen für die Verwendung dieses neuen Geräts zu überarbeiten? Vielleicht, vielleicht nicht.

GPUs sind für bestimmte Arten von Problemen furchtbar, daher arbeiten viele Leute / Unternehmen an anderen Arten von Geräten. Aber GPUs sind bereits so tief verwurzelt. Werden ihre Geräte jemals wirtschaftlich werden? Ich denke, wir werden sehen.

Edit: Ich erweitere meine Antwort etwas, jetzt bin ich aus dem Bus.

Eine vorsichtige Fallstudie ist das Intel Larrabee-Projekt. Es begann als paralleles Verarbeitungsgerät, das Grafiken in Software ausführen konnte. es hatte keine spezielle Grafikhardware. Ich habe mit jemandem gesprochen, der an dem Projekt mitgearbeitet hat. Ein Hauptgrund dafür, dass das Projekt fehlgeschlagen ist und abgesagt wurde (abgesehen von der schrecklichen internen Politik), war, dass der Compiler einfach nicht dazu gebracht werden konnte, einen guten Code dafür zu erstellen. Natürlich hat es Funktionscode produziert, aber wenn es um die maximale Leistung Ihres Produkts geht, haben Sie besser einen Compiler, der ziemlich optimalen Code erzeugt. Dies ist ein Rückblick auf meinen früheren Kommentar, dass mangelnde Fachkenntnisse in Hardware und Software für Ihr neues Gerät ein großes Problem sind.

Einige Elemente des Larrabee-Designs haben es zum Xeon Phi / Intel MIC gemacht. Dieses Produkt hat es tatsächlich auf den Markt gebracht. Das Hauptaugenmerk lag auf der Parallelisierung wissenschaftlicher und anderer HPC-Berechnungen. Es sieht so aus, als wäre es jetzt ein kommerzieller Misserfolg. Eine andere Person, mit der ich bei Intel gesprochen habe, deutete an, dass sie nicht mit Preis-Leistungs-Verhältnis zu GPUs konkurrenzfähig war.

Menschen haben versucht, die Logiksynthese für FPGAs in Compiler zu integrieren, sodass Sie automatisch Code für Ihre FPGA-Beschleuniger generieren können. Sie arbeiten nicht so gut.

Ein Ort, der für Beschleuniger oder andere Alternativen zu GPUs wirklich fruchtbarer Boden zu sein scheint, ist die Wolke. Die Skaleneffekte dieser großen Unternehmen wie Google, Amazon und Microsoft machen die Investition in alternative Berechnungssysteme lohnenswert. Jemand hat bereits die Tensor-Verarbeitungseinheiten von Google erwähnt. Microsoft verfügt in seiner gesamten Bing- und Azure-Infrastruktur über FPGAs und anderes. Gleiche Geschichte mit Amazon. Es ist absolut sinnvoll, wenn die Waage Ihre Investition in Zeit, Geld und Tränen kompensieren kann.

Zusammenfassend lässt sich sagen, dass die Spezialisierung im Widerspruch zu vielen anderen Dingen steht (Wirtschaftlichkeit, Reife der Plattform, Engineering-Know-how usw.). Durch die Spezialisierung kann Ihre Leistung erheblich verbessert werden, jedoch wird der Anwendungsbereich Ihres Geräts eingeschränkt. Meine Antwort konzentrierte sich auf viele negative Aspekte, aber die Spezialisierung hat auch eine Menge Vorteile. Es sollte unbedingt verfolgt und untersucht werden, und wie ich bereits erwähnte, verfolgen viele Gruppen es sehr aggressiv.

Entschuldigung, redigiere noch einmal: Ich denke, deine ursprüngliche Prämisse ist falsch. Ich glaube, es ging weniger darum, nach zusätzlichen Energiequellen zu suchen, als vielmehr, wenn Menschen eine Chance erkennen. Die Grafikprogrammierung ist sehr linear, die Algebra ist sehr hoch, und die GPU wurde entwickelt, um gängige Operationen wie Matrixvervielfachung, Vektoroperationen usw. effizient auszuführen. Operationen, die auch für das wissenschaftliche Rechnen sehr häufig sind.

Das Interesse an GPUs begann gerade, als die Leute erkannten, dass die Versprechen, die das EPIC-Projekt von Intel und HP gegeben hatte, deutlich übertrieben wurden (Ende der 90er Jahre Anfang 2000). Es gab keine generelle Lösung für die Compiler-Parallelisierung. Anstatt zu sagen "Wo finden wir mehr Rechenleistung, oh, wir könnten die GPU ausprobieren?" Ich denke, es war mehr "Wir haben etwas, das bei parallelen Berechnungen gut ist, können wir dies allgemeiner programmierbar machen". Viele der beteiligten Personen waren in der Scientific Computing-Community tätig und hatten bereits parallelen Fortran-Code, den sie auf Cray- oder Tera-Maschinen ausführen konnten (Tera MTA hatte 128 Hardware-Threads). Vielleicht gab es Bewegungen aus beiden Richtungen, aber ich habe nur Erwähnungen der Ursprünge der GPGPU aus dieser Richtung gehört.

Unter "Beschleunigern" beziehen Sie sich auf kundenspezifische Hardware oder Super-Cluster von Knoten mit niedrigem Stromverbrauch. Können Sie etwas näher erläutern, indem Sie auf einige Beispiele für Beschleunigerhardware verweisen. manav m-n vor 5 Jahren 0
Entschuldigung, ich dachte, ich hätte das aus dem Zusammenhang deutlich gemacht. Der Beschleuniger ist nur ein Überbegriff für einen Coprozessor oder eine Auslagerungskarte. Der Gleitpunkt befand sich ursprünglich in einem Coprozessor und nicht in der Haupt-CPU, und er wäre als Beschleuniger betrachtet worden. GPUs, DSPs, der Xeon Phi, FPGAs, wenn sie sich auf einer PCIe-Karte oder etwas Ähnlichem befinden, die analoge Differentialgleichung, die ich erwähnt habe, gibt es Geräte, die bei der Virtualisierung helfen, es gibt aktuelle Forschungen zu neuronalen Netzwerkbeschleunigern. Das sind alles Beispiele für Beschleuniger. NerdPirate vor 5 Jahren 0
4
Robear

Ein ASIC (benutzerdefiniertes Silizium) ist sehr schnell, aber es ist sehr teuer in Konstruktion und Herstellung. ASICs waren früher zweckspezifisch, und die CPU war ein Ansatz, bei dem Computer "programmiert" werden konnten, so dass Rechenaufgaben von Software ausgeführt werden konnten. Frühe CPU's ermöglichten es den Anwendern, die Leistungsfähigkeit von ASIC zu nutzen, ohne die massiven Kosten durch die Programmierung des Chips im Feld zu nutzen. Dieser Ansatz wurde so erfolgreich, dass der (sehr) schnelle Computer, den Sie gerade verwenden, entstanden ist.

Warum also GPUs?

Mitte der 90er Jahre erkannte 3DFX, dass 3D-Rendering-Aufgaben so spezifisch waren, dass ein benutzerdefinierter ASIC wesentlich besser abschneiden würde als eine CPU. Sie erstellten einen Computer-Coprozessor, der 3D-Rendering-Aufgaben von der CPU auf diesen Coprozessor übertrug, der als "GPU" bezeichnet wurde. Wettbewerb und Marktnachfrage trieben die Innovationen in diesem Bereich an einen Punkt, an dem die GPUs wesentlich schneller berechneten als die CPU. Daher stellte sich die Frage: "Warum kann ich die GPU nicht anstelle der CPU verwenden, um meine Zahlen zu reduzieren?" GPU-Hersteller sahen eine Nachfrage und einen Weg, um mehr Geld zu verdienen. Daher begannen sie, ihre Plattformen zu ändern, damit Entwickler ihre Hardware verwenden konnten. Die Hardware-Hardware war jedoch so spezifisch, dass es Einschränkungen gab und noch gab, was Sie von der GPU verlangen können. Ich werde hier nicht näher darauf eingehen.

Warum also gab es nicht mehr zweckspezifisches Silizium? Warum gerade Grafiken?

Zwei Gründe: 1) Preis. GPUs hatten einen guten Markt und konnten dies rechtfertigen, aber selbst damals war das ein großes Risiko. Niemand wusste wirklich, ob 3DFX einen Gewinn erzielen konnte (es stellte sich heraus, dass sie es tatsächlich nicht konnten und nicht mehr funktionierten). Mit der Größe des GPU-Marktes gibt es eigentlich nur 3 Konkurrenten. 2) CPUs erfüllten eigentlich den Bedarf an "benutzerdefiniertem Silizium" mit Befehlserweiterungen. Denken Sie an MMX zurück - dies war eigentlich der Versuch von Intel, die Grafik in der CPU zu beschleunigen, da 3DFX an Geschwindigkeit gewann. Seitdem ist der x86-Befehlssatz mit all diesen benutzerdefinierten Erweiterungen ziemlich massiv geworden. Viele dieser Erweiterungen machten zu der Zeit Sinn (wie MMX), sind jedoch im Prozessor derzeit nur noch knapp. Sie können sie jedoch nicht entfernen, da dann vorhandene Software beschädigt wird. Es' Tatsächlich ist einer der Verkaufsargumente für ARM - ARM ein reduzierter Befehlssatz. Es gibt nicht so viele Befehlserweiterungen, aber dies macht das Silizium kleiner und billiger in der Herstellung.

Mir scheint, als könnten Sie viel Geld verdienen, wenn Sie die Kosten für kundenspezifisches Silizium reduzieren könnten. Arbeitet niemand daran?

Es gibt eine Technologie namens FPGA - Field Programmable Gate Array, die es seit den Anfängen des Computing gibt. Es ist im Wesentlichen ein Mikrochip, den Sie mithilfe von Software "vor Ort" entwerfen können. Es ist eine sehr coole Technologie, aber die gesamte Struktur, die erforderlich ist, um den Chip programmierbar zu machen, beansprucht viel Silizium und führt dazu, dass die Chips mit viel niedrigeren Taktraten laufen. FPGAs können schneller als CPUs sein, wenn Sie genügend Silizium auf dem Chip haben UND die Aufgabe effektiv parallelisieren können. Sie sind jedoch in ihrer Logik begrenzt. Bis auf die teuersten FPGAs waren alle langsamer als GPUs für das frühe Bitcoin-Mining, aber ihre ASIC-Pendants haben die Profitabilität des GPU-Mining effektiv beendet. Andere Kryptowährungen haben bestimmte Algorithmen verwendet, die nicht parallelisiert werden können, so dass FPGAs und ASIC '

Der Hauptbegrenzer bei FPGAs ist die Siliziumgröße - wie viel Logik können Sie auf den Chip passen? Die zweite ist die Taktrate, da in einem FPGA Dinge wie Hot Spots, Leckage und Übersprechen nur schwer zu optimieren sind. Neuere Fertigungsmethoden haben diese Probleme minimiert, und Intel hat zusammen mit Altera einen FPGA entwickelt, mit dem Ingenieure die Vorteile von "benutzerdefiniertem Silizium" als Co-Prozessor in einem Server nutzen können. Es kommt also gewissermaßen.

Werden FPGAs jemals CPUs und GPUs ersetzen?

Wahrscheinlich nicht so bald. Die neuesten CPUs und GPUs sind MASSIVE und das Silizium ist auf thermische und elektrische Leistung abgestimmt. Sie können FPGAs nicht auf dieselbe Weise optimieren wie benutzerdefinierte ASICs. Abgesehen von bahnbrechender Technologie wird die CPU wahrscheinlich der Kern Ihres Computers mit FPGA- und GPU-Coprozessoren bleiben.

* Viele dieser Erweiterungen waren zu der Zeit sinnvoll (wie MMX), sind jedoch jetzt im Prozessor nur noch schwergewichtig. * 3D-Rendering ist * weit * vom einzigen Anwendungsfall für SIMD entfernt. Der größte Teil des "Gewichts" von MMX sind die Ausführungseinheiten, und diese können mit breiteren Vektoren wie SSE2, AVX2 und AVX512 gemeinsam genutzt werden. Diese werden häufig für die Videocodierung in hoher Qualität auf CPUs und viele andere Aufgaben verwendet, darunter auch das Hochleistungsrechnen. Aber auch Bibliotheksimplementierungen von memchr, strlen und vielen anderen Sachen. Beispiel: [Filtern eines Arrays] (https://stackoverflow.com/q/36932240) mehr als 1 Element gleichzeitig Peter Cordes vor 5 Jahren 1
3
Dmitry Grigoryev

Tatsächlich gibt es ein spezielles Board für Hochgeschwindigkeits-Computing, z. B. hat Xilinx eine Liste von 178 PCI-e-Boards, die ihre FPGAs verwenden, und etwa ein Drittel dieser Boards sind "Number Crunchers" mit einem oder mehreren leistungsstarken FPGA-Chips und vielen Board-DDR-Speicher. Es gibt auch Hochleistungs-DSP-Karten ( Beispiel ), die sich an Hochleistungs-Computeraufgaben richten.

Ich glaube, die Popularität von GPU-Boards beruht auf ihrem Ziel einer breiteren Kundengruppe. Sie müssen nicht in spezielle Hardware investieren, um mit Nvidia CUDA zu spielen. Wenn Sie also eine Aufgabe haben, für die spezielle Hardware erforderlich ist, haben Nvidia-GPUs einen Wettbewerbsvorteil, da Sie bereits wissen, wie Sie sie programmieren.

2
Cloud Cho

Ich denke, die Antwort auf Ihre Frage hängt davon ab, wie Sie Hochleistungsberechnung definieren.

Im Allgemeinen bezieht sich die Hochleistungsberechnung auf die Berechnungszeit. In diesem Fall möchte ich gerne den Link des Hochleistungs-Computing-Clusters teilen .

Der Link gibt den Grund der Nutzung der GPU an; Die Verwendung von Grafikkarten (bzw. deren Grafikprozessoren) für Berechnungen für das Grid-Computing ist trotz der geringeren Genauigkeit erheblich wirtschaftlicher als die Verwendung von CPU.

High-End-GPGPUs haben einen guten Durchsatz für die 64-Bit-Doppelgenauigkeit, nicht nur für die Single-Precision-32-Bit-Ebene. (Einige reguläre GPUs sparen auf "HW" für "double"). Die großen Anbieter unterstützen alle die IEEE FP-Mathematik (ich denke sogar bei Denormals). Es gibt also keinen Präzisionsverlust, es sei denn, Sie möchten Präzision für Leistung tauschen, z. B. mit 16-Bit-Halbpräzisions-FP, das auf manchen Geräten sogar einen besseren Durchsatz hat (und natürlich die halbe Speicherbandbreite). Hochleistungscode auf CPUs verwendet häufig auch 32-Bit-Float, um doppelt so viele Elemente pro SIMD-Vektor und die Hälfte der Speicherbandbreite zu erhalten. Peter Cordes vor 5 Jahren 2
@ PeterCordes Ich habe einige Arbeit in der Näherungsberechnung erlebt, die sogar auf einen 8-Bit-Fließkommawert reduziert wird, obwohl ich nicht glaube, dass viele GPUs dies in Hardware unterstützen. JAB vor 5 Jahren 1