Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / bmi2 oder avx2 für AMD CPU's
- - By Kurt Utzinger Date 2025-06-08 17:08
Was ist besser?
Parent - By Lothar Jung Date 2025-06-08 17:10
AVX2
Parent - - By Peter Martan Date 2025-06-08 17:59 Edited 2025-06-08 18:22
bmi2
Edit: ich war da auch eine Weile im Zweifel und hab' immer wieder benchmarks der beiden in Frage kommenden Kompilate laufen lassen, mittlerweile verlasse ich mich einfach darauf, was mir Jörg Oster anno dazumal erklärt hat:

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166829#pid166829

und ein paar weitere Postings dazu aus diesem Thread. Da gab's dann sogar noch einen kleinen Mailwechsel darüber mit ihm von mir, bitte sich also mit Detailfragen lieber gleich an ihn zu wenden, sonst musst du, wenn ich's dir zu erklären versuche, meine Texte erst wieder mit ChatGPT übersetzen lassen, Kurt

Aber soviel noch: es kommt natürlich aufs Kompilat der einzelnen Engine an, was bei welchem der Name wirklich genau bedeutet, aber ich nehme an, wir reden hauptsächlich über Stockfish und dergl. Wenn du beides runterlädst und benchmark laufen lässt, dann jedenfalls lieber gleich einen mit längerer TC, mehr Hash und mehr Kernen, weil dich ja vor allem die SMP- Performance interessieren wird.
Z.B. für SF
bench 8192 16 27
oder so ähnlich als Untergrenze für 16 Kerne.
Parent - By Lothar Jung Date 2025-06-08 19:38 Upvotes 1
Wenn es auf das Kompilat ankommt, dann ist Linux am schnellsten.
Parent - - By Andreas Matthies Date 2025-06-08 21:43 Upvotes 1
Peter Martan schrieb:

bmi2

Das stimmt so nicht bzw. ist die Frage zu allgemein formuliert.
Ältere AMD/Ryzen Prozessoren beherrschen zwar den BMI2 Befehlssatz, implementieren aber insbesondere den für Schachengines wichtigen PEXT Befehl nur im Microcode, was deutlich langsamer ist als eine native Unterstützung in der CPU. Damit sind die AVX2-Kompilate, die auf BMI2 und PEXT verzichten und statt dessen die im Vergleich zum "echten PEXT" fast gleich schnellen Magic Bitmaps zur Zuggenerierung verwenden, schneller als die BMI2 Kompilate.
Ab der Generation 5000 beherrscht der Ryzen auch schnelles PEXT, ab dieser CPU ist vermutlich das BMI2 Kompilat zu bevorzugen.

Siehe z.B. https://en.wikipedia.org/wiki/X86_Bit_manipulation_instruction_set

Grüße, Andreas
Parent - - By Peter Martan Date 2025-06-08 22:08 Edited 2025-06-08 22:20 Upvotes 1
Andreas Matthies schrieb:

Peter Martan schrieb:

bmi2

Das stimmt so nicht bzw. ist die Frage zu allgemein formuliert.

Danke, Andreas, aber genau deshalb habe ich ja auch auf den Thread verwiesen, in dem's damals mit Jörg Oster und Thomas Plaschke gemeinsam um das Thema ging. Jörg hat mir damals erklärt, dass die Bezeichnung oft irreführend ist.

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166831#pid166831

Genauer ging er, weil ich auch immer noch zweifelte, hier darauf ein:

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166833#pid166833

Und dann hab' ich noch ein paar Mails mit ihm darüber gewechselt, daraus gelernt, dass bei nahe beisammen liegenden Kompilaten, was die Schachbenchmarks angeht, es auch eine Frage der Hardware- Zeit ist, mit der man's vergleicht und das als Succus dessen, was ich Kurt auf seine (allgemein formulierte) Frage hauptsächlich sagen wollte: es kommt drauf an, um welches Compile welcher Engine es sich handelt (was die Bezeichnung genau bedeutet für den, der sie vergeben hat),  ich nahm und nehme aber an, er meinte hauptsächlich Stockfish- Compiles unter den Bezeichnungen, unter denen sie halt so durchs Netz geistern. Und was die angeht, hab' ich mit ausreichend Hardware- Zeit laufenden benchmarks bei Stockfish der letzten Monate (falsch, der vorletzten, in den allerletzten hab' ich's nicht mehr extra probiert, sondern gleich das bmi2- Compile genommen) immer wieder mal bmi2 z.B. bei SF dev. von der github site der official-stockfish releases etwas schneller gefunden, wenn's auch oft knapp war.

Wenn du mir jetzt sagst, dass sich das mit den SF dev. - Versionen in allerjüngster Zeit wieder geändert haben könnte, was Ryzen 5950x angeht, werd' ich halt wieder anfangen, hin und wieder sowohl avx2 als auch bmi2 runterzuladen und mit benchmark zu überprüfen.
Und jetzt warte ich in Ruhe darauf, dass mir Jörg dafür, dass ich wieder zu zweifeln angefangen habe, die Leviten liest

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166829#pid166829

In diesem Fall verweise ich ihn jetzt dann einfach auf diesen Thread hier und deine Stellungnahme, und ihr beide könnt euch das dann untereinander ausmachen
Parent - - By Andreas Matthies Date 2025-06-09 08:53 Edited 2025-06-09 08:55
Peter Martan schrieb:

Danke, Andreas, aber genau deshalb habe ich ja auch auf den Thread verwiesen, in dem's damals mit Jörg Oster und Thomas Plaschke gemeinsam um das Thema ging. Jörg hat mir damals erklärt, dass die Bezeichnung oft irreführend ist.

<a class='ura' href='https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166831#pid166831'>https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166831#pid166831</a>

Genauer ging er, weil ich auch immer noch zweifelte, hier darauf ein:

<a class='ura' href='https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166833#pid166833'>https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=166833#pid166833</a>


In diesem Thread ging es aber, soweit ich es überblicke, nur um den Gesichtspunkt "im BMI2 Kompilat ist immer auch AVX2 (und damit schnelles NNUE) drin". Deshalb wollte ich den (neuen?) Aspekt "BMI2 kann auf bestimmten AMD Prozessoren auch verdammt langsam sein" hier nochmal erwähnen.

Peter Martan schrieb:

Wenn du mir jetzt sagst, dass sich das mit den SF dev. - Versionen in allerjüngster Zeit wieder geändert haben könnte, was Ryzen 5950x angeht, werd' ich halt wieder anfangen, hin und wieder sowohl avx2 als auch bmi2 runterzuladen und mit benchmark zu überprüfen.
Und jetzt warte ich in Ruhe darauf, dass mir Jörg dafür, dass ich wieder zu zweifeln angefangen habe, die Leviten liest

Nein, ich denke, dass sich das nicht geändert hat. Auf (d)einem Ryzen 5xxx mit schnellem BMI2/PEXT ist das bmi2 Kompilat sicherlich immer noch geringfügig schneller und immer eine gute Wahl.
Aber... z.B. auf (m)einem Ryzen 3xxx ist es geradezu katastrophal, sofern man beim Computerschach von Katastrophen sprechen darf, das bmi2 Kompilat zu verwenden. Ich habe es gerade nochmal mit meiner eigenen Engine getestet:

Code:
Build Tester: 1.4.7.0
Windows 10 (Version 10.0, Build 0, 64-bit Edition)
AMD Ryzen 7 3700X 8-Core Processor            
SafeMode: No
Running In VM: No
HyperThreading Enabled: Yes
CPU Warmup: No
Command Line: bench -depth 18 -option Hash 256
Tests per Build: 10
ANOVA: n/a

                Engine# (NPS)                     Speedup     Sp     Conf. 95%    S.S.
1  (2.112.426,7   ) ---> 2  (1.451.598,8   ) ---> 45,524%  34.439,8     Yes       No


Das avx2 Kompilat ist also sagenhafte 45% schneller gegenüber dem bmi2 Kompilat.
Vermutlich aus dem Grund bietet die Stockfish Homepage auch das avx2 Kompilat als sichere Default Version zum Download an.

Grüße, Andreas
Parent - By Peter Martan Date 2025-06-09 09:27
Andreas Matthies schrieb:

Auf (d)einem Ryzen 5xxx mit schnellem BMI2/PEXT ist das bmi2 Kompilat sicherlich immer noch geringfügig schneller und immer eine gute Wahl.
Aber... z.B. auf (m)einem Ryzen 3xxx ist es geradezu katastrophal,

Alles klar, danke neuerlich.
Parent - By Thomas Plaschke Date 2025-06-08 22:00 Upvotes 1
Das kann von der CPU, dem Compiler und der Anzahl der Threads abhängen.

Ich nutze Stockfish mit einer Skylake- und einer Zen3+-CPU. Die Zen3+-Architektur kann AVX2 und BMI2. Skylake zusätzlich AVX512. Die schnellsten Programmversionen erhält man mit dem Clang-Compiler, den ich unter MSYS2 nutze (mingw Basis; enthält 3 C++-Compiler). Mit dem außerdem noch für mich verfügbaren Cygwin-GCC-Compiler erhält man ähnlich schnelle Programme wie mit dem mingw-Compiler unter MSYS2 (also langsamer als clang).

Für Skylake sind mit einem Thread die AVX512-Versionen am schnellsten. Multi-threaded arbeiten mit dieser CPU die BMI2-Versionen am schnellsten. Für die Zen3+-CPU kann ich keinen signifikanten Unterschied zwischen AVX2 und BMI2 messen. Erstaunlicherweise sind Compilate mit -mtune=skylake-avx512 für Zen3+ eine Winzigkeit schneller als die mit -mtune=znver3 compilierten. Mit dem Parameter mtune weist man den Compiler an, die Maschinenbefehle des Compilats in der für die angegebene CPU optimalen Reihenfolge anzuordnen. Mit welchem Compiler Stockfish compiliert wurde, erfährt man durch Eingabe von "compiler" am Eingabe-Prompt.
Die Unterschiede (für laufzeitoptimierte Compilate - die allerschnellsten Compilate der vergluchenen Compiler) sind insgesamt aber nicht sehr groß (maximal kaum 5 %).

Viele Grüße
Thomas Pl.
Up Topic Hauptforen / CSS-Forum / bmi2 oder avx2 für AMD CPU's

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill