Thread Starter
- Mitglied seit
- 18.02.2005
- Beiträge
- 5.994
Zum Vergleich AMD Ryzen gegen Intel Skylake habe ich folgende Tests durchgeführt:
Hardware Intel: Xeon E3-1245v5 auf MSI C236A Workstation mit 2x 8 GB Samsung DDR4 ECC 2133
Hardware AMD: Ryzen 1800X auf Asus Prime B350 plus mit 2x 8 GB Crucial DDR4 2133
beide laufen unter Last auf allen logischen Kernen auf 3,7 GHz
Ergebnis:
Bei diesen Ergebnissen ist jeweils eine Ungenauigkeit von ein paar Prozent, da Schach Engines, die multi-threaded laufen, nicht deterministisch arbeiten.
Es gibt unterschiedliche Kompiler Optionen - die popcnt Versionen nutzen die im Schach wertvolle Instruktion POPCNT aus dem Instruktionssatz SSE 4.2 - damit kann man z.B. mit einem Befehl zählen, wieviele Bauern auf dem Spielfeld sind. Die bmi2 Versionen nutzen darüberhinaus den BMI2-Instruktionssatz. Das sollte die Performance eigentlich verbessern - bei Intel klappt das auch, wie man an den Ergebnissen sieht. Beim Ryzen scheint da ein schwerwiegendes Problem zu sein.
Edit:
Im single-thread Modus (da läuft der Ryzen auf 4,1 GHz) gibt es folgende Ergebnisse:
Stockfish_8_x64_popcnt 1,591 Mn/s, Stockfish_8_x64_bmi2 1,156 Mn/s. Diese Ergebnisse sind übrigens extrem genau - im single-thread Modus sind die Ergebnisse deterministisch. Also 27,3% Performance Verlust durch die BMI2 Option.
Hardware Intel: Xeon E3-1245v5 auf MSI C236A Workstation mit 2x 8 GB Samsung DDR4 ECC 2133
Hardware AMD: Ryzen 1800X auf Asus Prime B350 plus mit 2x 8 GB Crucial DDR4 2133
beide laufen unter Last auf allen logischen Kernen auf 3,7 GHz
Ergebnis:
| Engine | Intel | AMD | Unterschied |
Komodo 10.3 | 7,75 Mn/s | 14,86 Mn/s | 92% |
asmFishW_2017_02_15_popcnt | 10,60 Mn/s | 19,21 Mn/s | 81% |
asmFishW_2017_02_15_bmi2 | 10,91 Mn/s | 14,25 Mn/s | 31% |
Stockfish_8_x64_popcnt | 8,36 Mn/s | 16,51 Mn/s | 97% |
Stockfish_8_x64_bmi2 | 8,69 Mn/s | 12,36 Mn/s | 42% |
Bei diesen Ergebnissen ist jeweils eine Ungenauigkeit von ein paar Prozent, da Schach Engines, die multi-threaded laufen, nicht deterministisch arbeiten.
Es gibt unterschiedliche Kompiler Optionen - die popcnt Versionen nutzen die im Schach wertvolle Instruktion POPCNT aus dem Instruktionssatz SSE 4.2 - damit kann man z.B. mit einem Befehl zählen, wieviele Bauern auf dem Spielfeld sind. Die bmi2 Versionen nutzen darüberhinaus den BMI2-Instruktionssatz. Das sollte die Performance eigentlich verbessern - bei Intel klappt das auch, wie man an den Ergebnissen sieht. Beim Ryzen scheint da ein schwerwiegendes Problem zu sein.
Edit:
Im single-thread Modus (da läuft der Ryzen auf 4,1 GHz) gibt es folgende Ergebnisse:
Stockfish_8_x64_popcnt 1,591 Mn/s, Stockfish_8_x64_bmi2 1,156 Mn/s. Diese Ergebnisse sind übrigens extrem genau - im single-thread Modus sind die Ergebnisse deterministisch. Also 27,3% Performance Verlust durch die BMI2 Option.
Zuletzt bearbeitet:







! Fast jeder Durchlauf zeigt andere Werte an: Von 27 bis in die 80 ist alles dabei. Ich habe testweise noch POPCNT eingebaut; das ist stabil (alle Wald-und Wiesen-Instruktionen sowieso). Thread auf bestimmten Core festnageln brachte nichts. Ryzen scheint also mit PEXT ein Problem zu haben. Nun macht eine Instruktion nicht das komplette Programm unbrauchbar, aber ärgerlich (komisch) ist es schon. Das mit dem Microcode wäre eine Erklärung...


