-------Achtung: Wall of Text--------------------------------------------
Ich möchte hier mein vorraussichtliches Facharbeitsthema vorstellen:
Eine Schachengine, welche mehr oder wenige Brute Force mäßig spielen wird, da ich weder Zeit noch Erfahrung habe, um komplexe Stellungserkennungsalgorithmen o.ä einzubauen.
Vereinfacht gesagt wird sie Varianten suchen, in denen sie Materialvorteil besitzt und diese auswählen.
Kleinere Verbesserungsideen besitze ich natürlich, aber viel mehr werde ich wohl nicht schaffen.
Da die Variantenanzahl aber exorbitant zunimmt kam ich auf die Idee die GPU einzubinden.
Wie ich das ganze umsetze weiß ich noch nicht, aktuell scheint mir aber das UCI Protokoll am einfachsten, da ich dann mein Fritz/Houdini Gui nutzen kann.
Die "Nutzungsanleitung" die ich hier gefunden habe fand ich nicht sonderlich schwer umzusetzen:
http://www.shredderchess.de/schach-info/features/uci-universal-chess-interface.html
Der Grund warum ich das ganze vorhab ist folgender:
IT interessiert mich und grundkentnisse besitzte ich bereits (Gerade dabei mein 1. Semester abzuschließen, dazu vorkentnisse in C++)
Schach vorkentnisse natürlich auch (DWZ 1900-2000)
Somit könnte ich beides verbinden. Als Wissenschaftlichen Hintergrund würde ich Erklärungen über GPGU einbauen und deren nutzen in der Wissenschaft. Als Bsp würde ich u.a Boinc projekte aufführen.
Das Schachprogramm soll daher nur ein Beispiel für die Leistungsfähigkeit dieser "Idee" (GPGU) sein.
Umsetzen würde ich das wahrscheinlich durch openCL (ziehe AMD vor, besitzte auch selbst eine AMD graka), wenn ich es nicht schaffe mir in den 3 Monaten die Grundkentnisse anzueignen bleibe ich bei CUDA wo ich bereits grundkentnisse besitze und die Uni server nutzen kann (2 x 4-way SLI )
Die entsprechende Nvidia hardware könnte ich über die Uni server nutzen.
Abschließend möchte ich sagen, dass mir klar ist das das gesamte Projekt deutlich umfangreicher werden dürfte als bei einem normalen Thema.
Das stört mich aber nicht weiter, es sind beides Hobbys von mir und ich hatte onehin vor in den nächsten Monaten eine Engine zu schreiben, die mich besiegen soll.
Da noch die GPU berechnungen einzufügen dürfte kein zu großer Mehraufwand sein, wenn ich dadurch die Facharbeit gleich mit erleidige. Der Lehrer ist einverstanden.
Falls ihr irgendwelche Anmerkungen, anregungen, vereinfachungsvorschläge oder ähnliches habt immer her damit, ich bin für jegliche Kritik dankbar
Ich möchte hier mein vorraussichtliches Facharbeitsthema vorstellen:
Eine Schachengine, welche mehr oder wenige Brute Force mäßig spielen wird, da ich weder Zeit noch Erfahrung habe, um komplexe Stellungserkennungsalgorithmen o.ä einzubauen.
Vereinfacht gesagt wird sie Varianten suchen, in denen sie Materialvorteil besitzt und diese auswählen.
Kleinere Verbesserungsideen besitze ich natürlich, aber viel mehr werde ich wohl nicht schaffen.
Da die Variantenanzahl aber exorbitant zunimmt kam ich auf die Idee die GPU einzubinden.
Für alle die sich bzgl GPGU nicht auskennen, kurz die Theorie: ein Prozessor (CPU) besitzt heutzutage meist 2 oder 4, theoretisch sogar bis zu 8 Kerne, welche von Schachprogrammen meist voll genutzt werden.
Eine GPU ist darauf ausgelegt über 10.000 Berechnungen gleichzeitig auszuführen und besitzt entsprechend viele "Kerne". Diese sind viel Schwächer (können weniger Befehle umsetzen) als die der CPU, die Kerne sind dafür aber in der Masse sehr leistungsstark.
Das dürfte auch der Grund sein, warum Houdini und co. sie nicht ausnutzen.
So einfach wie mein Programm aber gestrickt ist, sollten die Einschränkungen kein Problem sein.
Eine GPU ist darauf ausgelegt über 10.000 Berechnungen gleichzeitig auszuführen und besitzt entsprechend viele "Kerne". Diese sind viel Schwächer (können weniger Befehle umsetzen) als die der CPU, die Kerne sind dafür aber in der Masse sehr leistungsstark.
Das dürfte auch der Grund sein, warum Houdini und co. sie nicht ausnutzen.
So einfach wie mein Programm aber gestrickt ist, sollten die Einschränkungen kein Problem sein.
Wie ich das ganze umsetze weiß ich noch nicht, aktuell scheint mir aber das UCI Protokoll am einfachsten, da ich dann mein Fritz/Houdini Gui nutzen kann.
Die "Nutzungsanleitung" die ich hier gefunden habe fand ich nicht sonderlich schwer umzusetzen:
http://www.shredderchess.de/schach-info/features/uci-universal-chess-interface.html
Der Grund warum ich das ganze vorhab ist folgender:
IT interessiert mich und grundkentnisse besitzte ich bereits (Gerade dabei mein 1. Semester abzuschließen, dazu vorkentnisse in C++)
Schach vorkentnisse natürlich auch (DWZ 1900-2000)
Somit könnte ich beides verbinden. Als Wissenschaftlichen Hintergrund würde ich Erklärungen über GPGU einbauen und deren nutzen in der Wissenschaft. Als Bsp würde ich u.a Boinc projekte aufführen.
Das Schachprogramm soll daher nur ein Beispiel für die Leistungsfähigkeit dieser "Idee" (GPGU) sein.
Umsetzen würde ich das wahrscheinlich durch openCL (ziehe AMD vor, besitzte auch selbst eine AMD graka), wenn ich es nicht schaffe mir in den 3 Monaten die Grundkentnisse anzueignen bleibe ich bei CUDA wo ich bereits grundkentnisse besitze und die Uni server nutzen kann (2 x 4-way SLI )
Die entsprechende Nvidia hardware könnte ich über die Uni server nutzen.
Abschließend möchte ich sagen, dass mir klar ist das das gesamte Projekt deutlich umfangreicher werden dürfte als bei einem normalen Thema.
Das stört mich aber nicht weiter, es sind beides Hobbys von mir und ich hatte onehin vor in den nächsten Monaten eine Engine zu schreiben, die mich besiegen soll.
Da noch die GPU berechnungen einzufügen dürfte kein zu großer Mehraufwand sein, wenn ich dadurch die Facharbeit gleich mit erleidige. Der Lehrer ist einverstanden.
Falls ihr irgendwelche Anmerkungen, anregungen, vereinfachungsvorschläge oder ähnliches habt immer her damit, ich bin für jegliche Kritik dankbar