Nach meinem Verständnis haben die Leute angefangen, GPUs für die allgemeine Datenverarbeitung zu verwenden, da sie eine zusätzliche Quelle für Rechenleistung darstellen. Und obwohl sie als CPU nicht für jede Operation schnell sind, haben sie viele Kerne, so dass sie für die Parallelverarbeitung besser geeignet sind als eine CPU. Dies ist sinnvoll, wenn Sie bereits einen Computer mit einer GPU für die Grafikverarbeitung besitzen, diese jedoch nicht benötigen und mehr Rechenleistung benötigen. Ich verstehe aber auch, dass die Leute GPUs speziell kaufen , um die Rechenleistung zu erhöhen, ohne die Absicht, sie zur Verarbeitung von Grafiken zu verwenden. Dies scheint mir ähnlich zu sein wie die folgende Analogie:
Ich muss mein Gras mähen, aber mein Rasenmäher ist schwach. Also nehme ich den Käfig aus dem Kastenventilator, den ich in meinem Schlafzimmer habe, und schärfe die Klingen. Ich klebe es mit Klebeband auf meinen Mäher 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 für Grasschneidegeräte. Anstatt Rasenmäher zu kaufen, kaufe ich ein paar Box-Fans. Auch hier funktionieren sie einwandfrei, aber ich muss für zusätzliche Teile (wie den Käfig) bezahlen, die ich nicht verwenden werde. (Für die Zwecke dieser Analogie müssen wir davon ausgehen, dass Rasenmäher und Kastenventilatoren ungefähr gleich viel kosten.)
Warum gibt es also keinen Markt für einen Chip oder ein Gerät mit der Rechenleistung einer GPU, aber nicht den Grafik-Overhead? Ich kann mir ein paar mögliche Erklärungen vorstellen. Welcher von ihnen ist richtig?
- Eine solche Alternative wäre zu teuer, um sie zu entwickeln, wenn die GPU bereits eine gute Option ist (Rasenmäher gibt es nicht, warum sollte man nicht diesen perfekt geeigneten Box-Lüfter verwenden?).
- Die Tatsache, dass 'G' für Grafik steht, bezeichnet nur eine beabsichtigte Verwendung und bedeutet nicht, dass der Chip besser an die Grafikverarbeitung angepasst werden muss als jede andere Art von Arbeit (Rasenmäher und Kastenventilatoren sind in diesem Fall identisch) Sie müssen nichts ändern, damit einer wie der andere funktioniert.
- Moderne GPUs tragen den gleichen Namen wie ihre alten Vorgänger, aber heutzutage sind die High-End-GPUs nicht speziell für die Verarbeitung von Grafiken konzipiert (moderne Box-Lüfter funktionieren meistens als Rasenmäher, auch wenn sie nicht älter sind).
- Es ist einfach, so ziemlich jedes Problem in die Sprache der Grafikverarbeitung zu übersetzen (Gras kann geschnitten werden, indem Luft sehr schnell darüber geblasen wird).
BEARBEITEN:
Meine Frage wurde beantwortet, aber basierend auf einigen Kommentaren und Antworten sollte ich meine Frage klarer formulieren. Ich frage nicht, warum nicht jeder seine eigenen Berechnungen kauft. Das wäre natürlich die meiste Zeit zu teuer.
Ich habe lediglich festgestellt, dass es Bedarf an Geräten zu geben scheint, die schnell parallele Berechnungen durchführen können. Ich habe mich gefragt, warum es so scheint, als ob das optimale Gerät die Graphics Processing Unit ist, im Gegensatz zu einem Gerät, das für diesen Zweck entwickelt wurde.
Antworten:
Es ist wirklich eine Kombination all Ihrer Erklärungen. Billiger und einfacher gibt es bereits und das Design hat sich von reinen Grafiken abgewandt.
Eine moderne GPU kann in erster Linie als Stream-Prozessor mit zusätzlicher Grafikhardware (und einigen Beschleunigern mit festen Funktionen, z. B. zum Kodieren und Dekodieren von Videos) angesehen werden. Die GPGPU- Programmierung verwendet heutzutage APIs, die speziell für diesen Zweck entwickelt wurden (OpenCL, Nvidia CUDA, AMD APP).
In den letzten ein oder zwei Jahrzehnten haben sich GPUs von einer Pipeline mit festen Funktionen (fast nur Grafiken) zu einer programmierbaren Pipeline (mit Shadern können Sie benutzerdefinierte Anweisungen schreiben) zu moderneren APIs wie OpenCL entwickelt, die einen direkten Zugriff auf die Shader-Kerne ohne das ermöglichen begleitende Grafik-Pipeline.
Die restlichen Grafikbits sind geringfügig. Sie machen einen so geringen Teil der Kosten der Karte aus, dass es nicht wesentlich billiger ist, sie wegzulassen, und Sie müssen die Kosten für ein zusätzliches Design bezahlen. Daher wird dies normalerweise nicht durchgeführt - es gibt kein rechenorientiertes Äquivalent für die meisten GPUs - außer auf den höchsten Ebenen, und diese sind recht teuer.
Normale "Gaming" -GPUs werden sehr häufig verwendet, da sie aufgrund ihrer Größenvorteile und ihrer relativen Einfachheit billig und einfach zu handhaben sind. Es ist ein ziemlich 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 ergeben sich folgende Auswahlmöglichkeiten:
quelle
Meine Lieblingsanalogie:
Was Sie verwenden, hängt von der Kostensensitivität, dem Grad der Parallelisierbarkeit einer Aufgabe und anderen Faktoren ab. Aufgrund der Entwicklung des Marktes sind GPUs die beste Wahl für hochparallele Anwendungen, und CPUs sind die beste Wahl, wenn Stromverbrauch und Stückkosten das Hauptanliegen sind.
Direkt zu Ihrer Frage: Warum eine GPU über einen ASIC / FPGA? Im Allgemeinen kosten. Selbst bei den heutigen überhöhten GPU-Preisen ist es (im Allgemeinen) immer noch billiger, eine GPU zu verwenden, als einen ASIC zu entwerfen, der Ihren Anforderungen entspricht. Wie @ user912264 hervorhebt, 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. Tatsächlich können Sie FPGA-Designs speziell für diesen Zweck entwerfen / kaufen / lizenzieren. Dies geschieht zum Beispiel, um die Pixel in hochauflösenden Fernsehgeräten mit Strom zu versorgen.
quelle
Deine Analogie ist schlecht. In der Analogie, wenn Sie Geräte für ein großes Rasenpflegegeschäft kaufen, gehen Sie davon aus, dass es gute Rasenmäher gibt. Dies ist in der Computerwelt nicht der Fall - GPUs sind das beste verfügbare Tool.
Die F & E-Kosten und möglichen Leistungsgewinne für einen spezialisierten Chip sind wahrscheinlich zu hoch, um einen solchen zu rechtfertigen.
Trotzdem ist mir bekannt, dass Nvidia einige GPUs speziell für allgemeine Zwecke herausbringt - sie hatten keine Videoausgänge - ein bisschen wie der Verkauf von Box-Fans mit bereits entfernten Käfigen.
quelle
Natürlich können Sie spezielle Chips verwenden, entweder aus Gründen der Energieeffizienz oder der Rechengeschwindigkeit. Lassen Sie mich Ihnen die Geschichte des Bitcoin-Bergbaus erzählen:
Nein, es gibt keinen Grund, eine GPU anstelle eines speziellen "Riesenrechners" zu verwenden. Je größer die wirtschaftlichen Anreize sind, desto spezialisierter wird die Hardware. Sie sind jedoch ziemlich schwer zu konstruieren und lassen sich nicht herstellen, 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.
quelle
Was Sie in Ihrer Analogie beschreiben, ist genau das, was passiert ist. Gerade als Sie Ihren Lüfter gepackt und die Klingen geschärft haben, um ihn als Mäher zu verwenden, haben eine Gruppe von Forschungen festgestellt: "Hey, wir haben hier eine hübsche Multi-Core-Verarbeitungseinheit, versuchen Sie, sie für allgemeine Berechnungen zu verwenden! ".
Das Ergebnis war gut und der Ball rollte. Die GPU wurde von einem reinen Grafikgerät zur Unterstützung allgemeiner Berechnungen verwendet, um in den anspruchsvollsten Situationen zu helfen.
Denn die rechenintensivste Operation, die wir von Computern erwarten, ist die Grafik. Es ist genug, um einen Blick auf die erstaunlichen Fortschritte zu werfen, die Spiele heute im Vergleich zu vor wenigen Jahren gemacht haben. Dies bedeutet, dass viel Aufwand und Geld in die Entwicklung der GPUs gesteckt wurden und die Tatsache, dass sie auch verwendet werden könnten, um eine bestimmte Klasse von Allzweckberechnungen (dh extrem parallel) zu beschleunigen, hat zu ihrer Popularität beigetragen.
Zusammenfassend ist die erste Erklärung, die Sie anbieten, die genaueste:
GPUs waren schon da, sie sind für alle verfügbar und sie haben gearbeitet.
quelle
Insbesondere sind GPUs keine "Kerne" im Sinne von "Task-Parallelität". Zum größten Teil handelt es sich um "Datenparallelität". SIMD ist "Single Instruction Multiple Data". Dies bedeutet, dass Sie dies nicht tun würden:
for parallel i in range(0,1024): c[i] = a[i] * b[i]
Dies würde bedeuten, dass Sie 1024 Befehlszeiger haben, die alle separate Aufgaben ausführen, die mit unterschiedlichen Raten ausgeführt werden. SIMD oder "Vector Computing" führt Anweisungen über ganze Arrays hinweg auf einmal aus.
c = a * b
Die "Schleifen" befinden sich in den Anweisungen "*" und "=" und nicht außerhalb der Anweisungen. Das obige würde dies für alle 1024 Elemente zur gleichen Zeit tun, am gleichen Befehlszeiger für alle von ihnen. Es ist, als hätte man drei riesige 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 zusammengebundenen int32 besteht. Sie können sich das Multiplizieren als eine echte Maschinenanweisung vorstellen.
int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;
Echte GPUs sind komplizierter als SIMD, aber genau das macht sie aus. Deshalb kann man nicht einfach einen zufälligen CPU-Algorithmus auf eine GPU werfen und eine Beschleunigung erwarten. Je mehr Befehle der Algorithmus verzweigt, desto weniger ist er für eine GPU geeignet.
quelle
Die anderen Antworten hier sind ziemlich gut. Ich werfe auch meine 2 Cent ein.
Ein Grund für die Verbreitung von CPUs 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, billiger und schneller, eine kleine CPU oder einen kleinen Mikrocontroller in etwas zu stecken und dessen Funktionalität zu programmieren, als benutzerdefinierte Schaltkreise zu entwickeln, um die gleiche Aufgabe zu erfüllen.
Wenn Sie dasselbe Gerät wie andere verwenden, können Sie die bekannten Lösungen für Probleme nutzen, die bei Verwendung desselben Geräts (oder eines ähnlichen Geräts) auftreten. Und während die Plattform reift, entwickeln sich Ihre Lösungen weiter und werden sehr ausgereift und optimiert. Die Personen, die auf diesen Geräten codieren, erwerben auch Fachwissen und beherrschen ihr Handwerk sehr gut.
Wenn Sie einen neuen Gerätetyp von Grund auf neu erstellen, eine Alternative zu einer GPU, würde es Jahre dauern, bis selbst die ersten Anwender tatsächlich wissen, wie man ihn verwendet. Wie optimieren Sie das Auslagern von Berechnungen auf dieses Gerät, wenn Sie einen ASIC an Ihre CPU anschließen?
Die Computerarchitektur-Community ist seit mehreren Jahren begeistert von dieser Idee (offensichtlich war sie schon früher beliebt, erlebte aber vor kurzem eine Renaissance). Diese "Beschleuniger" (ihre Bezeichnung) weisen einen unterschiedlichen Grad an Umprogrammierbarkeit auf. Das Problem ist, wie eng definieren Sie den Umfang des Problems, das Ihr Beschleuniger angehen kann? Ich habe sogar mit einigen Leuten gesprochen, die an der Erstellung eines Beschleunigers arbeiteten, indem sie analoge Schaltkreise mit Operationsverstärkern verwendeten, um Differentialgleichungen zu berechnen. Tolle Idee, aber extrem enger Spielraum.
Nachdem Sie einen funktionierenden Beschleuniger haben, werden die wirtschaftlichen Kräfte über Ihr Schicksal entscheiden. Marktträgheit 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 umzugestalten? Vielleicht, vielleicht nicht.
GPUs sind für bestimmte Arten von Problemen furchtbar, daher arbeiten viele Leute / Firmen an anderen Arten von Geräten. Aber GPUs sind bereits so verwurzelt, werden ihre Geräte jemals wirtschaftlich sein? Ich denke wir werden sehen.
Bearbeiten: Erweitern Sie meine Antwort ein wenig, jetzt, da ich aus dem Bus bin.
Eine vorsichtige Fallstudie ist das Intel Larrabee-Projekt. Es begann als Parallelverarbeitungsgerät, das Grafiken in Software erstellen konnte. Es gab keine spezielle Grafikhardware. Ich habe mit jemandem gesprochen, der an dem Projekt gearbeitet hat, und ein Hauptgrund, warum er sagte, es sei fehlgeschlagen und abgebrochen worden (abgesehen von schrecklicher interner Politik), war, dass er den Compiler einfach nicht dazu bringen konnte, guten Code dafür zu produzieren. Natürlich hat es funktionierenden Code erzeugt, aber wenn der gesamte Punkt Ihres Produkts die maximale Leistung ist, ist es besser, einen Compiler zu haben, der ziemlich optimalen Code erzeugt. Dies lässt sich auf meinen früheren Kommentar zurückführen, dass ein Mangel an fundiertem Fachwissen in Bezug auf Hardware und Software für Ihr neues Gerät ein großes Problem darstellt.
Einige Elemente des Larrabee-Designs haben es in das Xeon Phi / Intel MIC geschafft. Dieses Produkt hat es tatsächlich auf den Markt gebracht. Es konzentrierte sich ausschließlich auf die 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, hat angedeutet, dass das Preis-Leistungs-Verhältnis nicht mit denen von GPUs konkurriert.
Die Leute haben versucht, die Logiksynthese für FPGAs in Compiler zu integrieren, damit Sie automatisch Code für Ihre FPGA-Beschleuniger generieren können. Sie funktionieren nicht so gut.
Ein Ort, der wirklich fruchtbarer Boden für Beschleuniger oder andere Alternativen zu GPUs zu sein scheint, ist die Wolke. Aufgrund der Skaleneffekte, die bei diesen großen Unternehmen wie Google, Amazon und Microsoft bestehen, lohnt es sich, in alternative Berechnungsschemata zu investieren. Jemand hat bereits die Tensor-Verarbeitungseinheiten von Google erwähnt. Microsoft verfügt über FPGAs und andere Komponenten in seiner Bing- und Azure-Infrastruktur. Gleiche Geschichte mit Amazon. Es ist absolut sinnvoll, wenn die Waage Ihre Investition in Zeit, Geld und Ingenieurstränen ausgleichen kann.
Zusammenfassend lässt sich sagen, dass die Spezialisierung mit vielen anderen Dingen im Widerspruch steht (Wirtschaftlichkeit, Reifegrad der Plattform, technische Fachkenntnisse usw.). Eine Spezialisierung kann Ihre Leistung erheblich verbessern, schränkt jedoch den Anwendungsbereich Ihres Geräts ein. Meine Antwort konzentrierte sich auf viele negative Aspekte, aber Spezialisierung hat auch eine Menge Vorteile. Es sollte unbedingt verfolgt und untersucht werden, und wie ich bereits erwähnte, verfolgen viele Gruppen es ziemlich aggressiv.
Entschuldigung, bitte nochmal bearbeiten: Ich denke, Ihre ursprüngliche Prämisse ist falsch. Ich glaube, es ging weniger darum, nach zusätzlichen Quellen für Rechenleistung zu suchen, als vielmehr darum, dass Menschen eine Chance erkennen. Grafikprogrammierung ist sehr algebralastig und die GPU wurde entwickelt, um allgemeine Operationen wie Matrix-Multiplikation, Vektoroperationen usw. effizient auszuführen. Operationen, die auch im wissenschaftlichen Rechnen häufig vorkommen.
Das Interesse an GPUs begann, als die Leute erkannten, dass die Versprechungen des Intel / HP EPIC-Projekts (Ende der 90er Jahre, Anfang der 2000er Jahre) stark übertrieben waren. Es gab keine generelle Lösung für die Compiler-Parallelisierung. Anstatt also zu sagen "Wo finden wir mehr Rechenleistung, oh wir könnten die GPU ausprobieren", war es meiner Meinung nach eher "Wir haben etwas, das sich gut für parallele Berechnungen eignet, können wir dies allgemeiner programmierbar machen". Viele der beteiligten Personen waren Mitglieder der Scientific Computing-Community, die bereits parallelen Fortran-Code hatten, den sie auf Cray- oder Tera-Computern ausführen konnten (Tera MTA hatte 128 Hardware-Threads). Vielleicht gab es Bewegung aus beiden Richtungen, aber ich habe nur von den Ursprüngen von GPGPU aus dieser Richtung gehört.
quelle
Ein ASIC (Custom Silicon) ist sehr schnell, aber in der Konstruktion und Herstellung sehr teuer. Früher waren ASICs zweckspezifisch, und die CPU war ein Ansatz, mit dem Computer "programmiert" werden konnten, damit Computeraufgaben von Software ausgeführt werden konnten. Frühe CPU's gaben den Leuten die Möglichkeit, die Leistung von ASIC ohne die massiven Kosten zu nutzen, indem sie den Chip vor Ort programmierten. Dieser Ansatz wurde so erfolgreich, dass er zu dem (sehr) schnellen Computer führte, den Sie gerade verwenden.
Warum also GPUs?
Mitte der 90er Jahre erkannte 3DFX, dass 3D-Rendering-Aufgaben so spezifisch waren, dass ein kundenspezifischer ASIC VIEL bessere Leistungen erbrachte als eine CPU. Sie erstellten einen Computer-Coprozessor, der 3D-Rendering-Aufgaben von der CPU auf diesen Coprozessor verlagerte, den sie als "GPU" bezeichneten. Wettbewerb und Marktnachfrage trieben Innovationen in diesem Bereich an einen Punkt, an dem GPUs Berechnungen VIEL schneller ausführten als CPUs. Daher stellte sich die Frage: "Warum kann ich die GPU nicht verwenden, um meine Zahlen anstelle der CPU zu berechnen?" GPU-Hersteller sahen eine Nachfrage und eine Möglichkeit, mehr Geld zu verdienen, und begannen, ihre Plattformen zu ändern, damit Entwickler ihre Hardware nutzen können. Aber die Hardware-Hardware war so zweckspezifisch, dass es Einschränkungen gab und immer noch gibt, wozu Sie die GPU auffordern können. Ich werde hier nicht näher darauf eingehen, warum.
Warum gab es also kein spezifischeres Silizium? Warum NUR Grafiken?
Zwei Gründe: 1) Preis. GPUs hatten einen guten Markt und konnten es rechtfertigen, aber schon damals war es ein großes Risiko. Niemand wusste wirklich, ob 3DFX einen Gewinn erzielen konnte (es stellte sich heraus, dass dies nicht der Fall war und dass 3DFX nicht mehr funktioniert). Sogar jetzt, mit der Größe des GPU-Marktes, gibt es wirklich nur 3 Konkurrenten. 2) CPUs erfüllten tatsächlich den Bedarf an "benutzerdefiniertem Silizium" mit Befehlserweiterungen. Denken Sie an MMX zurück - dies war eigentlich Intels Versuch, die Grafik in der CPU zu beschleunigen, als 3DFX an Geschwindigkeit gewann. Seitdem ist der x86-Befehlssatz mit all diesen benutzerdefinierten Erweiterungen ziemlich umfangreich geworden. Viele dieser Erweiterungen machten zu der Zeit Sinn (wie MMX), sind aber im Prozessor jetzt größtenteils nur noch Eigengewicht. Sie können sie jedoch nicht entfernen, da dadurch vorhandene Software beschädigt wird. Es' Tatsächlich ist ARM eines der Verkaufsargumente - ARM ist ein abgespeckter Befehlssatz. Es gibt nicht so viele Befehlserweiterungen, aber dies macht das Silizium kleiner und billiger in der Herstellung.
Mir scheint, Sie könnten eine Menge Geld verdienen, wenn Sie die Kosten für kundenspezifisches Silizium senken könnten. Arbeitet nicht jemand daran?
Es gibt eine Technologie namens FPGA - Field Programmable Gate Array, die es seit den Anfängen des Rechnens gibt. Es handelt sich im Wesentlichen um einen Mikrochip, den Sie "vor Ort" mithilfe von Software entwerfen können. Es ist eine sehr coole Technologie, aber die gesamte Struktur, die benötigt wird, um den Chip programmierbar zu machen, verbraucht eine Menge Silizium und bewirkt, dass die Chips mit viel niedrigeren Taktgeschwindigkeiten laufen. FPGAs KÖNNEN schneller sein als CPUs, wenn Sie genug Silizium auf dem Chip haben UND die Aufgabe effektiv parallelisieren können. Aber sie haben nur eine begrenzte Logik, mit der Sie sie belegen können. Alle bis auf die teuersten FPGAs waren langsamer als GPUs für den frühen Bitcoin-Abbau, aber ihre ASIC-Gegenstücke haben die Rentabilität des GPU-Abbaus effektiv beendet. Andere Kryptowährungen haben spezielle Algorithmen verwendet, die nicht parallelisiert werden können.
Der Hauptbegrenzer bei FPGAs ist die Siliziumgröße - wie viel Logik kann auf den Chip gepasst werden? Die zweite ist die Taktrate, da es schwierig ist, Dinge wie Hotspots, Leckagen und Übersprechen in einem FPGA zu optimieren. Neuere Fertigungsmethoden haben diese Probleme minimiert, und Intel hat sich mit Altera zusammengetan, um ein FPGA bereitzustellen , mit dem Ingenieure die Vorteile von "benutzerdefiniertem Silizium" als Co-Prozessor in einem Server nutzen können. In gewisser Weise kommt es also.
Werden FPGAs jemals CPUs und GPUs ersetzen?
Wahrscheinlich nicht so bald. Die neuesten CPUs und GPUs sind MASSIVE und das Silizium in hohem Maße auf thermische und elektrische Leistung abgestimmt. Sie können FPGAs nicht auf die gleiche Weise optimieren wie einen benutzerdefinierten ASIC. Mit Ausnahme einiger bahnbrechender Technologien wird die CPU wahrscheinlich der Kern Ihres Computers mit FPGA- und GPU-Coprozessoren bleiben.
quelle
Tatsächlich gibt es spezielle Boards 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 Cruncher" mit einem oder mehreren leistungsstarken FPGA-Chips und vielen On-One-Chips. Board DDR-Speicher. Es gibt auch Hochleistungs-DSP-Karten ( Beispiel ) für Hochleistungs-Computing-Aufgaben.
Ich denke, die Popularität von GPU-Boards ergibt sich aus ihrem Ziel, eine breitere Kundengruppe anzusprechen. Sie müssen nicht in spezielle Hardware investieren, um mit Nvidia CUDA zu spielen. Wenn Sie also eine Aufgabe haben, die spezielle Hardware erfordert, haben Nvidia-GPUs einen Wettbewerbsvorteil, da Sie bereits wissen, wie man sie programmiert.
quelle
Ich denke, die Antwort auf Ihre Frage hängt davon ab, wie Hochleistungsberechnungen definiert werden.
Im Allgemeinen hängt die Hochleistungsberechnung mit der Rechenzeit zusammen. In diesem Fall möchte ich die Verknüpfung des Hochleistungs-Computing-Clusters teilen .
Über den Link wird der Verwendungsgrund der GPU angegeben; Die Verwendung von Grafikkarten (oder besser gesagt deren GPUs) zur Berechnung von Grid-Computing-Vorgängen ist trotz der geringeren Genauigkeit weitaus wirtschaftlicher als die Verwendung von CPUs.
quelle
double
-Präzision und nicht nur 32-Bit-Präzisionfloat
. (Einige normale GPUs sparen HW fürdouble
). Die wichtigsten Anbieter unterstützen alle IEEE-FP-Mathematik (ich denke sogar mit Denormalen). Es gibt also keinen Präzisionsverlust, es sei denn, Sie möchten Präzision gegen Leistung eintauschen, z. B. mit 16-Bit-FP mit halber Präzision, das auf einigen Hardwarekomponenten einen noch besseren Durchsatz aufweist (und natürlich die Hälfte der Speicherbandbreite). Hochleistungscode auf CPUs verwendet häufig auch 32-Bitfloat
, um doppelt so viele Elemente pro SIMD-Vektor und die Hälfte der Speicherbandbreite zu erhalten.