Wie kann ich die Verarbeitungsleistung einer GPU relativ zu einer CPU bewerten?

1699
David Z

Angenommen, ich habe ein Programm, das viele Gleitkommaberechnungen ausführt und auf meiner aktuellen Hardware unpraktisch langsam ist. Um die Laufzeit so gering wie möglich zu halten, möchte ich herausfinden, ob bei einem festen Budget (in meinem Fall etwa 3000-4000 $) besser in CPUs oder GPUs investiert wird. Ich weiß, dass ich zum Vergleich einer CPU mit einer anderen eine sehr grobe Vorstellung von den relativen Verarbeitungsgeschwindigkeiten erhalten kann, indem ich die Taktfrequenz mit der Anzahl der Kerne jeder CPU multipliziere und diese Zahlen vergleiche. Aber was ist mit GPUs? Gibt es eine Möglichkeit, eine Zahl basierend auf den Spezifikationen der GPU schnell zu berechnen, die mir ungefähr sagt, wie schnell ich erwarten kann, dass mein Programm relativ zu einer bekannten CPU ausgeführt wird?

Ich weiß, dass die tatsächliche Verarbeitungsgeschwindigkeit stark von der Art des Programmaufbaus und von anderen Faktoren außer den CPU / GPU-Taktraten abhängen wird. Für die Zwecke dieser Frage ignoriere ich diese anderen Faktoren, dh ich gehe davon aus, dass die Zeit, die für andere Aufgaben als das Fließen von Gleitkommazahlen benötigt wird, vernachlässigbar ist (also keine E / A-Bindung oder ähnliches) und Das Programm ist unendlich parallelisierbar (dh, bei einer beliebigen Anzahl von CPU- oder GPU-Cores werden alle von ihnen maximal ausgelastet, solange das Programm ausgeführt wird).

2

1 Antwort auf die Frage

2
AndrejaKo

Nun, Sie könnten es mit synthetischen Benchmarks versuchen. Sie werden Ihnen eine Idee geben. Das CUDA-Toolkit von NVIDIA enthält beispielsweise einige Programme, die sowohl auf der CPU als auch auf der GPU laufen. Es kann verwendet werden, um zu vergleichen, wie lange es dauert, bis sie auf jeder Plattform ausgeführt werden.

Wenn Sie nur GPU-Datenblätter verwenden müssen, können Sie dies auch tun. Zum Beispiel, hier ist die Seite für meine GeForce 9500 GS. Dort finden Sie Informationen zur Anzahl der Prozessorkerne. Die Verarbeitungskapazität ist proportional zur GPU-Frequenz und zur Kernnummer. Einige Karten haben sogar eine GFLOPS-Nummer. Für jede Karte gab es ein Dokument mit einheitlicheren detaillierten Beschreibungen, aber ich finde momentan keinen Weg. Vielleicht in CUDA-Toolkit-Downloads?

Es gibt auch das Berechnungsniveau, aus dem hervorgeht, welche Funktionen jede Karte bietet. Wenn ich mich jedoch richtig erinnere, hat dies keinen direkten Einfluss auf die Berechnungsgeschwindigkeit, sondern nur auf die Genauigkeit und den Befehlssatz, der verwendet werden kann.

Ich bin nicht mit Informationen über Karten anderer Hersteller auf dem Laufenden, aber ich erwarte, dass es die Möglichkeit gibt, die Daten zumindest für AMD und Intel zu erhalten.

Entschuldigung, ich habe deine Antwort irgendwie vermisst. Der Tipp zur Verwendung von GPU-Datenblättern war im Grunde das, worüber ich mich wunderte, danke! David Z vor 13 Jahren 0