Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Das hängt größtenteils vom Solver-Typ ab. Die zu lösenden Grundgleichungen sind natürlich immer ähnlich. Aber nach der Übersetzung in eine brauchbare mathematische Formulierung und schließlich in einen numerischen Algorithmus gibt es einfach zu viele Möglichkeiten um das festmachen zu können.
Mittlerweile stehe ich diesem Benchmark recht kritisch gegenüber, aus 2 Gründen:
1) Die Ergebnisse die man auf verschiedenen Seiten zu den gleichen CPUs findet unterscheiden sich qualitativ und quantitativ, und das teils erheblich.
2) Ich bin mittlerweile überzeugt davon dass der Benchmark nicht ganz repräsentativ für einen typischen CFD-Workload ist. Müsste ich auf Basis meiner eigenen Programmiererfahrung raten würde ich sagen es liegt unter Anderem daran dass der Code noch nicht ausreichend optimiert ist. Dass Hyperthreading hier so viel hilft ist ein Anzeichen dafür, ebenso dass man mit einer größeren Anzahl Threads als die CPU zur Verfügung stellt noch höhere Benchmark-Scores erreichen kann.

Hm, ok. Ich dachte du hättest dir den Code möglicherweise mal angesehen.
Aber ja: Sobald SMT viel hilft, laufen Ausführungseinheiten leer. Das muss aber nicht unbedingt was mit schlecht optimiertem Code zu tun haben - manche Algorithmen sind einfach speicherlastig sodass häufig auf Daten aus RAM oder Cache gewartet werden muss. Prominentes Beispiel - und dort ist es volle Absicht, um es ASIC resistent zu machen - ist der Dagger-Hashimoto der Ethereum Blockchain. Aber natürlich gibt es auch welche, bei denen das auf mangelnde Optimierung schließen lässt.

Das muss dabei gar nichtmal die Schuld der Programmierer sein - der Benchmark könnte immerhin schon 11 Jahre alt sein, wenn ich nach dem Änderungsdatum des Daten-Files gehe (und da sage noch einer, wir nutzen veraltete Spiele... ;)) [edit: Februar 2007: CASE Lab Research: Euler3d Benchmark]. Vektoreinheiten wie AVX gab es damals noch nicht. Im Grafikbereich etwa hat sich für bestimmte Funktionen auch irgendwann der mathematische anstelle des texturbasierten (LUT) durchgesetzt allein weil die Rechenleistung massiv schneller gewachsen ist als die Speichertransferrate.

Was mich zu der Frage bringt: Müsste der Algorithmus prinzipiell nicht super auf GPUs oder ASICS laufen, wenn er tatsächlich stark von der Rechenleistung abhängig ist? Schonmal ausprobiert?

Ich kenne mich selbst mit CFD nicht gut aus, kann hier also nur ableiten.
 
Zuletzt bearbeitet:
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Anleitung für Windows 8.1/10:
Shift+Mausklick-rechts -> Eingabeaufforderung hier öffnen.

Generell:
e3dbm.exe 20 8 [Return]

Für 1 Step wäre es entsprechend:
e3dbm.exe 1 8

Ergebnis ablesen. Also keine Rautenzeichen oder Klammern mitschreiben.
Also wenn ich Shift+Mausklick-rechts ->bei der e3dbm.exe anwende kommt bei meinem Windows 10 die Option "Eingabeaufforderung hier öffnen" nicht, wenn ich die genannten Dateien in einen Ordner auf den Desktop lege und diesen dann mit Shift+Mausklick-rechts anklicke kommt die Option ja auch nicht mehr, sondern nur diese Powershell Option, direkt auf der e3dbm.exe geht auch nicht und wenn ich CMD mit Admin Rechten aufmache und e3dbm.exe 20 8 einfüge kommt eine Fehlermeldung!

Siehe hier Screen:

e3dbm.Ordner.png e3dbm.exe direkt.png CMD Fenster.png
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Der allgemeine Konsens ist dass CFD von der Speicherbandbreite limitiert ist. Das deckt sich auch mit meinen Erfahrungen. Befehlssatzerweiterungen hingegen bringen aus genau diesem Grund nur kleine Verbesserungen.
Und auch aus diesem Grund bringt SMT normalerweise nicht viel bei gut optimierten Codes. Die Rechenoperationen sind ohnehin schnell erledigt, es muss wieder auf Daten aus dem Speicher gewartet werden. Hinzu kommt dass normalerweise eine MPI-Parallelisierung mit Gebietszerlegung verwendet wird. Mehr Threads als nötig würden den Kommunikations-Overhead hier zusätzlich erhöhen. Soweit ich weiß ist dieser Code stattdessen per OpenMP parallelisiert.
CFD auf GPUs ist natürlich ein Thema. Leider lassen sich nicht alle Algorithmen problemlos auf GPUs anpassen. Die größte kommerzielle Software in diesem Bereich (Ansys Fluent) wirbt natürlich auch mit GPU-Beschleunigung. Meinen Tests und den von anderen zufolge liefert das je nach Algorithmus eine Beschleunigung, kann aber auch erheblich bremsen.
Andere Ansätze für CFD die nicht auf Finiten Volumen mit unstrukturierten Gittern basieren sind da besser für GPUs geeignet. Oft ist aber die begrenzte Speichermenge bei GPUs noch ein Problem. Von ASICS für CFD hingegen habe ich noch nie gehört. Das ist nicht ganz mein Thema, aber wenn mich nicht alles täuscht würde das unter Anderem erfordern dass das Rechengitter immer identisch ist. Das geht natürlich bei Benchmarks, wäre aber völlig unbrauchbar für den realen Einsatz.
 
Zuletzt bearbeitet:
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

So nun habe ich es hinbekommen, das Problem ist, das bei meinem Windows 10 64Bit Version 1703 Build 15063.540, die Option "Eingabeaufforderung hier öffnen" nicht mehr vorhanden ist, stattdessen die Option "PowerShell Fenster hier öffnen" von MS vorgegeben wird :hmm:. Also musste ich jetzt erst in die Registry gehen und dort einige Änderungen vornehmen, damit ich nun wieder die Option " Eingabeaufforderung hier öffnen" im Kontex Menu habe [und ich Hasse es, mich mit diesen Besitzerrechten herumzuschlagen!:wall: ]. Jetzt habe ich diese Option wieder freigeschaltet und alles läuft wie es soll, warum MS immer wieder Funktionen einfach mal so entfernt, ich weiß nicht!

Hier das Ergebnis:

i7 4790K@4,6 / 16GB RAM@2133 MHz / 10-11-10-31 2T
20 / 8
55.86 sec.
7161 Hz
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Power Shell und Command Line sind doch fast das Gleiche. Die Befehle funktionieren da genauso.
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Power Shell und Command Line sind doch fast das Gleiche. Die Befehle funktionieren da genauso.
Nein ist es eben nicht! Versuche mal mit den gleichen Befehlen hier diesen Test durchzuführen oder eine Grafikkarte zu flashen, das geht nicht mit PowerShell!
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Einfache DOS Befehle gehen damit aber genauso und mehr ist doch hier nicht notwendig.
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

So und so sieht das dann bei mir unter Windows 10 aus:

Desktop 08.12.2017 - 14.05.44.04.png

Und jetzt! Ich warte immer noch auf den Befehl, wie man diesen Test unter PowerShell ausführen kann! :hmm:
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Ja du brauchst doch auch gar nicht den Befehl komplett eingeben. In Windows reicht es wenn du E eingibst und dann Tab drückst. ;) Dann vervollständigt er das selber korrekt.
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Dann hier auch nochmal meine Ergebnisse vom „Kernkrüppel“ (wie Raff seit neuestem immer sagt).
• Core i7-5775C @3,4/3,3 GHz Core/Ring fix. 128 MiByte eDRAM @1,6 GHZ, 2× 8 GiByte DDR3-1833 9-10-10-24-1T
Code:
01  Thread/20 Steps: 2,461/[B]2,479[/B]/2,463 Hz
02 Threads/20 Steps: 4,535/4,475/[B]4,586 [/B]Hz
04 Threads/20 Steps: 6,893/6,613/[B]7,180[/B] Hz
08 Threads/20 Steps: 8,524/8,552/[B]8,621[/B] Hz
Die besten Ergebnisse fett hervorgehoben. Das genutzte Windows 10 ist ziemlich nackig, also kaum störende Rogue-Prozesse. Oversubscription bringt nichts, auch wenn 16 Threads wieder schneller waren als beispielsweise 10 sind beide deutlich langsamer als 8.
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Ich bring noch mal Sandybridge-E ins Spiel
-Xeon E5 1650 (=3930k) @ 4,4/4,5 Ghz Base/Boost , 4x4GB DDR3-2400 Cl11-12-11-29-1T (SingleRank; QuadChannel)


Threads - Hertz

1 - 2029

2 - 3644

3 - 5034

4 - 6152

6 - 7307

12- 9364


Immerhin noch vor dem Kernkrüppel gelandet, dafür auch ein Kernkraftwerk gebraucht :fresse:
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Dann mach ich eben auch nochmal mit.
Xeon E5-1650v3 | 4.5GHz core+uncore | 4x16GB 2Rx4 DDR4-2666 reg ECC 16-18-18-36-1T

Code:
Threads    run1     run2     run3  average  standard deviation  “HPC” mode
      -      Hz       Hz       Hz       Hz                  Hz          Hz
      1   2.360    2.364    2.367    2.364               0.004       2.356
      2   4.210    4.205    4.210    4.208               0.003       4.244
      3   5.931    5.871    5.931    5.911               0.035       5.969
      4   7.347    7.305    7.314    7.322               0.022       7.356
      5   8.579    8.731    8.695    8.668               0.079       8.718
      6   9.711    9.552    9.696    9.653               0.088      10.030
      8   9.079    9.142    9.077    9.099               0.037       9.328
     12  11.656   11.594   11.699   11.650               0.053      11.829
     16  10.127   10.110   10.109   10.115               0.010      10.191
     24  11.510   11.366   11.447   11.441               0.072      11.678
     32  11.874   11.895   11.895   11.888               0.012      11.829
     48  12.452   12.330   12.473   12.418               0.077      12.452
     64  12.623   12.498   12.425   12.515               0.100      12.475
     96  12.850   12.875   12.749   12.825               0.067      13.034
    128  12.850   12.902   12.825   12.859               0.039      12.875
    192  12.877   12.928   12.982   12.929               0.053      13.007
    256  12.799   12.824   12.850   12.824               0.026      12.928
    384  12.697   12.673   12.673   12.681               0.014      12.799
    500  12.523   12.475   12.523   12.507               0.028      12.572

Oder als Diagramm der letzten Spalte:
e3d_xeon_e5.png

Wie man sieht bringt es bei mir schon noch deutlich was mehr Treads laufen zu lassen als der Prozessor Threads (12) bereit stellt.
Der "HPC" mode ist das Energieprofil Höchstleistung bei Windows. Die Fehlerbalken sind mit den 3 Läufen bei "ausbalanciertem" Energieprofil abgeschätzt. Tatsächlich ist die Streuung bei Höchstleistung niedriger.
Interessant auch wie die Leistung einbricht wenn die Anzahl Threads kein ganzzahliges Vielfaches der Kernanzahl ist. Eine Erklärung dafür habe ich aber nicht.
 
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Wie man sieht bringt es bei mir schon noch deutlich was mehr Treads laufen zu lassen als der Prozessor Threads (12) bereit stellt.
Der "HPC" mode ist das Energieprofil Höchstleistung bei Windows. Die Fehlerbalken sind mit den 3 Läufen bei "ausbalanciertem" Energieprofil abgeschätzt. Tatsächlich ist die Streuung bei Höchstleistung niedriger.
Interessant auch wie die Leistung einbricht wenn die Anzahl Threads kein ganzzahliges Vielfaches der Kernanzahl ist. Eine Erklärung dafür habe ich aber nicht.

Ok, muss ich auch nun mal ausprobieren. :D

Ok:

Threads : 152
Benchmark Score : 10.035 Hz
 
Zuletzt bearbeitet:
AW: Große Bitte an Besitzer einer Ryzen-CPU | und alle anderen, speziell 2011-3

Meine Bastelmöhre #2 (tatsächlich meine „modernste“ CPU)

•Pentium G4560 @3,5(3,2) GHz Core(Ring/LLC), 2×4 GiB DDR3-1600@1866 9-9-9-28-1T
Code:
01  Thread/20 Steps: 2,208/[B]2,127[/B]/2,217 Hz
02 Threads/20 Steps: 3,470/[B]3,504[/B]/3,477 Hz
04 Threads/20 Steps: [B]4,100[/B]/4,092/4,099 Hz
08 Threads/20 Steps: 4,173 Hz
16 Threads/20 Steps: 4,186 Hz
Hier lief allerdings noch ein bisschen Zeug vom unaufgeräumtem Windows. ;)
Und hier brachte Oversubscription tatsächlich ein klein wenig Leistung. Vielleicht lag's beim 5775C am eDRAM, dessen Wirkung bei zuvielen Threads verpuffte und den Effekt negiert.
 
Zurück