Interview mit Onno Garms (Deutschland)
Programmierer von Onno

25.12.2009
von Onno Garms & Frank Quisinsky

onno-garms Onno Garms (Deutschland)

Als eine neue Engine sorgte Onno von Onno Garms im Jahr 2009 für Aufsehen. Bekannte kommerzielle Engines wie ChessTiger, Gandalf, Ruffian oder Junior werden von Onno problemlos vom Brett gefegt. Onno steht aktuell in Version 1.1.1 kommerziell zur Verfügung und belegt derzeit Platz 13 der SWCR. Onno Garms platzierte Onno 1.1.1 also sehr schnell unter den TOP 15 der besten Schachprogrammen der Welt.

Grund genug nachzufragen ...

Onno Chess (Onno Garms, Deutschland)
http://www.onnochess.com/

01.
Frank Quisinsky

Nach Deinen Ankündigungen arbeitest Du derzeit an der Mehrprozessorumsetzung. Wie schwierig ist diese Umsetzung für Dich?

Onno Garms
Wie jeder Schachprogrammierer weiß, stellt die Parallelisierung des inhärent seriellen Alpha-Beta-Algorithmus eine besondere Herausforderung dar. Andererseits gibt es brauchbare Veröffentlichungen zu den Verfahren, sodass ich nichts selbst erfinden muss. Die programmiertechnische Umsetzung bleibt aber wesentlich schwieriger als bei einem Verfahren, das von Natur aus gut parallelisierbar ist. Onno hatte bereits in Version 1.0 eine Suchschleife statt einer rekursiven Funktion. Das macht die Parallelisierung einfacher, da man jederzeit problemlos auf den Stack zugreifen kann. Dass es mit der MP-Version so lange dauert, liegt nicht nur an der Komplexität dieser Aufgabe, sondern auch daran, dass sich in meinem Privatleben 2009 einiges getan hat (unter anderem bin ich umgezogen), dass ich Tablebases entgegen der ursprünglichen Planung zuerst gemacht habe und daran, dass es nach dem ersten Release doch immer noch mal wieder ein Detail nachzubessern gab.

02.
Frank Quisinsky

Wird Deine neue Version als Update zur aktuellen Version 1.1.1 oder als Version 2 kommerziell erscheinen? Wird es im Fall einer neuen Version Update-Preise für Deine Kunden geben?

Onno Garms
Selbstverständlich werde ich mein Versprechen einlösen, dass Altkunden das MP-Update kostenlos erhalten. Aus technischen Gründen (Gültigkeit des Lizenzfiles) muss es die Versionsnummer 1.2 tragen. Für Neukunden wird es ab dem Erscheinen der MP-Version teurer. In späteren Versionen wird es spezielle Update-Preise für Altkunden geben, aber das ist noch Zukunftsmusik.

03.
Frank Quisinsky

Optimierst Du Onno hinsichtlich 32-Bit / 64-Bit gleich oder legst Du Schwerpunkte?

Onno Garms
Onno ist zunächst auf 64-Bit optimiert, denn die Zukunft gehört 64-Bit. Erst als die 64-Bit Version fertig war, habe ich geguckt, wo kleine Unterroutinen waren, bei denen der Aufwand, für 32-Bit eine Spezialversion zu machen, und der zu erwartende Performancegewinn in günstigem Verhältnis stehen. So ist die 32-Bit Version etwas schneller als wenn ich einfach die 64-Bit Version für eine 32-Bit CPU kompiliert hätte. Entscheidend bei allen derartigen Anpassungen war für mich aber immer, dass erstens die 64-Bit Version auch nicht das kleinste bisschen langsamer wird, und zweitens, dass die Menge des Codes, den ich in zwei Versionen pflegen muss, nicht zu groß wird.

04.
Frank Quisinsky

Hast Du sonst Änderungen an Deinem Programm durchgeführt? Glaubst Du nach Deinen bisherigen eigenen Eindrücken selbst an eine weitere Spielstärkeverbesserung? Onno ist ja noch ein sehr neues kommerzielles Produkt und die Einstiegsratings waren fantastisch, die Community wird Dir gespannt und kritisch auf die Hände schauen.

Onno Garms
Die dringendsten Änderungen seit 1.0 sind in den Folgeversionen bis 1.1.1 eingeflossen. Daher wird in 1.2 wirklich nur MP hinzukommen. Ich habe aber durchaus schon länger Ideen auf meiner Liste, wie Onno stärker wird, und durch das Feedback meiner Beta-Tester sind auch in jüngerer Zeit weitere Ideen hinzugekommen. Ich glaube daher unbedingt an eine weitere Spielstärkeverbesserung.

05.
Frank Quisinsky

Gibt es Konkurrenzprodukte mit denen Du dich selbst gerne beschäftigst bzw. bevorzugt im Spiel gegen Onno einsetzt?

Onno Garms
Ich teste gegen ein Set aus ca. 10 Fremd Engines. Ab und an fliegt mal eine raus und eine andere oder eine neue Version kommt dafür rein. Kriterien sind, dass die Engines möglichst verschieden sein sollen, dass sie unter Linux / Wine laufen (wobei ich vorhabe, meine Tests demnächst auf Windows umzustellen), stabil sind und nicht allzu schwach. Wenn es übersichtlichen Quellcode zu einer starken Engine gibt wie bei Fruit / Toga und Glaurung / Stockfish, lohnt es sich, dass ich mich damit näher beschäftige. Schon bei Crafty kommt nicht wirklich Freude auf; mit dem Code muss man wohl gemeinsam gewachsen sein, um ihn gut pflegen zu können. Und eine Beschäftigung mit dem mutmaßlich durch Reverseengineering aus Rybka entstandene Code würde mir erst recht keinen Spaß machen. Stilanalyse fremder Engines mache ich gar nicht.

06.
Frank Quisinsky

Wie charakterisierst Du selbst den Spielstil von Onno? Gibt es z. B. Schwerpunkte (Taktik, Position, Strategie, Endspiel) die Du auch bei der Programmentwicklung bevorzugst?

Onno Garms
Meine Tester bestätigen, dass Onno ein besseres Positionsverständnis hat als die meisten anderen Engines. Den größten Verbesserungsbedarf gibt es im Bereich Taktik. Da habe ich auch eine konkrete Idee, wie ich die verbessern kann. Die ist aber recht umfangreich in der Umsetzung und wird daher nicht in die 1.2 einfließen können. Außerdem wird natürlich auch die Nutzung von MP die Taktik verbessern. An der Zeiteinteilung muss - insbesondere bei offensichtlichen Zügen - auch was getan werden.

07.
Frank Quisinsky

Warum spielt Onno 1.1.1 besser als Fruit ?

Onno Garms
Die Engine, mit der ich mich am intensivsten beschäftigt habe, war Toga, was ja an sich schon stärker als die freien Fruit Versionen ist. Auch wenn ich Onno von Grund auf neu geschrieben habe, könnte ich mir vorstellen, dass man Onno anmerkt, wie ich in die Schachprogrammierung eingestiegen bin. Die meisten Tester berichten allerdings, dass Onno einen völlig anderen Stil spielt. Durch den Start von Grund auf konnte ich einen noch besser modularisierten Code schreiben, für den es auch Unittests gibt. Ich glaube daher, dass Onno vergleichsweise wenige Bugs enthält. In Toga sind dagegen einige Bugs drin. In Fruit habe ich noch keine gefunden. Onno enthält wenig Revolutionäres, sondern ist hauptsächlich das Resultat ordentlichen Softwareengineerings. Als Bitboard-Engine ist Onno zumindest unter 64 Bit schneller als Toga. Auf dem Wurzelknoten sucht Onno anders als die übrigen mir bekannten Engines. Es gibt auf inneren Knoten eine neue Pruning-Art zusätzlich zu den altbekannten, die sich in jeder Engine finden. Die Gewichte der Bewertungsfunktion sind zum Teil automatisch eingestellt. Mein Motto: Steter Tropfen höhlt den Stein.

Die MP-Version von Onno wird Young-Brothers-Wait verwenden. Die Parallelisierungsmethode in Toga ist dagegen erstens vom Konzept her sehr naiv und zweitens chaotisch implementiert. Ich habe mir auch die Parallelisierung in Glaurung angesehen. Die ist wesentlich besser als die Methode in Toga, aber ich habe mich schließlich für einen anderen Ansatz entschieden.

08.
Frank Quisinsky

Schaust Du Dir viele Benutzeroberflächen an und prüfst ob Onno als UCI Engine lauffähig ist? Welche ist Deine bevorzugte GUI für die Testarbeit rund um Onno?

Onno Garms
Die Funktionstüchtigkeit von Onno habe ich ursprünglich nur im Shredder-GUI getestet. Von meinen Beta-Testern und den ersten Kunden kamen dann einige negative Rückmeldungen zum Fritz-GUI. Onno lief zwar meistens, aber es gab ein paar Ecken und Kanten. Da das Fritz-GUI sehr verbreitet ist, habe ich Onno auch daran angepasst, auch wenn ich eigentlich eher Chessbase in der Verantwortung für die Stolpersteine sehen würde. In Arena und SCID lief Onno auf Anhieb, in ChessGUI, nachdem ein Bug im GUI behoben wurde. Summa summarum habe ich also Shredder, Arena, SCID und ChessGUI selbst getestet, und Fritz über meine Beta-Tester. Wenn ich die Spielstärke von Onno testen will, kommt es darauf an, was genau ich machen will. Für Turniere nehme ich das Shredder-GUI. Für andere Zwecke kommt SCID zum Einsatz. Außerdem habe ich noch zwei selbstgeschriebene Kommandozeilenprogramme, die über das UCI- oder XBoard-Interface mit Engines kommunizieren können. Gab halt kein Programm, das genau die Tests fahren konnte, die ich haben wollte.

09.
Frank Quisinsky

Du wirst 6 Monate nach Sibirien strafversetzt weil Onno in einem  Engine Match gegen Rybka 3 verloren hat. Was nimmst Du alles mit?
Anmerkung: Wahrscheinlich kommt er mit einem Sack voller gefundener Diamanten zurück.

Onno Garms
Ich bin mit meiner Arbeit weitgehend ortsunabhängig. Meine streichholzschachtelgroße externe Festplatte umgesteckt, und schon kann es an jedem Rechner weitergehen. Darüber hinaus habe ich nur ein Ringbuch mit handgeschriebenen Zetteln, und das brauche ich auch nicht so super dringend.

10.
Frank Quisinsky

Dein schachliches Vorbild ist?

Onno Garms
Ich spiele ja nicht mehr selbst Schach. Das Wissen aus meiner Zeit als jugendlicher Turnierspieler hilft natürlich schon ab und an. Ein schachliches Vorbild habe ich nicht. In meiner Jugend war ich von Judit Polgar fasziniert, die ja auch etwa in meinem Alter ist.

11.
Frank Quisinsky

Wie hast Du mit Schach begonnen?

Onno Garms
Ich war ein sehr enthusiastischer Schachspieler in meiner Jugend. Es muss im Alter von etwa sieben gewesen sein, als mich der Schachcomputer meines Vaters (ein Commodore Chessmate) faszinierte, der jeden Zug mit vier Tönen ankündigte (die das Ausgangs- und Zielfeld anzeigten) und drei verschiedene Melodien für Schach, Schachmatt setzen und Schachmatt gesetzt werden spielte. Der Computer spielte schwach, aber ich auch, und so war er ein guter Partner, um das Spiel zu lernen, da er mir bald Erfolgserlebnisse gab. Ich spielte auch mit meinem Vater. Er war ein guter Lehrer und ließ mich nie absichtlich gewinnen. Später lernte ich, meinen Vater und seinen neuen Schachcomputer, einen Mephisto II, zu schlagen. Im Alter von 13 verwendete ich die Ersparnisse mehrerer Jahre, um einen Mephisto MM IV zu kaufen, und verbrachte Tage damit, nur mit ihm zu spielen. Im Alter von 14 trat ich einem Schachverein bei, der Bremer Schachgesellschaft. Ich brachte es bis in die erste (Erwachsenen-)Mannschaft des Vereins. In meiner Altersklasse war ich unter den Besten in Bremen. 1989 gewann ich die inoffizielle Norddeutsche C-Jugend-Meisterschaft, was mir als erste Wertungszahl Ingo 94 (umgerechnet Elo 2088) einbrachte. In den folgenden Jahren war ich weniger erfolgreich und sah meine Wertungszahl sich verschlechtern. Auch ließ die Schule weniger Freizeit als in jüngeren Jahren und ich entdeckte Mathematik und Computer als neue Hobbys. So besuchte ich den Schachverein weniger oft und hörte im Alter von 18 schließlich ganz zu spielen auf.

12.
Frank Quisinsky

Wie hast Du mit der Schachprogrammierung begonnen?

Onno Garms
Ich brachte mir selbst im Alter von 16 das Programmieren bei, in BASIC auf einem C64. Die Idee, ein Schachprogramm zu schreiben, war bald verlockend, aber jenseits meiner Fähigkeiten jener Tage. Später lernte ich PASCAL und versuchte, ein Programm für Vier gewinnt zu schreiben. Ohne eine spezifische Anleitung über Spielprogrammierung scheiterte ich. Zwar hatte ich Minmax selbst erfunden, aber das ist natürlich nicht genug für ein Programm, um gut zu spielen. So legte ich die Idee, ein Schachprogramm zu schreiben, beiseite und konzentrierte mich auf andere Programme. Nach der Schule studierte ich Mathematik. Ich begann in Bremen und wechselte zum Hauptstudium nach Bonn. Ich schloss mit einer Diplomarbeit ab, die die Implementierung zahlentheoretischer Algorithmen in C beinhaltete. Nach der Universität hatte ich Glück, eine Arbeit zu finden, wo ich weiterhin Algorithmen implementieren konnte, jetzt für Diskrete Optimierung. Direkt nachdem ich meine Promotion (auch über Algorithmen für praktische Probleme) abgeschlossen hatte, entschloss ich mich, meine neu erworbenen Fähigkeiten zu nutzen, um Schach wieder aufzunehmen und es auf Wettbewerbsniveau zu betreiben.

Frank Quisinsky
Vielen Dank für Deine Zeit Onno.
Die SCHACHWELT wünscht Dir und Deiner Familie ein frohes Weihnachtsfest und weiterhin viel Erfolg mit Onno.

Copyrights and Sources by http://www.schach-welt.de & Frank Quisinsky

Note:
Further publication of this interview is allowed and wished,
but with the permission of http://www.schach-welt.de only.
One condition is the complete casting (e.g. inprinted media).

Frank Quisinsky, 25.12.2009