RYBKA
 ••• Aktuelle Position: Persistent Hash
 
Startseite
Rybka-Engine
Installation
Downloads
Links
Rybkateam
Kontakt
one


Nach oben
Rybka 3 Persistent Hash

Einführung:

Rybkas Fähigkeit dauerhafte Hashtabellen zu speichern, versetzt Rybka in die Lage von ihrer vorangegangenen Arbeit zu profitieren, wenn sie aufgefordet wird Positionen zu analysieren, deren Einschätzung von bereits vorberechneten Stellungen abhängt. Diese dauerhaften Hashtabellen machen Rybka in diesen Fällen effizienter.

Das meiste dieser dauerhaften Hashtabellenfähigkeit läuft naht- und reibungslos, ohne daß der Benutzer hier übermäßig eingreifen müßte. Es gibt allerdings Fälle, in denen Benutzereingaben erfordelich sind, um die Leistungsfähigkeit dieser Option zu maximieren. Zusätzlich können Benutzer dauerhafte Hashtabellen miteinander teilen, so daß z.B. Benutzer A, von der Analyse des Benutzers B ebenfalls profitieren kann. Dauerhafte Hashtabellen können auch in eine Datei zusammen- geführt werden, so daß Benutzer A von den separaten Analyses von Benutzer B und C profitieren kann. Diese verschiedenen Szenarien sind das Thema dieses Dokuments.

Erste Schritte:

Die folgenden Schritte sind für den durchschnittlichen Benutzer durchaus genügend, um eine mehr oder weniger ausreichende Leistung zu erzielen.

1) Legen Sie Ort und Dateinamen für die permanente Hash-Datei fest. Der Pfad muß direkt zur Datei führen, es genügt nicht, nur das das Verzeichnis anzugeben. Durch Festlegung unsererseits haben dauerhafte Hash-Dateien die Endung *.rph

2) Machen sie ein Häkchen in der Box für "Persistent Hash Enabled" (Dauerhafte Hashtabellen einschalten)

3) Legen Sie Ort und Dateinamen für die Auslagerungsdatei des Hauptspeicher-Hash [Saved Has File] fest. Der Pfad muß direkt zur Datei führen, es genügt nicht, nur das das Verzeichnis anzugeben. Durch Festlegung unsererseits haben dauerhafte Hash-Dateien die Endung *.rsh

4) Wann immer Sie eine tiefe Analyse einer bestimmten Stellung durchgeführt haben und möchten, daß Rybka später auf die bereits gewonnenen Erkenntnisse zurückgreifen kann, drücken Sie den mit "Save Hash" beschrifteten Knopf im Engine Parametermenü.

5) Wenn Sie die Analyse später in den Hauptspeicher zurückladen wollen, stellen Sie sicher, daß Sie zunächst ein Häkchen in die Box für "Preserve Analysis" gemacht haben, bevor sie auf "Load Hash" klicken.

Beachten Sie, daß bei einigen neuen Benutzeroberflächen, die bspw von Chessbase oder Convekta zusammen mit Rybka verkauft werden, im Programm bereits eine Unterstützung für diese Funktionen vorhanden ist.

Einführung für Fortgeschrittene:

Der Rest des Dokumentes ist für die "Power-User" gedacht.

Hashtabellen:

Jedes topmoderne Schachprogramm hat heutzutage das, was man gemeinhin als Hashtabellen bezeichnet. Diese Begriff ist aber nicht wirklich sehr zutreffenden, da "hashing" ein sehr bekannte Alorithmus mit vielen Anwendungsmöglichkeiten ist. Wie auch immer - ein Schachprogramm speichert in diesen Tabellen zusammenfassende Erkenntnisse über bereits angerechnete Stellungen. Das Programm benutzt dann diese Erkenntnisse, wenn es später nocheinmal zu dieser Brettstellung kommt, entweder für den Fall weiterführender Berechnungen oder bei Zugumstellungen. Diese Informationen sind sehr wertvoll und tragen einiges zur Steigerung der Effizienz des Programmes bei.

Das Problem mit den o.g. Hashtabellen ist jedoch, daß sie größenbegrenzt sind, da sie ja in den Hauptspeicher des Rechners passen müssen. Einträge müssen dort oft gelöscht werden, um Platz zu machen für höherwertigere Analysen. Durch diesen Kampf der Prioritäten, füllen sich diese Tabellen schnell mit neueren Werten, während die alten Analysen oft nicht lange Bestand haben.

Allerdings möchte in vielen Fällen der Benutzer auch gerne auf Analysen zurückgreifen, die schon länger zurückliegen. Mit anderen Worten wünscht er sich also Möglichkeiten, die ältere Analysen dauerhaft reproduzierbar machen. Es gibt nun 3 Wege, die Rybka für dieses Vorhaben zur Verfügung stellt:

PRESERVE ANALYSIS:

Eine dieser Optionen, die der Benutzer von Rybka hat, ist der "PRESERVE ANALYSIS" Parameter. Wenn Sie diese Funktion aktivieren, legt Rybka mehr Wert auf gut analysierte Stellungen und weniger auf neue, nicht so gut analysierte Einträge. Dieses Schema der Prioritäten ist nicht sonderlich effektiv vom Standpunkt einer aktuell laufenden Partie aus gesehen, bei der in schneller Folge immer neue Stellungen auftauchen und danach für immer verschwinden. Bei der Partieanalyse jedoch, wo der Benutzer wiederholt zu bereits analysierten Stellungen zurückspringt dafür umso mehr.

"Preserve Analysis" ist demzufolge keine universelle Lösung.

Erstens hat es nach einiger Zeit die Tendenz, die Hashtabellen mit qualitativ hochwertigen, aber alten Einträgen zu füllen, die dann im Konflikt zu neuen, aber durchaus effizienten Werten stehen. Genau das ist dann auch der Grund, warum sie die Hashtabellen komplett löschen sollten, wenn Sie eine komplett neue Stellung analysieren möchten.

ABWÄRTS- UND AUFWÄRTSAUSBREITUNG

Bevor wir nun ins Detail der dauerhaften Hashtabellen eintauchen, stellen wir uns einmal die Frage, wann wir am meisten wolllen, daß Rybka sich an alte, bereits analysierte Stellungen erinnert. Da gibt es zwei Möglichkeiten:

Die erste ist das, was ich eine Abwärtsausbreitung nenne. In diesem Szenario hat Rybka eine gegebene Brettstellung bereits sehr detailliert berechnet und wir möchten, daß sie sich an die Details aus dieser vorangegangen Analyse erinnert. Ein Beispiel: Rybka hat seit 3 Stunden eine gegeben Position analysiert und nun wollen wir die berechnete Baumstruktur durchforsten und uns die Ergebnisse ansehen, wobei sie dann alles durch die gesammelten Datentabellen sehr schnell reproduzieren kann, ohne sie jedesmal mühsam erneut berechnen zu müssen. Der Beriff Abwärtsausbreitung bezieht sich deshalb hierbei auf die Tatsache, daß die abgerufenen Stellungen in der Baumstruktur unterhalb der analysierten (also näher am Partieende liegen Anm. d. Übersetzers) Brettstellung liegen.

Das zweite Szenario nenne ich eine Aufwärtsausbreitung. Rybka hat sich hier bereits einen Überblick über eine gegebene Brettstellung gebildet und nun wollen wir, daß sie sich an diese Analyse erinnert und auch mit in Betracht zieht, wenn wir nun Züge betrachten, die in der Abfolge VOR dieser Brettstellung liegen (also näher am Partiebeginn, Anm. d. Übersetzers). Daher bezieht sich der Begriff Aufwärtsausbreitung auf die Tatsache, daß die Analyse sich quasi rückwärts vollzieht.

Wie sich herausgestellt hat sind die Mechanismen die für Auf- bzw- Abwärtsausbreitung benötigt wurden, völlig unterschiedlich.

BENUTZUNG

HASH SPEICHERN UND LADEN

Abwärtsausbreitung hat die Eigenschaft, daß die zu speichernden Informationen eine große Volumenanforderung haben. Der Suchbaum ist gestaltet ... na wie ein Baum eben (mit Verästelungen Anm. d. Übersetzers) in geometrischer Größe. Es ist schlicht nicht möglich, alle Abwärtsausbreitungsanalysewerte auch nur eines einzigen Rechners zu speichern, ganz zu schweigen vom zusammenspielen mehrer solcher dauerhafter Hashtabellen (merge). Es ist nur möglich die Werte für eine einzelne Position (Brettstellung) oder einen Satz von Positionen zu speichern.

Dies wird in Rybka durch eine einfache Speichern und Ladenfunktion ermöglicht. Drückt der Benutzer "SAVE HASH", so wird der Inhalt der im Hauptspeicher gelagerten Hashtabelle auf Festplatte geschrieben und drückt er "LOAD HASH", wird diese auf der Festplatte gespeicherte Tabelle wieder in den Hauptspeicher geladen (und damit Rybka zur Verfügung gestellt - Anm. d. Übersetzers)

Die normale Benutzungsreihenfolge ist diese:

1) Rybka lief lange zur Analyse einer bestimmten Position oder von mehreren, aber zusammenhängenden Positionen

oder

1a) Der Benutzer analysiert zusammenhängende Stellungen mit der aktivierten Option "PRESERVE ANALYSIS"

2) Dann drückt der Benutzer "SAVE HASH" und speichert die Hauptspeichertabellen auf Disk.

3) Später dann drückt er "LOAD HASH" und holt sich die Daten so in den Hauptspeicher zurück und setzt seine Arbeit fort.

[Anmerkung des Übersetzers: Temporäre Hashtabellen, wie sie im Hauptspeicher verwendet werden, werden gelöscht, sobald die Engine entladen wird. Man speichert also z.B. wenn man den Rechner über Nacht auschaltet und lädt dann am nächsten Tag einfach von der Festplatte zurück.]

Es kann erwartet werden, daß erfahrenere Benutzer sich ganze "Bibliotheken" von Hashtabellen anlegen, je nach Einsatz- und Interessengebiet. Es kann vielleicht auch erwartet werden, daß Benutzer solche gespeicherten Hashtabellen untereinander austauschen.

Im Moment bietet diese Funktion noch nicht das Verändern der Größe dieser Dateien oder das Zusammenfügen (Merging). Wenn also eine Datei geladen wird, so wird die aktuelle Hashgrößeneinstellung automatisch an die geladene Datei angepaßt. Das Zusammenfügen (Merging) wird nicht als kritische Operation angesehen, da verschiedene Dateien wohl Analysen für verschieden Positionen enthalten.

PERSISTENT HASH [Dauerhafte Hashtabelle]

Aufwärtsausbreitung hat die angenehme Eigenschaft eines geringeren Volumens. Tatsächlich kann bei Aufwärtsausbreitung bei einer gegebenen und zu Analysierenden Position, das Ergebnis stundenlanger Rechnertätigkeit, zumindest theoretisch, in einem einzigen Eintrag für die analysierte Stellung gespeichert werden. Das erlaubt es uns ein wenig ambitionierter zu sein: Bei Aufwärtsausbreitung wollen wir ALLES, automatisch und für IMMER speichern und wir wollen es mit allem zusammenfügen können, was andere Benutzer so angesammelt haben könnten. Genau dafür gibt es die dauerhafte Hashtabelle.

Die Benutzung der dauerhaften Hashtabelle ist ganz einfach:

- Der Benutzer gibt den Dateinamen und den Speicherort an

- Der Benutzer muß darauf achten, daß das Häkchen bei "PERSISTENT HASH" gesetzt ist

- Die dauerhafte Hashtabelle ist grundsätzlich auf der Festplatte gespeichert. Sie kann so groß sein, wie der freie Festplattenspeicher. Festplattenleistung kann ignoriert werden, da sie im Vergleich zur einer Baumstruktur nicht ins Gewicht fällt.

- Der "PERSISTENT HASH RESET" Parameter löscht die Inhalte der dauerhaften Hashtabelle.

- Um zwei dauerhafte Hashtabellen zusammenzuspielen, setzen Sie den Pfad zur zweiten Datei und drücken Sie "MERGE".

- Wenn am angegebenen Ort eine dauerhafte Hashtabelle unter dem angegebenen Namen exisiert, wird diese von Rybka benutzt. Ansonsten wird automatisch eine neue, leere Datei angelegt. [Anm. d. Übersetzers: Nur wenn das Häkchen gesetzt ist.]

- Um ohne dauerhafte Hashtabelle zu arbeiten, lassen sie das Häkchen in der Box einfach weg. Dies ist auch die Voreinstellung.

- Der "PERSISTENT HASH SIZE" [Größe der dauerhaften Hashtabelle auf Disk], wird unter zwei Umständen benötigt: Wenn mit dauerhafter Hashtabelle gearbeitet werden soll, aber keine unter dem angegebenen Namen aufgefunden wird, so wird eine neue unter der angegebene Größe erstellt, oder wenn der Benutzer einer Größenänderung manuell anordnet [RESIZE]. [Anm. des Übersetzers: Sichbar wird der Effekt aber möglichweise erst, wenn sie das Programm verlassen!]

- Der "PERSISTENT HASH WRITE DEPTH" Parameter gibt die Frequenz des Speicherverhaltens an. Je höher dieser Wert ist, umso geringer die Speicherfrequenz. [Anm. d. Übersetzers: Wenn Sie z.B. 11 eintragen, dann fängt Rybka an ab Rechentiefe 11 die Erkenntnisse auf die Festplatte, also in die dauerhafte Hashtabelle zu schreiben.]

- Der "PERSISTENT HASH PLAY DEPTH" Parameter teilt Rybka mit, ab welcher Tiefe ein Zug ohne weitere Berechnungen in einer laufenden Partie ausgespielt werden kann, wenn in der dauerhaften Hashtabelle sich bereits ein Eintrag von der gewünschten Tiefe existiert. Diese Einstellung sollte mit den Zeitvorgaben abgeglichen sein. [Anm. d. Übersetzers: Diese Funktion funktioniert durch einen Fehler leider nicht. Wahrscheinlich ist es am besten, den "Persistent Hash" für Spiele auf einem Schachserver deshalb zu deaktivieren.]

WARTUNG DER DAUERHAFTEN HASHTABELLE

Die einfachste Art und Weise für den Benutzer sich mit der dauerhaften Hashtabelle zu befassen, ist sie einmal einzurichten, vielleicht ab und zu Tabellen von anderen Beutzern hinzuzuladen, oder alles einfach, wenn es einmal läuft, in Ruhe zu lassen.

Es gibt aber durchaus Argumente für Benutzer, die dauerhafte Hashtabelle regelmäßig zu warten. In gewissen Abständen kann er seine Dauerhafte Hashdatei archivieren und sie mit seiner aktuellen später wieder zusammenspielen. Das kann unter bestimmten Bedingungen hilfreich sein:

Fehlt noch: erklären, warum das so ist.

Zusätzlich gibt es Gründe für verschiedene Positionen, verschieden dauerhafte Hashdateien zu speichern. Im Gegensatz zu "HASH SPEICHERN UND LADEN", wo dies Pflicht ist, bringt es bei dauerhaften Hashdateien weniger Erfolg. Dieses Thema muß ich noch weiter recherchieren.

Fehlt noch: erklären, warum das so ist.

Übersetzung: Michael Wäsch