Warum misst Mike Pound die Rechenleistung seines Computers an den Grafikkarten und nicht an den Prozessoren?

17

Ich habe mir kürzlich ein großartiges Computerphile-Video über Passwörter angesehen, in dem Mike Pound damit prahlt, dass sein Supercomputer 4 Grafikkarten hat (um genau zu sein Titan X).

Als Liebhaber der numerischen Simulation träume ich davon, einen Desktop ausschließlich für die Simulationsarbeit zu bauen. Warum misst Mike Pound die Rechenleistung seines Computers an den Grafikkarten und nicht an den Prozessoren? Wenn ich einen Computer baue, welchen Gegenstand sollte ich mehr interessieren?

Ra31513
quelle
11
Ich glaube nicht, dass dies unbedingt eine Gorilla-gegen-Hai-Frage ist ... Es gibt eine einfache Frage: "Warum misst Mike Pound die Rechenleistung seines Computers an den Grafikkarten und nicht an den Prozessoren?" was beantwortet werden kann und seine Antwort hat einen konstruktiven Wert für zukünftige Leser.
Maybe_Factor
6
@gnat: nicht einmal in der Nähe. Natürlich geht es bei der Frage in der jetzigen Form nicht wirklich um Software-Engineering. Aber ich denke, es könnte als eine Frage zur Systementwicklung interpretiert werden, bei der system = "Kombination von Hardware + Software" ist.
Doc Brown
10
Ein Computer mit 4 Grafikkarten ist kein Supercomputer (und ein Cluster mit 10 Himbeer-Pis auch nicht).
Matti Virkkunen
10
Das ist nur ein sehr teures PC-Setup, kein Supercomputer ...
Bakuriu
3
Ist die einfache Antwort auf "Warum misst Mike Pound die Rechenleistung seines Computers an seinen Grafikkarten", weil der Kontext das Knacken von Passwörtern ist? Wenn Ihr Problemraum etwas anderes ist, müssen Sie sich möglicherweise um etwas ganz anderes kümmern.
JimmyJames

Antworten:

32

Offensichtlich schätzt Mike Pound die Rechenleistung der Grafikkarten höher als die Rechenleistung der CPUs.

Warum? Eine Grafikkarte besteht im Wesentlichen aus VIELEN vereinfachten Prozessoren, die alle parallel laufen. Für einige Simulationsarbeiten kann ein Großteil der Berechnung auf den Tausenden von in den Grafikkarten verfügbaren Kernen problemlos parallelisiert und verarbeitet werden, wodurch die Gesamtverarbeitungszeit verkürzt wird.

Welchen Gegenstand sollte ich mehr interessieren? Es hängt wirklich von der Workload ab, die Sie interessiert, und wie diese Workload für die Verwendung auf einer Grafikkarte parallelisiert werden kann / kann. Wenn Ihre Arbeitslast eine peinlich parallele Folge einfacher Berechnungen ist und die Software so entwickelt wurde, dass sie die verfügbaren Grafikkarten nutzt, haben mehr Grafikkarten eine weitaus größere Auswirkung auf die Leistung als mehr CPUs (Dollar für Dollar).

Vielleicht_Faktor
quelle
5
Einige Zahlen hinzufügen. Angenommen, Ihr Hauptcomputer ist ein AMD Epyc Server mit 64 Kernen und 128 Kernen und Hyperthreading. Sagen wir auch, dass der "Kern" einer Grafikkarte nur 10% so schnell ist. EIN TitanX hat noch 3072 Cuda-Kerne, ungefähr 12000 für das Setup. Bekomme eine Vorstellung? WENN Sie das Problem auf der Grafikkarte ausführen können, ist es nicht "schneller" - es ist wie ein Vergleich der Geschwindigkeit einer Pferdekutsche mit einem Formel-1-Auto.
TomTom
3
+1 für 'peinlich parallele Reihe einfacher Berechnungen', sehr gut geschrieben. Kurz und bündig.
Michael Viktor Starberg
11
@TomTom: Eigentlich ist mein bevorzugter Vergleich, ein Formel-1-Auto (Ihre CPU) mit einem Hochgeschwindigkeitszug zu vergleichen. Klar, der Zug und das Auto sind ungefähr gleich schnell. Aber der Zug kann 1000 Menschen schneller von A nach B bringen als das Formel-1-Auto.
Slebetman
2
@slebetman der Punkt ist, die CPU ist in der Regel viel schneller in Single-Core-Leistung (nicht in etwa die gleiche Geschwindigkeit). Vielleicht können wir Kompromisse eingehen und ein Überschallflugzeug mit einer Dampflokomotive vergleichen.
Darren Ringer
2
Wenn ich eine Analogie basierend auf dem Fahrzeug wählen muss, würde ich sagen, dass die CPU wie ein Kampfjet ist (es ist viel schneller für Punkt-zu-Punkt-Transport und hat viele Tricks im Ärmel, die andere Fahrzeuge nicht können, aber nur können) tragen sehr kleine Ladung), während die GPU wie ein Frachtschiff ist (es kann deutlich mehr Ladung parallel tragen, hat aber einen viel langsameren Turnaround).
Lie Ryan
5

Besuchen Sie https://developer.nvidia.com/cuda-zone (und google cuda nvidia für weitere Informationen). Die Cuda-Architektur und High-End-Grafikkarten sind für Desktop-Supercomputer weit verbreitet. Normalerweise können Sie eine Mehrfach-Tflop-Box für weniger als 10.000 US-Dollar mit handelsüblichen Whitebox-Komponenten zusammenstellen.

So...

Als Liebhaber der numerischen Simulation träume ich davon, einen Desktop ausschließlich für die Simulationsarbeit zu bauen

... Cuda ist mit Abstand das beste Spiel der Stadt für dich. Versuchen Sie es vielleicht noch einmal unter /scicomp// oder auf einer anderen Stackexchange-Website, die direkter mit solchen Dingen zu tun hat.

(Übrigens, ich gehe davon aus, dass Sie mit der Idee, dass es sich hier um massiv parallele Programmierung handelt, einverstanden sind. Daher müssen Sie sich möglicherweise mit diesem Paradigma für das Algorithmus-Design vertraut machen.)

John Forkosh
quelle
Und wir sind wie immer zurück in Ordos.
Michael Viktor Starberg
2
@MichaelViktorStarberg Bin ich der einzige, der die Ordos-Referenz nicht versteht?
MarnixKlooster ReinstateMonica
Ich fürchte, Sie sind ...: /
Ismael Miguel
4
@MarnixKlooster: Ich musste "Ordos" googeln. Ich bin nicht sicher, was eine "Geisterstadt" in China mit Supercomputern oder Teraflops zu tun hat.
Robert Harvey
@MarnixKlooster Das bist du ja nicht.
jpmc26
2

Wenn ich einen Computer baue, welchen Gegenstand sollte ich mehr interessieren?

Aus praktischer Sicht sollten Sie dem Motherboard und der CPU angesichts der relativen Schwierigkeit des Upgrades im Vergleich zur GPU wahrscheinlich einiges Aufmerksamkeit schenken. Nach dem Kauf ist eine schreckliche Zeit, um festzustellen, dass Sie nicht genug Platz für vier GPUs oder einen schnell genug arbeitenden Prozessor haben, um sie alle zu beschäftigen.

Sie sollten sich auch bewusst sein, dass die GPU-Leistung am häufigsten in FLOPs mit einfacher Genauigkeit angegeben wird und bei doppelter Genauigkeit erheblich abnimmt. Wenn Sie die zusätzliche Präzision in Ihren Simulationen benötigen, werden Sie deutlich unter der angegebenen Geschwindigkeit enden.

Auf zu den Software-Engineering-Rennen

Unter dem Gesichtspunkt der Software gibt es zwei Hauptprobleme: den Von Neumann-Engpass und das Programmiermodell. Die CPU hat einen recht guten Zugriff auf den Hauptspeicher, die GPU verfügt über viel schnelleren Arbeitsspeicher. Es ist nicht unbekannt, dass das Verschieben von Daten in und aus der GPU einen Geschwindigkeitsgewinn vollständig zunichte macht. Im Allgemeinen ist die CPU ein Gewinner bei moderaten Berechnungen für große Datenmengen, während die GPU bei umfangreichen Berechnungen für kleinere Datenmengen eine herausragende Rolle spielt. All dies bringt uns zum Programmiermodell.

Auf hoher Ebene ist das Problem die altehrwürdige MIMD / SIMD-Debatte. Multiple-Instruction / Multiple-Data-Systeme waren die großen Gewinner im allgemeinen und kommerziellen Computing. In diesem Modell, das den SMP enthält, führen mehrere Prozessoren jeweils ihren eigenen individuellen Befehlsstrom aus. Es ist das Computeräquivalent einer französischen Küche, in der Sie eine kleine Anzahl erfahrener Köche anweisen, relativ komplizierte Aufgaben zu erledigen.

Single-Instruction / Multiple-Data-Systeme ähneln dagegen eher einem riesigen Raum voller Angestellter, die an ihre Schreibtische gekettet sind und den Anweisungen eines Master-Controllers folgen. "Alle ADDIEREN die Zeilen 3 und 5!" Es wurde in seiner reinen Form in der ILLIAC und einigen "Mini-Super" -Systemen verwendet, ging aber auf dem Markt verloren. Aktuelle GPUs sind eng verwandt, flexibler, haben aber die gleiche allgemeine Philosophie.

Es kurz zusammenfassen:

  • Bei jeder Operation ist die CPU schneller, während die GPU viele gleichzeitig ausführen kann. Der Unterschied ist bei 64-Bit-Floats am deutlichsten.
  • CPU-Kerne können mit jeder Speicheradresse arbeiten, Daten für die GPU müssen in einem kleineren Bereich gepackt werden. Sie gewinnen nur, wenn Sie genügend Berechnungen durchführen, um die Übertragungszeit auszugleichen.
  • Code mit vielen Bedingungen ist in der Regel auf der CPU zufriedener.
Matthew Gauthier
quelle