[quote="Martin Hander"]
Alles klar, dann hatte ich den Satz nur falsch verstanden.
Indeterministisch wird die Engine durch das nicht deterministische Timing des Thread Schedulers.
Man darf nur nicht "Hashkollision" durcheinanderbringen mit einem "Hashfehler", der aufgrund der verwendeten 64 bit extrem unwahrscheinlich ist, wenn auch nicht unmöglich.
[/quote]
Du hast eine sehr, und wie es scheint fundierte, Programmiersicht auf die Dinge. Der gemeine User, wie ich, sieht das da etwas nicht stimmt und zieht etwas als Erklärung heran, von dem er glaubt das könnte es sein. Da es letztendlich für ein individuelles Ereigniss unmöglich ist im nachhinein den Grund sicher festzustellen, ist es auch egal - für den User. Das es einem Programmierer da anders geht, er gerne etwas wiederholt und dann nach dem Fehler sucht, ist verständlich ...
[quote="Martin Hander"]
[quote="Ingo Bauer"]
Ansonsten werde ich zu Hause mal durchprobieren ob sich die Knoten bei unterschiedlichen Hashgrößen (nicht zu klein natürlich) UND Verwendung von LP anders ändern (oder ob überhaupt) als ohne LP (bei nur einem Core!). Interessanter Test!
[/quote]
Es gibt einen "einfachen" programmtechnischen Grund, warum Engines bei weniger Hashspeicher oft eine höhere Zahl von Knoten ausgeben, aber trotzdem langsamer in die Tiefe kommen.
Der Zugriff auf den Arbeitsspeicher/Hash ist sehr langsam, verglichen mit der Geschwindigkeit der CPU.
Generall kann man in der Zeit, die ein Hashzugriff braucht, je nach Prozessor ca. 4-7 (wild geschätzt) Züge erzeugen, den Endknoten evaluieren und die Züge wieder zurücknehmen.
Das bedeutet, das nicht in jeder Stellung nachgeschaut wird, ob ein Hasheintrag vorliegt, sondern nur, bis man ca. 5 Züge vor dem Endknoten ist.
(In der normalen Suche, in der "Quiescence search" wird normalerweise gar nicht auf den Hashspeicher zugegriffen).
Wichtig ist dabei noch, das ein Hashtreffer normalerweise als ein Knoten gezählt wird, und nicht als die Anzahl der Knoten, die man sich durch den Treffer erspart.
Was passiert also jetzt, wenn der Hashspeicher kleiner wird?
Der Anteil der langsamen Hashtreffer sinkt (die einem aber viele generierte Knoten ersparen), und der Anteil der schnellen generierten Nodes steigt.
Dadurch werden also insgesamt mehr (gezählte) Nodes generiert, aber in Wirklichkeit ist man aber trotzdem langsamer, da die Knoten-Ersparnis durch die Hashtreffer deutlich größer ist.
Ich hoffe, ich konnte es einigermaßen anschaulich erklären
[/quote]
Was aber heißt, das diejenigen die Ihren Speicher auf Playchess verkleinern und "schnellere" Engines zu bekommen ihre PSielstärke eher herrabsetzen ... richtig?
Warum werden dann effiktiv bei manchen Engines manche Stellungen mit einem "best move", auch bei einem Kern, schneller gelöst als mit mehr Hash?
Danke für die Erklärungen denen ich mit mienem Halbwissen sogar folgen konnte.
Gruß
Ingo