Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Leistungsabfall von Stockfish 14.1
1 2 Previous Next  
Parent - - By Jörg Oster Date 2021-11-20 15:38
Stockfish speichert hier in der Tat nur 16 Bit.
Dadurch sind Hashkollisionen schon wesentlich öfter möglich.

Aber der gesparte Platz bringt mehr Vorteile als die Hashkollisionen an Nachteil. 
Parent - By Olaf Jenkner Date 2021-11-20 15:59
Jörg Oster schrieb:

Stockfish speichert hier in der Tat nur 16 Bit.

Dann haben wir bei einem Index von 28 Bit (kann 268 Mio Positionen speichern) insgesamt 44 Bit für die Stellung.
Damit können 2^44 = 1,8 * 10^13 = 18 Billionen Stellungen unterschieden werden.
Ein Hashkollision wird umso wahrscheinlicher, je näher die Zahl der untersuchten verschiedenen Positionen an die 18 Billionen kommt.
Sind es mehr, dann haben wir Haskollisionen mit absoluter Sicherheit. Das heißt aber nicht, daß dadurch das Suchergebnis negativ beeinflußt wird.
Parent - - By Jörg Oster Date 2021-11-20 15:57
Benno Hartwig schrieb:

2^64 Bit sind 2^56 Byte, also mehr als 70000 Tera-Byte.
Da mögen Kollisionen selten sein , aber bei solchen Hashtabellen sind wir bei unseren Engines ja nun doch noch lange nicht!


2^64 / 8 = 2^61

Sorry, konnte nicht widerstehen.
Parent - - By Olaf Jenkner Date 2021-11-20 16:02
Was willst du damit sagen?
Parent - - By Jörg Oster Date 2021-11-20 16:39
Dass 2^64 Bits nicht 2^56 Bytes sind.
Parent - - By Olaf Jenkner Date 2021-11-20 17:02
warum nicht?
Parent - - By Jörg Oster Date 2021-11-20 21:53
Olaf Jenkner schrieb:

warum nicht?


8 = 2^3
2^64 / 2^3 = 2^(64-3) = 2^61
Parent - By Olaf Jenkner Date 2021-11-21 02:51
Du tust Tolstoi unrecht.
Parent - By Benno Hartwig Date 2021-11-20 23:13

> 2^64 / 8 = 2^61


Stimmt!
(sorry)
Parent - - By Andreas Mader Date 2021-11-20 10:32 Upvotes 1
Benno Hartwig schrieb:

Wie ist das an solchen Stellen eigentlich realisiert?
Ich hatte geglaubt, es würde über den Hashwert in die Hashtabelle gegriffen, und dort wäre aber neben der Bewertung auch Information hinterlegt, die  verlässlich dokumentiert, ob die Stellung passt. Es wäre ausgeschlossen, dass mit einem falschen Wert gearbeitet wird.
Ist dies nicht so? Wird einfach frech mit dem Wert gerechnet und wir tun so, als ob es Hashkollisionen gar nicht gäbe?
Gemeinhin widmet man sich, wenn man in anderen Zusammenhängen Hashtabellen nutzt, doch sehr eingehend der Behandlung von Hashkollisionen. Bei Engines nicht???


Man könnte die berechneten Stellungen und deren Bewertung auch ganz ohne Hash-Keys und Hash-Tabellen speichern, dann wäre die Gefahr für eine Kollision gleich Null. Das Problem dabei wäre, dass wesentlich mehr Speicherplatz benötigt werden würde und der Zugriff nicht ganz so schnell erfolgen könnte. Mit dem Hashen wird alles viel schneller und effizienter - um den Preis, dass gelegentlich Kollisionen auftreten können. Natürlich gibt es jede Menge Dinge, die gemacht werden, damit Kollisionen selten sind (Prüfsummen, Algorithmen für die Keys, etc.), aber ein Restrisiko bleibt immer.

Mein Schlüsselerlebnis hatte ich als Student, als bei einer Vorlesung gefragt wurde, was man programmiertechnisch genau tun müsse, um einen Fehler aufgrund einer Hashkollision abzufangen. Die Antwort des Professors war: "Was machen Sie, wenn ihr Rechner beim Hochfahren nicht funktioniert? Richtig, Sie starten ihn noch einmal und vergessen das Problem, wenn beim zweiten Mal alles in Ordnung ist. Hashkollisionen sind so selten, dass es sich nicht auszahlt, in so eine Problemstellung Zeit zu investieren."

Daraus folgt auch, dass man kritische und heikle Daten wie zum Beispiel Befunde im Gesundheitsbereich niemals hashen darf. Schachstellungen hingegen sind sehr gut dafür geeignet.
Parent - - By Benno Hartwig Date 2021-11-20 13:54

> Hashkollisionen sind so selten, dass es sich nicht auszahlt, in so eine Problemstellung Zeit zu investieren."


Interessante These, finde ich.
Mögen bei den Boliden heute  ja auch recht große Hashtabellen üblich sein, so sollte das Hashing bitte auch sinnvoll funktionieren, wenn sich die Hastabellengröße noch im Megabyte-Bereich bewegt.
Über sehr viele Jahre wurde ja intensiv und erfolgreich so gearbeitet.
Und ich bin fest überzeugt, da gibt es permanent Kollisionen und es gibt sicherlich auch Mehrfach-Kollisionen. Insbesondere wenn mehrere Minuten lang gerechnet wurde.

Mein Studium war noch in den 80ern. Damals waren Hashräume notgedrungen noch klein, und es wurde den Hashkollisionen an der Uni durchaus viel Raum gewidmet. Es gíbt dafür ja durchaus auch mehrere Strategien unterschiedlicher Komplexität.
Parent - - By Frank Brenner Date 2021-11-20 20:41 Edited 2021-11-20 20:44
Während der minutenlangen Suche werden sicherlich viele entstehende Schachstellungen auf die gleiche Position in den Hashtabellen abgebildet.

Das kann man sehr leicht ausrechnen wie lange das dauert: knotengeschwindigkeit / Anzahl_Positionen in den Hashtabellen.

Aber die Kollision wird erst dann eine wirkliche Kollision wenn zusätzlich noch der Stellungsidentifyer übereinstimmt. In der Hashtabelle steht  ein Hashwert (Stellungsidentifyer, 32 oder besser 64 bit drin) der unabhängig von der Speicherabhängigen Hash-Position (vielleicht nur 24 bit ....) aus der aktuellen Stellung berechnet wird. Erst wenn beide Stellungsidentifyer übereinstimmen und die Hashtabellenposition, dann erst entsteht eine Kollision wo die Suche mit fehlerhaften Werten weiterrechnet.

Wenn du den Stellungsidentifyer  64 Bit groß machst und mit den Hashtabellen Plätzen großzügig bist  (also zb 8GB) , dann wirst du in einem Jahrtausend auf selbst einem 1000 Core Rechner keine Kollision erleben wo fälschlicherweise ein falscher Stellungswert aus der Hashtabelle für eine andere Positon übernommen wird.
Parent - By Benno Hartwig Date 2021-11-20 20:46

> In der Hashtabelle steht  ein Hashwert


Ja, an dieser Stelle war ich falsch davor:
Kollisionen in der Hashtabelle gibt es wohl (die Engine spricht dieselbe Position in der Tabelle an, daran dachte ich),
aber wenn dort auch ein die Stellung (annähernd) idetifizierender Hashwert steht, dann kann die Fehlerwahrscheinlichkeit sicherlich äußerst klein gehalten werden.
Parent - - By Thomas Plaschke Date 2021-11-20 12:43
Dr. Donninger erklärt es in CSS 4/94 S. 38 ff sehr ausführlich und anschaulich.

Viele Grüße
Th. Plaschke
Parent - By Benno Hartwig Date 2021-11-20 13:56
Thanx,
ich werde mal nachschlagen, ich habe ja die DVD.
Parent - - By Clemens Keck Date 2021-11-21 11:09
Hallo

hast Du mal andere GUI versucht? Fitz GUI, Shredder GUI zB.

CK
Parent - - By Thomas Plaschke Date 2021-11-21 12:47
Nein, das habe ich nicht.

Meine Wahl fiel auf Arena, weil man damit die Kommunikation zwischen Engine und GUI 1:1 nachvollziehen kann. Außerdem kann man mit Arena mehrere Engines parallel an einer Aufgabe rechnen lassen und außerdem wird man bei der Einrichtung von Engine-Varianten nicht vom GUI drangsaliert. Arena ist darüber hinaus das einzige GUI, dass in den Einstellungen der Engine-Parameter die Standard-, Minimal- und Maximal-Werte anzeigt. Daneben setze ich sporadisch noch die Fritz-GUIs ein, während mir die Shredder-, HIARCS- und sonstigen GUIs eigentlich mehr Verdruss als Freude bereiten (Ich habe z.B. nie verstanden, warum das Shredder-GUI so hoch gelobt wird - Verwaltung der Engines ist mMn an Umständlichkeit kaum zu überbieten.).

Viele  Grüße
Th. Plaschke
Parent - - By Clemens Keck Date 2021-11-21 15:48
Ich habe Arena eine Zeit lang für engine matches verwendet. Hauptsächlich deshalb weil die online Übertragung von Partien recht unproblematisch war.
Irgendwann kam es dann zu Problemen. Die Arena GUI wies nicht immer die eingestellte HashTabellengröße der jeweiligen engine zu. Teilweise veränderte sich die hashgröße sogar im Laufe einer Partie wenn ich mich richtig erinnere.

Die shredder GUI finde ich gut wenn man viele Partien automatisiert spielen will. Ein Abbrechen und Wiederaufnehmen des Turniers funktioniert tadellos. Außerdem können mehrere Rechner am gleichen Turnier spielen. Das ist schon einzigartig.

CK
Parent - By Thorsten Czub Date 2021-11-21 17:11
Das waren die neueren Versionen .
2.01 macht das nicht.
Das Programm wurde „verschlimmbessert“. Oder war nicht bugbereinigt.
Parent - - By Max Siegfried Date 2021-11-21 23:31
Clemens Keck schrieb:

Die shredder GUI finde ich gut wenn man viele Partien automatisiert spielen will. Ein Abbrechen und Wiederaufnehmen des Turniers funktioniert tadellos. Außerdem können mehrere Rechner am gleichen Turnier spielen. Das ist schon einzigartig.

CK

Was genau soll daran einzigartig sein?
Hast du dies schon mit der BanksiaGUI verglichen?
Parent - By Clemens Keck Date 2021-11-22 07:37 Upvotes 3
ich gebe die Frage zurück!
Hast Du die Shredder GUI mit Banksia GUI verglichen?
Können da beliebig viele Rechner übers Netzwerk am selben Turnier spielen?
Was gefällt dir bei shredder nicht? Was kann Banksia besser?

CK

Max Siegfried schrieb:

Clemens Keck schrieb:

Die shredder GUI finde ich gut wenn man viele Partien automatisiert spielen will. Ein Abbrechen und Wiederaufnehmen des Turniers funktioniert tadellos. Außerdem können mehrere Rechner am gleichen Turnier spielen. Das ist schon einzigartig.

CK

Was genau soll daran einzigartig sein?
Hast du dies schon mit der BanksiaGUI verglichen?
Parent - By Lothar Jung Date 2021-11-22 11:14
Hallo Clemens,

ich besitze Shredder 10.
Ich nehme an, daß er Online-Tuniere abwickeln kann.
Ist es erforderlich, das beide Engines auf den jeweiligen PCs auch Shredder einsetzen und/oder das gleiche Betriebssystem.
Mir geht es darum, meinen Windows-Notebook mit dem Apple MAC Mini M1 für WLAN-Tuniere einzusetzen.

Grüße

Lothar
Up Topic Hauptforen / CSS-Forum / Leistungsabfall von Stockfish 14.1
1 2 Previous Next  

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill