Die theoretische Spitzen-FLOP / s ergibt sich aus:
Die Anzahl der Kerne ist einfach. Die durchschnittliche Frequenz sollte theoretisch eine gewisse Menge an Turbo Boost (Intel) oder Turbo Core (AMD) berücksichtigen, die Betriebsfrequenz ist jedoch eine gute Untergrenze. Die Operationen pro Zyklus sind architekturabhängig und können schwer zu finden sein (8 für SandyBridge und IvyBridge, siehe Folie 26 ). Es ist das Thema dieser Stapelüberlauffrage , die Zahlen für eine Reihe moderner Architekturen enthält.
Anzahl der Kerne ∗ Durchschnittliche Frequenz ∗ Vorgänge pro Zyklus
Sie müssen das Modell und den Hersteller der CPUs in Ihrem Computer kennen. Sobald Sie das haben, können Sie auf der Website des Anbieters (oder vielleicht auf Wikipedia) die Taktrate, die Anzahl der Chips / Sockel, die Anzahl der Kerne pro Chip, die Anzahl der Gleitkommaoperationen pro Zyklus und die Vektorbreite dieser Operationen nachschlagen . Dann multiplizieren Sie einfach.
Nehmen wir zum Beispiel die Intel Xeon E5-2680 "Sandy Bridge" -Prozessoren in Stampede, wo ich arbeite. Die Spezifikationen sind:
Multiplizieren dieser Werte ergibt 345,6 GF / Knoten oder 2,2 PF für den nicht beschleunigten Teil des Systems.
Wir denken normalerweise in 64-Bit-Operationen mit doppelter Genauigkeit, da dies die Genauigkeit ist, die für die große Mehrheit unserer Benutzer erforderlich ist. Sie können die Berechnung jedoch auch mit einfacher Genauigkeit wiederholen, wenn Sie möchten. Dies ändert normalerweise nur den letzten Faktor, z. B. 8 SP-Flops / Befehl anstelle von 4 DP-Flops / Befehl, kann sich jedoch stark davon unterscheiden. Ältere GPUs erreichten zum Beispiel nur eine DP von etwa 1/8 der SP-Rate. Wenn Sie jemals eine Zahl für Ihr System angeben, sollten Sie genau angeben, welche Zahl Sie verwendet haben, wenn dies nicht die doppelte Genauigkeit ist, da die Leute sonst davon ausgehen, dass dies der Fall ist.
Wenn Ihr Chip FMA-Befehle (Fused Multiply Add) unterstützt und diese mit voller Geschwindigkeit ausführen kann, werden diese von den meisten Benutzern als 2 Gleitkommaoperationen gezählt, obwohl ein Hardware-Leistungsindikator sie möglicherweise nur als einen Befehl zählt.
Schließlich können Sie dies auch für alle in Ihrem System möglicherweise vorhandenen Beschleuniger (z. B. eine GPU oder ein Xeon Phi) tun und diese Leistung zur CPU-Leistung hinzufügen, um eine theoretische Gesamtsumme zu erhalten.
quelle
Ich verstehe, dass Sie nach dem theoretischen Wert gefragt haben, aber da dieser für jeden realen Code, auch für LINPACK, fast immer unzugänglich ist, möchten Sie möglicherweise nur (optimiertes) DGEMM für sehr große Matrizen ausführen. Ich bevorzuge diese Methode, weil sie einige der Mängel bestimmter Prozessoren aufdeckt, die verhindern, dass sie ihren theoretischen Spitzenflop-Wert erreichen.
Beispielsweise führen NVIDIA-GPUs derzeit Ganzzahl- und Gleitkommaoperationen in derselben Pipeline aus. Dies bedeutet, dass Sie das theoretische Peakflop / die theoretischen Peakflops nur erreichen können, wenn Sie überhaupt keine Ganzzahlberechnung durchführen . Da die Array-Indizierung und jede andere Form des Datenzugriffs irgendwo eine Ganzzahl-Arithmetik erfordert, kann kein Code das theoretische Peak-Flop / die theoretischen Peak-Flops auf einer NVIDIA-GPU erreichen. In den meisten Fällen sieht man ~ 80% als Obergrenze. Bei CPUs, die gleichzeitig Ganzzahl- und Gleitkommaoperationen ausführen, ist dies kein Problem.
Bei einigen GPU-ähnlichen Multicore-Prozessoren wie Intel Knights Corner und Blue Gene / Q ist es bei ähnlichen Pipeline-Problemen schwieriger, den Peak Flop / s zu erreichen als bei herkömmlichen CPUs (obwohl beide mindestens ~ 90% des Peaks in großen DGEMM erreichen können ).
quelle