PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schach-Engine mit Power der Grafikkarte


2phil4u
2013-11-25, 23:29:32
Ich habe mich etwas mit den neuen Schachengines beschäftigt und sie sind halt für CPUs geschrieben.
Das Ganze wird in Bauern berechnet, wobei die Stellungsbewertung Sachen wie Bauernsicherheit, offene Linien, usw mitberechnet.

Je nachdem wie genau mal eine bestimmte Stellung analysiert, geht mehr oder weniger Rechenkraft verloren.

Positinonelle Vorteile koennen sich so bei geringerer Stellungsanalyse durch das Mehr an berechneten Moeglichkeiten eh in Material niederschlagen.

Meine Idee.

Man lässt die Grafikkarte mitrechnen.

Habe ich bsp eine sehr starke Grafikkarte, koennte ich die CPU eine Stellung von der Grafikkarte bewerten lassen.

Die rechnet dann bsp 3 Zuege alle Moeglichkeiten durch incl einer grosszügigen Analyse aller moeglichen Stellungen.

So koennte man die Tflops der Grafikkarten nutzen.

Für Laien.

Der beste Schachspieler hat derzeit knapp 2900 Elopunkte, ein System das ihr selbst googlen koennt.

Roudini hat bei 4 CPUs schon fast 3200 Elopunkt, wird also fast kein Remis mehr spielen gegen diesen genialen neuen Weltmeister.

Es gibt auch Endspieldatenbanken, derzeit bei 7 moeglichen Figuren.

Das ist nicht etwa trival, aber wenn man die 6er Datenbank hat, ist es mit Grossrechnern loessbar, auch ein Matt in 450 Zügen wurde dabei gefunden !

Was meint ihr, waere das eine Idee ?

Iruwen
2013-11-26, 00:39:16
Mich würde mal interessieren, ob Carlsens unkonventioneller und unvorhersehbarer Spielstil gegen eine Maschine auch von Vorteil wäre oder nicht. Vermutlich weniger, da der Computer das Problem komplett unemotional angeht und einfach alle Möglichkeiten durchrechnet. Sein Erfolg beruht zum Teil wohl auch auf seiner speziellen Art, man nennt ihn ja nicht umsonst das kleine Arschloch.
Ansonsten: Deep Blue und seine Software waren damals wohl auch aufgrund des hohen Grades der Parellelisierung noch etwas Besonderes, aber das war Mitte der 90er (wtf, bin ich schon so alt?)
Kurzes Googlen spuckt ja aus, dass sich eine Menge Leute damit beschäftigt, dass man GPUs dafür auch sinnvoll nutzen kann, aber dass man von einer "Lösung" des Schachspiels noch weit entfernt ist und auf absehbare Zeit auf Heuristik angewiesen sein wird.

del_4901
2013-11-26, 01:47:22
GPUs sind bei allem was primär keine Fliesskommarechnung erfordert nicht besonders gut.

aths
2013-11-26, 02:08:00
Ich habe mich etwas mit den neuen Schachengines beschäftigt und sie sind halt für CPUs geschrieben.
Das Ganze wird in Bauern berechnet, wobei die Stellungsbewertung Sachen wie Bauernsicherheit, offene Linien, usw mitberechnet.

Je nachdem wie genau mal eine bestimmte Stellung analysiert, geht mehr oder weniger Rechenkraft verloren.

Positinonelle Vorteile koennen sich so bei geringerer Stellungsanalyse durch das Mehr an berechneten Moeglichkeiten eh in Material niederschlagen.

Meine Idee.

Man lässt die Grafikkarte mitrechnen.

Habe ich bsp eine sehr starke Grafikkarte, koennte ich die CPU eine Stellung von der Grafikkarte bewerten lassen.

Die rechnet dann bsp 3 Zuege alle Moeglichkeiten durch incl einer grosszügigen Analyse aller moeglichen Stellungen.

So koennte man die Tflops der Grafikkarten nutzen.

Für Laien.

Der beste Schachspieler hat derzeit knapp 2900 Elopunkte, ein System das ihr selbst googlen koennt.

Roudini hat bei 4 CPUs schon fast 3200 Elopunkt, wird also fast kein Remis mehr spielen gegen diesen genialen neuen Weltmeister.

Es gibt auch Endspieldatenbanken, derzeit bei 7 moeglichen Figuren.

Das ist nicht etwa trival, aber wenn man die 6er Datenbank hat, ist es mit Grossrechnern loessbar, auch ein Matt in 450 Zügen wurde dabei gefunden !

Was meint ihr, waere das eine Idee ?
Grafikkarten sind zum Rechnen dann gut, wenn du dieselbe Operationsfolge auf große Mengen an Daten anwenden willst. Die Sprung-Performance hat sich zwar in den letzten GPU-Generationen wenn ich das richtig verstanden habe deutlich verbessert, doch ich weiß nicht wie effizient Zugvorausberechnung wäre.

Du musst ja jeweils den Zuggenerator aufrufen, der eine Liste gültiger Züge berechnet. Dazu klappert man jede Figur ab und je nach dem um welche Figur es sich handelt, wird sie so lange in jede Richtung gezogen bis sie auf eine andere trifft. Springer brauchen eine etwas andere Berechnung. Die Schach-Abfrage muss noch mit rein, sowie die Bauern-Schlagmöglichkeit en passant. Und die Rochade.

Danach müsste man jeden Zug ausprobieren und die sich ergebende Stellung bewerten. Das Material ist ja leicht zu berechnen und der Stellungsvorteil auch, in dem man schaut wie viele mögliche Züge man im Vergleich zum Gegner jeweils hat. Doch all das zieht etliche Speicher-Lese- und Schreibe-Operationen nach. Ich weiß nicht, wie gut ein CPU-Cache das wegfedert und wie es mit der Performance bei kleinen Datensätzen von variabler Länge aussieht.

Coda
2013-11-26, 02:27:56
GPUs sind bei allem was primär keine Fliesskommarechnung erfordert nicht besonders gut.
Wieso?

32 Bit Integer sind vlt immer noch langsamer als float, aber wenn das Problem parallel genug ist dürfte die GPU immer noch deutlich schneller sein.

del_4901
2013-11-26, 03:24:16
Wieso?

32 Bit Integer sind vlt immer noch langsamer als float, aber wenn das Problem parallel genug ist dürfte die GPU immer noch deutlich schneller sein.
Es ist ja nicht nur das weniger Einheiten vorhanden sind, es sind vor allem auch der Branch predictor und caching, da ist eine schneller getaktete CPU dann doch vorn.

Iruwen
2013-11-26, 12:04:31
For larger levels, however, we observe that the GPU performance degrades. When profiling the code, we identified I/O access as one limiting factor.
Link (http://artent.net/blog/2013/07/28/game-tree-with-a-gpu/)
Ist man mit einer CPU nicht genauso I/O limitiert wie mit einer GPU?

The program will work only on Nvidia GK110 or later as it uses CUDA dynamic parallelism (currently GTX 780, GTX Titan, or more expensive server class K20/K20X GPUs).
Link (http://www.talkchess.com/forum/viewtopic.php?t=48387&postdays=0&postorder=asc&topic_view=flat&start=0)
=> Dynamic Parallelism in CUDA (http://developer.download.nvidia.com/assets/cuda/files/CUDADownloads/TechBrief_Dynamic_Parallelism_in_CUDA.pdf), geht das erst seit GK100?

https://github.com/smatovic/Zeta
Offensichtlich eine funktionierende OpenCL Engine.

Gipsel
2013-11-26, 17:39:03
Es ist ja nicht nur das weniger Einheiten vorhanden sind, es sind vor allem auch der Branch predictor und caching, da ist eine schneller getaktete CPU dann doch vorn.Das (branch prediction [machen GPUs überhaupt nicht] und Caching, also die Gründe, warum eine Schach-Engine nicht gut für GPUs geeignet ist) hat aber nichts mit Deinem float vs. integer Argument zu tun.
Bei AMD GPUs sind Integer-Operationen übrigens exakt genauso schnell (und haben den gleichen Durchsatz) wie float-Operationen. Einzige Ausnahme sind 32bit x 32bit Multiplikationen bzw. MADs wegen der größeren "Mantisse" als bei floats, 24Bit Multiplikationen gehen z.B. mit voller Rate. Der Integer-Durchsatz bei nV ist für viele Operationen auch nur wenig geringer, die für Kryptoanwendungen wichtigen Bitshifts und Rotates (bei AMD full rate) haben allerdings erst mit den neuesten Keplers etwas aufgeholt und hatten bei nV tatsächlich einen relativ geringen Durchsatz (wie man an jedem Benchmark eines Bitcoin-Miners sehen konnte). Nichtsdestotrotz ist das nicht der ausschlaggebende Punkt.

del_4901
2013-11-26, 18:34:18
Das (branch prediction [machen GPUs überhaupt nicht] und Caching, also die Gründe, warum eine Schach-Engine nicht gut für GPUs geeignet ist) hat aber nichts mit Deinem float vs. integer Argument zu tun.
Bei AMD GPUs sind Integer-Operationen übrigens exakt genauso schnell (und haben den gleichen Durchsatz) wie float-Operationen. Einzige Ausnahme sind 32bit x 32bit Multiplikationen bzw. MADs wegen der größeren "Mantisse" als bei floats, 24Bit Multiplikationen gehen z.B. mit voller Rate. Der Integer-Durchsatz bei nV ist für viele Operationen auch nur wenig geringer, die für Kryptoanwendungen wichtigen Bitshifts und Rotates (bei AMD full rate) haben allerdings erst mit den neuesten Keplers etwas aufgeholt und hatten bei nV tatsächlich einen relativ geringen Durchsatz (wie man an jedem Benchmark eines Bitcoin-Miners sehen konnte). Nichtsdestotrotz ist das nicht der ausschlaggebende Punkt.
Damit erzaehlst du mir nicht wirklich was neues. Allein mit den Arithmetischen und Logischen Operationen kommt man aber nicht weit. Sicherlich war es auch etwas vereinfacht ausgedrueckt von mir.

Gipsel
2013-11-26, 19:36:13
Damit erzaehlst du mir nicht wirklich was neues. Allein mit den Arithmetischen und Logischen Operationen kommt man aber nicht weit.Ja, man kommt in etwa genau so weit, wie bei float-lastigen Workloads. Ob irgendwas "branchig" ist oder nicht [das meint hier inkohärente Branches, wodurch die SIMD-Nutzung der GPUs völlig zusammenbricht] bzw. große Caches liebt, hat eben nicht direkt damit zu tun, ob man mit Floats oder Integern rechnet. Darum ging es bei Codas Einwurf ;).

Oid
2013-11-29, 10:08:21
Mich würde mal interessieren, ob Carlsens unkonventioneller und unvorhersehbarer Spielstil gegen eine Maschine auch von Vorteil wäre oder nicht.

Ich denke sein Stil ist eher ein Nachteil, weil er keinen besonders großen Wert auf Eröffnungen legt. Vielleicht erarbeitet sich ein Rechner dann eher Vorteile am Anfang des Spiels, die Carlsen dann halt nicht mehr aufholen kann.

Aber wer weiß das schon, früher oder später wird jemand Carlsen genug Geld bieten, um sich mit dem aktuellen Stand der Technik zu messen :)

Inquisitor
2013-11-30, 11:09:22
Ihr macht mir Freude :freak: Ich habe damals schon fast keine Chance gegen mein Schachprogramm aufm C64 gehabt und ihr wollt das ganze jetzt noch GPU-Beschleunigen :freak:

Kladderadatsch
2013-11-30, 11:29:08
Ich denke sein Stil ist eher ein Nachteil, weil er keinen besonders großen Wert auf Eröffnungen legt. Vielleicht erarbeitet sich ein Rechner dann eher Vorteile am Anfang des Spiels, die Carlsen dann halt nicht mehr aufholen kann.
egal ob cpu und gpu, mit seiner zermürbungs-taktik würde er auf seinen meister treffen:D

2phil4u
2013-12-07, 19:14:45
Meine Idee koennte man aber so realisieren.
Die CPU hat eine bestimmte Stellung und schickt der Grafikkarte zu dieser Stellung ganz gezielt Aufgaben, die diese berechnen kann, bsp einfach 1000 verschieden Positionen zur Bewertung.
Flaschenhals ware natürlich noch die Verzoegerung per Interface.

Irgendwo hat mal einer ausgerechnet, wieviel Elo die perfekte Maschiene haette.
Er hat einfach geschaut, was jeweils eine Verdoppelung der Knoten bringt bis zu seiner Grenze und danach halt weitergerechnet.

4670 Elo, müsst ihr euch mal vorstellen.

Aber haengt die Elozahlt nicht davon ab, wieviele so gut spielen ?

Ich meine, waren alle Menschen im Schnitt 2000 Elo(jetzt Zeit) stark, haetten die doch auch nur so 1000-1200 ?

MasterElwood
2013-12-08, 09:45:44
Dachte Schachprogramme bei heutiger Hardware sind dem Menschen schon weit überlegen.

Gibts überhaupt noch Bedarf für große Verbesserungen? Mehr als dauernd gewinnen kann man ja nicht...

interzone
2013-12-08, 10:27:42
Das finale Schachprogramm wird man auch nicht mehr theoretisch schlagen können.
Die Frage ist nur, welche Rechenleistung dafür notwendig ist, und wie die Engine Stellungen bewerten muss.

hartcore
2013-12-11, 14:02:56
Dachte Schachprogramme bei heutiger Hardware sind dem Menschen schon weit überlegen.

Gibts überhaupt noch Bedarf für große Verbesserungen? Mehr als dauernd gewinnen kann man ja nicht...


Die Programme spielen ja auch gegeneinander. Es gibt dafür sogar sowas wie eine WM. Insofern ist immer Bedarf für Verbesserungen.:rolleyes:

Wiggo
2013-12-11, 17:15:52
Für mich als Amateurspieler reicht schon, was aktuelle Programme können...

hartcore
2013-12-11, 17:43:10
Für mich als Amateurspieler reicht schon, was aktuelle Programme können...


Wie ich schon sagte. Gegen aktuelle Programme spielt man gar nicht mehr selbst. Man lässt sie z. B. gegeneinander spielen, lässt sie bestimmte Stellungen analysieren, zum Endspiel-/Eröffnungstraining sind sie sehr gut zu gebrauchen, im Fernschach werden sie auch gerne eingesetzt um sich abzusichern gegen Fehlzüge usw,

2phil4u
2013-12-11, 20:59:27
Auf Youtube hat einer die staerkste Schachengine geschlagen, Houdini mit 3100 Elo.
Keine Ahnung, ob das nur einmal von 100 mal war, aber er kannte sich aus mit dem Programm.

Was mich wundert ist, dass man nie was von Grossrechnern hoert.

In der Regel geht es nur darum, welche Engine auf 4 CPUs besser ist, von Servern mit 1k Aufwaerts CPUs hoert man nur was, wenn es darum geht Endspieldatenbanken zu erstellen.

Die 7-Zueger sind beispielsweise fertig, ich glaube so 200-300 TB Speicher, naja und da hat man gesehen, dass man in manchen Stellungen mehr als 50 Zuege braucht.

Normalsterbliche wie ich schaffen es aber eh nicht mit einer Dame 2 Lauefer zu besiegen, da braucht man fast 100 Zuege, bis man eine Figur hat und in diesen darf man keinen Fehler machen.

Den Rest schaffe ich dan auch ;)