Guten Morgen Stefan
Bei allem Respekt: Mir scheint das alles andere als "... total simpel in der Benutzung ..."
Mit deiner guten Anleitung (danke dafür) kannst du hoffentlich einige Freaks von Cute Chess
überzeugen. Für mich ist es aber eigentlich klar, dass sich Otto-Normal-User total überfordert
fühlen. Gerne würde ich in diesem Forum dazu (gegensätzliche) Meinungen hören/lesen. Bin
echt gespannt darauf.
Freundliche Grüsse
Kurt
-engine name="Stockfish 15.1" cmd="C:\Engines\Stockfish-15.1.exe" proto=uci ponder option.Ponder=true
-each
eintragen. Bspw.-each option.Hash=256 option.Threads=2 tc=/180+1.8 timemargin=100 ponder option.Ponder=true
Ponder
heißt (Groß- und Kleinschreibung spielt bei UCI-Parametern aber keine Rolle), bleiben in dieser Variante außen vor.ponder
). Zusätzlich muss für jede Engine Pondern mit ihrem eigenen Parameter aktiviert werden (für Stockfish mit: option.Ponder=true
).-each
-Abschnitt stand der cutechess-Parameter ponder
. Der pb-SF bekam option.pb=true
. Die Parameter des normalen SF blieben unverändert (keine Einstellung mittels option.ponder=
). Das Turnier lief mit concurrency 1
. Es fanden also keine weiteren Partien parallel statt, beide Versionen liefen mit option.Threads=1
. Damit konnte ich feststellen, wann die Engines ihren Prozessor nutzten. Und nun die Überraschung: der normale SF erzeugte durchgehend Prozessorlast, der pb-Stockfish nicht. Ich interpretiere das so, dass der normale SF gepondert hat.ohne cutechess-Parameter ponder
: beide Engine erzeugen abwechselnd Last auf "ihren" CPU-Threads. Schlussfolgerung: keine Engine pondert.
ohne cutechess-Parameter ponder
, pb-SF mit pb=true
: beide Engine erzeugen abwechselnd Last auf "ihren" CPU-Threads. Schlussfolgerung: keine Engine pondert. Parameter wirkungslos.
mit cutechess-Parameter ponder
, pb-SF (Parameter pb
nicht gesetzt): nur der normale SF hat permanent Last auf "seinem" CPU-Thread. Schlussfolgerung: der normale SF pondert.
ponder
zum Pondern gebracht werden können. Das Setzen ihres namensgleichen (Engine-)Parameters führt zu einer Fehlermeldung. Anders bezeichnete Permanent-Brain-Parameter (der Engines) bleiben wirkungslos. cutechess verarbeitet entsprechende UCI-Befehle oder -Meldungen schlicht nicht ("ponderhit" usw.).-each
den cutechess-Parameter ponder
hinzufügen und ausprobieren.* go
start calculating on the current position set up with the "position" command.
There are a number of commands that can follow this command, all will be sent in the same string.
If one command is not sent its value should be interpreted as it would not influence the search.
* ponder
start searching in pondering mode.
Do not exit the search in ponder mode, even if it's mate!
This means that the last move sent in in the position string is the ponder move.
The engine can do what it wants to do, but after a "ponderhit" command
it should execute the suggested move to ponder on. This means that the ponder move sent by
the GUI can be interpreted as a recommendation about which move to ponder. However, if the
engine decides to ponder on a different move, it should not display any mainlines as they are
likely to be misinterpreted by the GUI because the GUI expects the engine to ponder
on the suggested move.
option.Ponder=true
macht also wenig Sinn!-debug
switch, dann kan man schön sehen, dass anstelle des üblichen go wtime ...
nun 44140 >Stockfish2(2): go ponder wtime 1668 btime 2918 winc 20 binc 20
gesendet wird.
Finished game 200 (Stockfish-NoPonder vs Stockfish-Ponder): 1/2-1/2 {Draw by 3-fold repetition}
Score of Stockfish-Ponder vs Stockfish-NoPonder: 37 - 6 - 157 [0.578] 200
Elo difference: 54.3 +/- 21.6, LOS: 100.0 %, DrawRatio: 78.5 %
Finished match
./cutechess-cli -engine name=Stockfish-Ponder cmd=./sf-simpleMPV ponder -engine name=Stockfish-NoPonder cmd=./sf-simpleMPV -each proto=uci option.Threads=1 option.Hash=32 restart=on tc=12+0.02 -openings file=/home/joster/openings/largebook.pgn order=random plies=14 -rounds 100 -games 2 -repeat -ratinginterval 10 -resign movecount=5 score=600 -draw movenumber=70 movecount=10 score=15 -tb /media/joster/EGTB-SSD/syzygy-5men/syzygy -tbpieces 5 -wait 5 -pgnout SF-Pondertest3_12.pgn
tc=12+0.02
SET An095=-engine name="Andscacs 0.95" cmd="C:\Engines\Andscacs\andscacs095\andscacs.exe" proto=uci restart=on option.NullMove=true option.Hash=256 option.Threads=1
-engine
sagt cutechess, dass eine Enginedefinition folgt. Man beachte den Bindestrich. Die folgenden Parameter haben keinen.cmd
gibt den Speicherort der Engine an. Am besten in Anführungsstrichen, weil in Pfadangaben auch mal Leerzeichen sein können, die dann die Verarbeitung stören.proto
legt das Kommunikationsprotokoll fest. =uci
heisst, dass die Engine das UCI-Protokoll versteht.restart
ist ein spezielleres Kommando. Mit on
sagt man cutechess-cli, es möge die Engine für jede Partie neu starten.option.
leitet die Eingabe eines Engine-spezifischen Parameter ein. option.Hash=256
stellt bspw. die Zahl 256 als Hash-Wert ein. Ob es sich um MBytes, KBytes oder Bytes handelt, ist Sache der Engine. option.Threads=1
stellt den Thread-Parameter der Engine ein. Besteht ein Parametername aus mehreren Wörtern, setzt man ihn in Anführungszeichen. Bspw. option."Number of Threads"=1. Wie man die namen der Parameter der Engines herausbekommt, dürfte bekannt sein.-each
wieder eine cutechess-cli-Option, die mehrere andere zusammengehörende Parameter einleitet.%TURNIER%
zitiert den bereits in der Umgebungsvariablen steckenden Inhalt. Mit SET TURNIER=%TURNIER%
ergänzt man den Inhalt der Variablen TURNIER. Konkret wird hier aus aus-each option.Hash=1024
der neue Inhalt -each option.Hash=1024 option.Threads=4
.tc
heißt timecontrol. /180+1.8
bedeutet eine Zeitvorgabe von 180 Sekunden plus 1,8 Sekunden Gutschrift pro Zug. Eine Vorgabe von 5 Minuten für 60 Züge sähe dagegen so aus tc=60/300
. Es werden also die Zeiten in Sekunden angegeben und Kommazahlen mit dem Dezimalpunkt (nicht Komma, wie in Deutschland üblich).timemargin
gibt einen Zeitaufschlag in Millisekunden an, der Zeitverluste bei der Kommunikation zwischen cutechess-cli und den Engines kompensieren soll.-tournament gauntlet
ist Spießrutenlauf (alle Engines nur gegen die zuerst angebene Liste). round-robin
ist der Parameter für ein Rundenturnier jeder gegen jeden.-games 10
Jede Engine soll 10 Partienen gegen ihren Gegner spielen.-rounds 2
Das Turnier soll 2-rundig sein.-concurrency
gibt an, wie viel Partien cutechess-cli parallel spielen soll. Dabei muss man darauf achten, dass dieser Wert (hier 4) multipliziert mit der Zahl der Engine-Threads nicht die Zahl der Prozessorkerne überschreiten sollte. Mit der Vorgabe von 1 Threads sollte bei -concurrency 4
die CPU mindestens 4 Kerne besitzen.-ratinginterval
gibt an, alle wie viel gespielte Partien ein Zwischenstand ausgegeben werden soll.-wait
ist die Zeit, die vor einem Start auf die Engine gewartet wird (in Millisekunden).-recover -repeat
sind Befehle zur Fehlerbehandlung (falls die Engine Probleme hat)-openings file
legt die Datei mit den Eröffnungen fest. Hier ist sie in einer Umgebungsvariablen gespeichert, sodass nur weiter oben die entsprechende Datei festgelegt werden muss.format
konkretisiert das Dateiformat der Bibliothek.-pgnout
pgn-Datei, in die die Partien geschrieben werden sollen-event
Text, der in den PGN-tag [Event]
jeder Partie geschrieben wirdSET SF151=-engine name="Stockfish 15.1" cmd="C:\Engines\Stockfish-15.1.exe" proto=uci restart=on option.SyzygyPath="E:\Endspieltabellen\szTB" option.NNUE="C:\NNUE\nn-335a9b2d8a80.nnue" option.Hash=256 option.Threads=1
nn-335a9b2d8a80.nnue
nutzen. Der Aufruf von cutechess-cli muss nur zu SET An095=-engine name="Andscacs 0.95" cmd="C:\Engines\Andscacs\andscacs095\andscacs.exe" proto=uci restart=on option.NullMove=true option.Hash=256 option.Threads=1
SET G3=-engine name="Gull 3" cmd="C:\Engines\GullChess\Gull 3\Gull 3 x64 BMI2.exe" proto=uci restart=on option."Large memory pages"=false option.Hash=256 option.Threads=1
SET Spa1=-engine name="Spark 1.0" cmd="C:\Engines\Spark\spark-1.0\spark-1.0-win64-mp-corei.exe" proto=uci restart=on option.OwnBook=false option.Hash=256 option.Threads=1
SET BIB=C:\Cutechess\Books\HERT500.pgn
SET TURNIER=-each option.Hash=1024
SET TURNIER=%TURNIER% option.Threads=4
SET TURNIER=%TURNIER% tc=/180+1.8 timemargin=100
SET TURNIER=%TURNIER% -tournament round-robin
SET TURNIER=%TURNIER% -games 2 -rounds 2
SET TURNIER=%TURNIER% -concurrency 4 -ratinginterval 10 -wait 3000 -recover -repeat
SET TURNIER=%TURNIER% -openings file=%BIB% format=pgn
SET TURNIER=%TURNIER% -tb "E:\Endspieltabellen\szTB" -tbpieces 6
SET TURNIER=%TURNIER% -pgnout "C:\Engines\Turniere\Results-001.pgn" -event "Schlachtrösser unter sich (%BIB%)"
cutechess-cli %An095% %G3% %Spa1% %TURNIER%
Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill