Artikel von Varun Bawa, Savitha Pareek und Ashish K Singh vom HPC and AI Innovation Lab im April 2019
Mit der Veröffentlichung der skalierbaren Intel Xeon® Prozessoren der 2. Generation (Architektur mit dem Codenamen "Cascade Lake") hat Dell EMC die PowerEdge-Server der 14. Generation aktualisiert, um von der größeren Anzahl von Cores und höheren Speichergeschwindigkeiten und damit von HPC-Anwendungen zu profitieren.
In diesem Blog werden die ersten Ergebnisse vorgestellt und die Auswirkungen der verschiedenen BIOS-Tuningoptionen erläutert, die auf dem Dell EMC PowerEdge C6420 mit den neuesten Intel Xeon® Cascade Lake Prozessoren für einige HPC-Benchmarks und -Anwendungen verfügbar sind. Eine kurze Beschreibung des Cascade Lake Prozessors, der BIOS-Optionen und der HPC-Anwendungen, die in dieser Studie verwendet werden, finden Sie unten.
Cascade Lake ist Intels Nachfolger für Skylake. Der Cascade Lake-Prozessor unterstützt bis zu 28 Cores, sechs DDR4-Speicherkanäle mit Geschwindigkeiten von bis zu 2933 MT/s. Ähnlich wie Skylake unterstützt Cascade Lake zusätzliche Vektorisierungsleistung mit dem AVX512-Befehlssatz, der 32 DP FLOP/Zyklus ermöglicht. Cascade Lake führt
VNNI (Vector Neural Network Instructions) ein, die die Leistung von KI- und DL-Workloads wie Bildklassifizierung, Spracherkennung, Sprachübersetzung, Objekterkennung und mehr beschleunigt. VNNI unterstützt außerdem 8-Bit-Befehle zur Beschleunigung der
Inferenzleistung.
Cascade Lake enthält
Hardware-Minderungsmaßnahmen für einige
Seitenkanal-Sicherheitslücken. Es wird erwartet, dass dies die Leistung von Storage-Workloads verbessern könnte. Achten Sie auf zukünftige Studien aus dem
Innovation Lab.
Da Skylake und Cascade Lake sockelkompatibel sind, sind die im System-BIOS angezeigten Prozessor-Tuning-Knöpfe bei diesen Prozessorgenerationen ähnlich. Die folgenden BIOS-Tuning-Optionen wurden in dieser Studie untersucht, ähnlich wie bei Arbeiten, die in der
Vergangenheit auf Skylake veröffentlicht wurden.
Prozessoreinstellungen:
- Benachbarter Cachezeilen-Prefetch: Der Adjacent Cache-Line Prefetch-Mechanismus ermöglicht einen automatischen Hardware-Prefetch, er arbeitet ohne Eingreifen des Programmierers. Wenn diese Option aktiviert ist, werden zwei 64-Byte-Cachezeilen in einem 128-Byte-Sektor untergebracht, unabhängig davon, ob die zusätzliche Cachezeile angefordert wurde oder nicht.
- Software-Vorabrufer: Er vermeidet den Stillstand, indem die Daten in den Cache geladen werden, bevor sie benötigt werden. Beispiel: Zum Vorabrufen von Daten aus dem Hauptspeicher in den L2-Cache weit vor der Verwendung mit einer L2-Prefetch-Anweisung und dann das Vorabrufen von Daten aus dem L2-Cache in den L1-Cache kurz vor der Verwendung mit einer L1-Prefetch-Anweisung. Wenn diese Option aktiviert ist, ruft der Prozessor hier für jede Speicheranforderung eine zusätzliche Cachezeile vorab ab.
- SNC (Sub-NUMA-Cluster): Das Aktivieren von SNC ist vergleichbar mit dem Aufteilen eines einzelnen Sockels in zwei NUMA-Domänen mit jeweils der Hälfte der physischen Cores und der Hälfte des Speichers des Sockets. Wenn Ihnen das bekannt vorkommt, ähnelt das Programm der Cluster-on-Die-Option , die in den Intel Xeon E5-2600 v3- und v4-Prozessoren verfügbar war. SNC wird anders implementiert als COD und diese Änderungen verbessern den Remote-Socket-Zugriff in Cascade Lake im Vergleich zu den vorherigen Generationen, die die Cluster-on-Die-Option verwendeten. Auf Betriebssystemebene zeigt ein Dual-Socket-Server mit aktivierter SNC vier NUMA-Domains an. Zwei der Domänen befinden sich näher beieinander (auf demselben Sockel) und die anderen beiden sind weiter voneinander entfernt, über den UPI zum Remote-Socket. Dies kann mit BS-Tools wie den folgenden beobachtet werden: numactl –H und ist in Abbildung 1 dargestellt.
Abbildung 1: Layout der NUMA-Knoten
Systemprofile:
Bei den Systemprofilen handelt es sich um Metaoptionen, die wiederum mehrere auf das Leistungs- und Energiemanagement ausgerichtete BIOS-Optionen festlegen, z. B.
Turbo-Modus,
Cstate, C1E,
Pstate-Verwaltung, Uncore-Frequenz usw. Zu den verschiedenen Systemprofilen, die in dieser Studie verglichen wurden, gehören:
- Leistung
- Performance PerWattDAPC
- Performance PerWattOS
Wir haben zwei HPC-Benchmarks und zwei HPC-Anwendungen verwendet, um die Auswirkungen dieser BIOS-Optionen auf die Performance von Cascade Lake zu verstehen. Die Konfigurationen von Server- und HPC-Anwendungen, die für diese Studie verwendet werden, werden in Tabelle 1 und Tabelle 2 beschrieben.
Anwendungen |
Domäne |
Version |
Benchmark |
Hochleistungs-Linpack (HPL) |
Berechnen – Lösen eines dichten Systems linearer Gleichungen |
Von Intel MKL – 2019 Update 1 |
Problemgröße 90 %, 92 % und 94 % des Gesamtspeichers |
Stream |
Arbeitsspeicherbandbreite |
5.4 |
Triade |
WRF |
Wetterforschung und -vorhersage |
3.9.1 |
Conus 2,5km |
ANSYS® Fluent® |
Fluiddynamik |
19,2 |
Ice_2m, Combustor_12m, Aircraft_wing_14m, Exhaust_System_33m |
Tabelle 1: Anwendungen und Benchmarks
Komponenten |
Details |
Server |
PowerEdge-Server C6420 |
Prozessor |
Intel® Xeon® Gold 6230 CPU @ 2,1 GHz, 20 Cores |
Arbeitsspeicher |
192 GB – 12 x 16 GB DDR4 mit 2.933 MT/s |
Betriebssystem |
Red Hat Enterprise Linux 7.6Red Hat Enterprise Linux 7.6 |
Kernel |
3.10.0-957.el7.x86_64 |
Compiler |
Intel Parallel Studio Cluster Edition_2019_Update_1 |
Tabelle 2: Serverkonfiguration
Alle hier gezeigten Ergebnisse basieren auf Tests mit einem einzelnen Server. Die Performance auf Clusterebene ist an die Performance eines einzelnen Servers gebunden. Die folgenden Metriken wurden verwendet, um die Performance zu vergleichen:
- Stream – Triaden-Score, wie vom Stream-Benchmark gemeldet.
- HPL – GFLOP/Sekunde
- Fluent - Solver-Bewertung, wie von Fluent gemeldet.
- WRF – Durchschnittlicher Zeitschritt, berechnet über die letzten 719 Intervalle für Conus 2,5 km
Benchmarks und Anwendungsergebnisse
Abkürzungen in der Diagrammnotation:
Systemprofile:
Performance – Performance OS – PerformancePerWattOS DAPC – PerformancePerWattDAPC
Sub-NUMA-Clustering: SNC = 0(SNC = deaktiviert): SNC = 1(SNC = aktiviert: Formatiert als Striped in graphs)
SW – Software Prefetcher: SW = 0 (SW = Deaktiviert): SW = 1 (SW = aktiviert)
Abbildung 2: Linpack mit hoher Performance
Abbildung 2 vergleicht das Ergebnis von HPL mit Problemgröße = 90 %, d. h. N = 144476 über verschiedene BIOS-Optionen hinweg. Das Diagramm stellt die absoluten Gigaflops dar, die während der Ausführung von HPL über verschiedene BIOS-Konfigurationen hinweg erzielt wurden. Diese erhaltenen Gigaflops werden auf der y-Achse aufgetragen, höher ist besser.
Nachfolgend finden Sie die Beobachtungen aus dem Diagramm:
- Weniger als 1 % Unterschied in der HPL-Leistung aufgrund von Software-Prefetch.
- Keine größeren Auswirkungen von SNC auf die HPL-Leistung (0,5 % besser mit SNC = Disabled).
- Das Performancesystemprofil ist im Vergleich zu OS und DAPC um bis zu 6 % besser.
Abbildung 3: Stream
In Abbildung 3 werden die Ergebnisse von STREAM mit den verschiedenen BIOS-Konfigurationen verglichen.
Das Diagramm stellt die Speicherbandbreite in Gigabyte pro Sekunde dar, die während der Ausführung von STREAM Triad abgerufen wird. Die erhaltene Speicherbandbreite (GB/s) wird auf der y-Achse aufgetragen, je höher ist die Verbesserung. Die BIOS-Konfiguration im Zusammenhang mit bestimmten Werten von Gigabyte pro Sekunde wird auf der X-Achse dargestellt.
Nachfolgend finden Sie die Beobachtungen aus dem Diagramm:
- Bis zu 3 % bessere Speicherbandbreite mit SNC=enabled.
- Keine große Abweichung in der Leistung aufgrund von Software-Prefetch auf STREAM-Speicherbandbreite.
- Keine Abweichung zwischen Systemprofilen.
Abbildung 4: Speicherbandbreite – SNC
In Abbildung 4 ist die Bewertung der Speicherbandbreite der Stream-Triade in einer solchen Konfiguration dargestellt. Die gesamte Systemspeicherbandbreite beträgt ~220 GB/s. Wenn 20 Cores auf einem lokalen Sockel auf den lokalen Speicher zugreifen, beträgt die Speicherbandbreite ~ 109 GB/s - die Hälfte der gesamten Systembandbreite. Die Hälfte davon, ~56 GB/s, ist die Speicherbandbreite von 10 Threads auf demselben NUMA-Node, die auf ihren lokalen Speicher zugreifen, und auf einem NUMA-Node auf den Arbeitsspeicher, der zum anderen NUMA-Node auf demselben Sockel gehört. Es gibt einen Rückgang der Speicherbandbreite um 42 % auf ~33 GB/s, wenn die Threads über die QPI-Verbindung auf dem Remote-Socket auf Remotespeicher zugreifen. Dies zeigt uns, dass es im SNC-Modus erhebliche Bandbreiteneinbußen gibt, wenn die Daten nicht lokal sind.
Abbildung 5: WRF
Abbildung 5 vergleicht das Ergebnis von WRF mit verschiedenen BIOS-Optionen. Das verwendete Datenvolumen ist ca. 2,5 km mit der Standarddatei "namelist.input".
Das Diagramm stellt den absoluten durchschnittlichen Zeitschritt in Sekunden dar, der während der Ausführung des WRF-conus2,5-km-Datenvolumens auf verschiedenen BIOS-Konfigurationen ermittelt wurde. Der durchschnittlich erhaltene Zeitschritt wird auf der y-Achse aufgetragen, niedriger ist besser. Die relativen Profile, die bestimmten Werten des durchschnittlichen Zeitschritts zugeordnet sind, werden auf der x-Achse dargestellt.
Nachfolgend finden Sie die Beobachtungen aus dem Diagramm:
- 2 % bessere Leistung mit SNC = Enabled.
- Kein Leistungsunterschied zwischen aktiviertem und deaktiviertem Software-Prefetch.
- Das Performanceprofil ist 1 % besser als die PerformancePerWattDAPC-Profile.
In Abbildung 6 bis Abbildung 9 wird die Solver-Bewertung dargestellt, die während der Ausführung von Fluent mit Ice_2m-, Combustor_12m-, Aircraft_Wing_14m- bzw. Exhaust_System_33m-Datenvolumen erzielt wurde. Die erhaltene Solver-Bewertung wird auf der y-Achse aufgetragen. Höher ist besser. Die relativen Profile, die bestimmten Werten der Durchschnittszeit zugeordnet sind, werden auf der X-Achse dargestellt.
Im Folgenden finden Sie die allgemeinen Beobachtungen aus den obigen Diagrammen:
- Bis zu 4 % bessere Leistung mit SNC = Enabled.
- Keine Auswirkung von Software Prefetch auf die Leistung.
- Bis zu 2 % bessere Performance mit Performanceprofil im Vergleich zu DAPC- und BS-Profilen.
Entscheidung
In dieser Studie haben wir die Auswirkungen verschiedener BIOS-Tuningoptionen auf die Leistung bei Verwendung des Intel Xeon Gold 6230 Prozessors bewertet. Aus der Betrachtung der Leistung verschiedener BIOS-Optionen über verschiedene Benchmarks und Anwendungen hinweg wird folgendes Fazit gezogen:
- Software Prefetch hat keine signifikanten Auswirkungen auf die Performance der getesteten Datasets. Daher empfehlen wir, dass Software Prefetcher als Standard beibehalten wird, d. h. aktiviert ist
- Mit SNC = Enabled 2-4 % Leistungssteigerung in Fluent und Stream, ca. 1 % in WRF im Vergleich zu SNC = Disabled. Daher empfehlen wir, SNC zu aktivieren, um eine bessere Leistung zu erzielen.
- Das Performanceprofil ist 2 bis 4 % besser als PerformancePerWattDAPC und PerformancePerWattOS. Daher empfehlen wir das Performanceprofil für HPC.
Es wird empfohlen, Hyper-Threading für allgemeine HPC-Cluster zu deaktivieren. Je nach den verwendeten Anwendungen sollte der Nutzen dieser Funktion getestet und gegebenenfalls aktiviert werden.
In dieser Studie wird eine Speicher-RAS-Funktion namens Adaptive Double DRAM Device Correction (ADDDC) nicht behandelt, die verfügbar ist, wenn ein System mit Arbeitsspeicher konfiguriert ist, der über eine x4-DRAM-Organisation verfügt (32-GB-, 64-GB-DIMMs). ADDDC ist nicht verfügbar, wenn ein System über x8-basierte DIMMs (8 GB, 16 GB) verfügt, und ist in diesen Konfigurationen nicht wesentlich. Für HPC-Workloads wird empfohlen, ADDDC auf deaktiviert festzulegen, wenn es als anpassbare Option verfügbar ist.