Neue Benchmarksuite der SPEC für CPU, Speicher und Compiler

Nach 11 Jahren hat die Standard Performance Evaluation Corporation (SPEC) den Nachfolger für die CPU2006-Suite fertig. Auch die ersten Ergebnisse sind schon veröffentlicht.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Neue Benchmarksuite der SPEC für CPU, Speicher und Compiler
Lesezeit: 5 Min.
Von
  • Andreas Stiller

Wie im Artikel zu AMDs neuen Epyc-Prozessor schon erwähnt, kam am 20. Juni nicht nur ein neuer Prozessor, sondern auch die neue SPEC-CPU2017-Benchmark-Suite der Standard Performance Evaluation Corporation (SPEC) heraus. Mit 43.000 offiziellen Einreichungen war der Vorgänger SPEC CPU2006 einer der erfolgreichsten, gepflegten Benchmarks für Computersysteme aller Zeiten, aber inzwischen schon ein wenig aus der Zeit.

Über 11 Jahre lang rangen die Mitglieder des CPU-Subkomitees der SPEC Open System Group rund um den Vorsitzenden Jeff Reilley (Intel) darum, welchen neuen Benchmark mit welchen Parametern und welchen Datensätzen man für geeignet erklärt, als gemeinsam akzeptiertes Maß dienen zu können.

Man kann sich vorstellen, dass es nicht einfach ist, die Interessen von Mitgliedern wie Intel, AMD, Nvidia, Oracle, ARM, Cavium, HPE, DellEMC, IBM, Lenovo, Inspur und anderen unter einen Hut zu bringen – da musste jeder Kompromisse machen. Das Subkomitee tagte mehrmals im Jahr oft mehrere Wochen. Lohn der Mühe ist eine möglichst ausgewogene Benchmark-Suite in Open Source mit gut analysiertem Verhalten aller 43 verwendeten Einzelbenchmarks, sowie mit einer möglichst hohen Kompatibilität für eine Vielzahl von Systemen und Compilern (GCC, Intel, PGI, Oracle, IBM XL). Microsofts C/C++-Compiler bleibt außen vor. Zwar ist der problematische C99-Benchmark libquantum nicht mehr dabei (Microsoft unterstützt kein C99), aber nun verlangen auch die anderen C-Programme C99 als Minimalstandard. Zudem enthält bei SPEC CPU2017 auch SPECint einen in Fortran geschriebenen Benchmark (einen Sudoku-Löser).

Release Manager, Maintainer und Toolset-Verantwortlicher ist wie bei allen CPU2000- und CPU2006-Releases Cloyce D. Spradling von Oracle (früher Sun). Traditionell hat er auch den Referenzlauf auf einer alten SPARC-Maschine durchgeführt, diesmal auf einer Sun Fire V490 aus dem Jahre 2006. So ist weitgehend sichergestellt, dass sich kein aktueller Server mit Werten unter 1 blamiert.

Die Einzelbenchmarks verteilen sich wie früher auch auf die beiden Einzelbereiche Integer (SPECint) und Gleitkomma (SPECfp). Einige der Benchmarks waren schon in der CPU2006-Suite vorhanden, wurden aber modernisiert. Es gibt jetzt allerdings unterschiedliche Codepfade für SPECspeed und SPECrate. Bei SPECint sind alle Benchmarks in den Ausführungen für Speed und Rate mit zum Teil unterschiedliche Datensätze vorhanden, bei SPECfp sind die Suiten mit teilweise unterschiedlichen Programmen bestückt: 10 Programme für SPECspeed, 13 für SPECrate. Die Programmsprachen sind C99, C++2003 und Fortran 2003, oft auch kombiniert als Multi-Language-Benchmark.

Bei SPECrate werden die Programme mehrfach angeworfen, üblicherweise so oft, wie logische Kerne in dem System vorhanden sind. SPECspeed umfasst jetzt auch die optionale Möglichkeit, mit openMP oder mit Autoparallelisierung zu messen. SPECint enthält aber nur einen einzigen Benchmark der OMP-Pragmas, hingegen unterstützen sämtliche SPECfp-Versionen OpenMP.

OpenMP und Autoparallelisierung sind für SPECrate grundsätzlich verboten. Um die reine SingleThread-Performance zu messen, kann man daher SPECrate mit nur einer Kopie fahren.

Für alle Benchmarkläufe gibt es zudem wie zuvor zwei Grundkonfigurationen: bei Base laufen alle Einzelbenchmarks von SPECint oder SPECfp mit denselben Compilern und denselben Flags. Bei Peak kann man für jeden einzelnen Benchmark die Compiler und die Flags wählen.

Als Option kann nun auch der Energieverbrauch (maximal, idle) gemessen und mitveröffentlicht werden. Es handelt sich dabei aber um keine offizielle SPEC-Metrik, darf von den Herstellern daher nicht für Vergleiche herangezogen werden. Für akademische Zwecke sind die Laufregeln weniger streng, wenn Abweichungen klar markiert werden.

SPECint_rate2017 (hier für ein Xeon-E5-2698v4-System) : normale Verteilung, kein dominierender Einzelbenchmark mehr, wie bei CPU2006

(Bild: SPEC)

Bislang sind die eingereichten Ergebnisse noch nicht so spannend, da außer dem Referenzsystem und einer SPARC M7 nur einige Systeme mit Broadwell-Prozessoren von Intel gelistet sind. Immerhin lässt sich damit schon mal grob die Skalierung erkennen und die scheint sehr gut zu sein: Ein Integrity Superdome von HPE mit 16 E7-8890v4-Prozessoren und mit 2,2 GHz Basistakt kommt mit 768 Threads auf 1160 SPECrate2017_fp_base, ein mit gleichem Grundtakt laufender E5-2698v4 im Inspur NF5280M4 schafft mit 80 Threads 133 SPECrate2017_fp_base. Der Superdome hat also um Faktor 9,6 mehr logische Kerne und schafft damit einen um Faktor 8,75 höheren Wert.

Der Skalierungfaktor für die 13 Einzelbenchmarks liegt zwischen 7,9 und 9,9; dabei muss man berücksichtigen, dass das E7-System den Speicher vermutlich im schnellen Performance-Modus mit zwei zusammengeschalteten Kanälen gefahren hat – das ist leider in der Konfigurationsdatei nicht angegeben.

Bei Integer kommen mit 1180 respektive 143 SPECrate2017_int_base recht ähnliche Werte heraus. Die so ermittelte Skalierung ist etwas schlechter, liegt zwischen 6, 15 und 9,4, im Schnitt bei 8,25.

Noch drei Monate lang kann man SPEC-CPU2006-Werte einreichen, dann noch drei Monate zusammen mit SPEC-CPU2017- Werten, danach ist CPU2006 Geschichte. SPEC ermuntert alle Lizenznehmer, CPU2017-Werte auch für Altsysteme einzureichen. (as)