Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / asmFish
1 2 Previous Next  
- - Date 2016-06-17 16:47
[topic branch moved]
Parent - - By Stefan Pohl Date 2016-06-17 13:36
Patrick Jansen schrieb:

Wem etwas gutes oder hilfreiches für die Unterseite [url]Wissenswertes[/url] einfällt, lasst es mich - und andere - wissen.


Es gibt Stockfish seit kurzem in einer reinen Assemblerversion. Mein Testrun von Stockfish 160610 ist durch (heute muß ich aber arbeiten, daher baue ich das Endergebnis voraussichtlich morgen auf meiner Website ein). Daher probiere ich mal einen Testlauf der popcount-Version. Bisher sind erst 190 Partien absolviert. Es gibt bisher keine Probleme (timelosses oder Abstürze). Und die Version ist wirklich sehr, sehr schnell. Auf meinem Laptop ca. +16% schneller als die Ivec Compiles, die ich benutze, seit die abrok.eu-compiles so langsam geworden sind. Zu den aktuellen abrok.eu-compiles sollten es ca.+25% sein. Vielleicht können das andere Leute hier mal genauer durchmessen...

https://github.com/tthsqe12/asm/tree/master/asmFish

Auf dieser github-Seite (relativ weit unten), kann man auch die .exe-files für normale, popcount und Haswell CPU runterladen. Die untersten drei .EXE Dateien. Die sind - Stand: jetzt - 2 Tage alt.

Stefan (SPCC)
Parent - - By Benno Hartwig Date 2016-06-17 13:51

> Es gibt Stockfish seit kurzem in einer reinen Assemblerversion...


Das ist ja witzig.
Weißt du was über die Entstehung dieser Sourcen?
Automatisch aus den C++-Sourcen entstanden und dann auf Assemblerebene optimiert?
Oder was anderes?

Benno
Parent - - By Stefan Pohl Date 2016-06-17 13:58 Edited 2016-06-17 14:05
Benno Hartwig schrieb:

Das ist ja witzig.
Weißt du was über die Entstehung dieser Sourcen?
Automatisch aus den C++-Sourcen entstanden und dann auf Assemblerebene optimiert?
Oder was anderes?

Benno


Der Macher ist wohl PeterPan (früher PanChess) wie ich das auf Immortalchess (Stockfish 7 Chat) gelesen hab.

Schön wären wie gesagt ein paar genauere Geschwindigkeitsmessungen. Und es würde mich interessieren, ob die Assemblerversion auch mit mehreren cores/threads stabil läuft und auch dort so schnell ist. Also, ob die Parallelisierung funktioniert und gut optimiert ist. Ich hab dafür im Moment beim besten Willen keine Zeit.

Stefan

Aus dem Immortalforum:

- it is a rewrite of stockfish into x86-64
- assemble with fasm (www.flatassembler.net)
- all of the nonsense that results from c++ coders wrestling with a compiler is avoided here
- hopefully it gather interest from other asm coders or prospective asm coders
- barring any bugs, any functional difference with the real sf should be inconsequential see 3.

2. assembling:
- main source is asmsfw.asm for windows asmsf.asm for unix
- source is divided up into many files becuase ordering of these files in asmsf.asm can effect performance
- asmsf is written for haswell with macros used to simulate instructions on lower cpu's
- even without popcnt, performance only drops a few %
- CPU_HAS_... (most important) indicates available instructions
- program does a runtime check to see if these really are avaiable
- DEBUG turns on some printing and asserts
- VERBOSE turns on lots of printing. should only be used when searching for bugs
Parent - - By Benno Hartwig Date 2016-06-17 14:03
Die Frage ist, ob dieses Assemblerprogramm wirklich die für die Spielstärke des SF wichtige Logik korrekt abbildet.
In der readme las ich

1. about asmFish:
- it is a rewrite of stockfish into x86-64
- assemble with fasm (www.flatassembler.net)
  - fasm.exe is included in the asmFish directory
- all of the nonsense that results from c++ coders wrestling with a compiler is avoided here
- hopefully it gather interest from other asm coders or
- barring any bugs, any functional difference with the real sf should be inconsequential see 4.


Es klingt nach einem Neuschreiben in Assembler.
Die Knotengeschwindigkiet ist schon ein erster Hinweis.
Interessant wäre aber, ob die Spielstärke so ist, wie es die Knotengeschwindig erwarten lässt. Oder ob irgendwelche Defizite in der Logik kontraproduktiv sind.

Benno
Parent - - By Stefan Pohl Date 2016-06-17 14:10 Edited 2016-06-17 14:13
Benno Hartwig schrieb:

Die Frage ist, ob dieses Assemblerprogramm wirklich die für die Spielstärke des SF wichtige Logik korrekt abbildet.
Die Knotengeschwindigkiet ist schon ein erster Hinweis.
Interessant wäre aber, ob die Spielstärke so ist, wie es die Knotengeschwindig erwarten lässt. Oder ob irgendwelche Defizite in der Logik kontraproduktiv sind.

Benno


Deswegen mache ich ja einen Testrun mit meinen üblichen Bedingungen. Wenn alles stabil läuft, sind die 7000 Partien am Donnerstag durch...
Bei meinen Bullet-Speed Testbedingungen sollte ein Geschwindigkeitsplus von um die 16% einen Elozugewinn von ca. +15 bis +20 Elo ergeben, falls sonst alles in der Assemblerversion dem aktuellen Stockfish entspricht. Schaun mer mal...

Es wäre wirklich schön, wenn du - oder sonst jemand hier - sich insbesondere den Multicore/Thread Betrieb bzgl. Stabilität und Geschwindigkeit mal anschauen könnte. Das kann ich nicht auch noch machen.

Stefan
Parent - - By Stefan Pohl Date 2016-06-17 14:34
Am Wochenende poste ich hier mal einen Zwischenstand.
Und gebe Bescheid, ob timelosses oder sonstige Probleme auftraten.

Stefan
Parent - - By Stefan Pohl Date 2016-06-18 14:44
Stefan Pohl schrieb:

Am Wochenende poste ich hier mal einen Zwischenstand.
Und gebe Bescheid, ob timelosses oder sonstige Probleme auftraten.

Stefan


Hallo zusammen,

für eine Zwischenstand ist es noch etwas zu früh, den gibt es morgen.
Aber weitere Beobachtungen, die von Interesse sind, kann ich mal posten:

1) asmFish 160616 läuft bisher absolut stabil,,sowohl im singlecore Bullet-Testrun, als auch mit 4 cores und langer Bedenkzeit im Endless RoubdRobin. Keine Crashes, Hänger, timelosses.

2) Im singlecore Bullet-Testrun läuft asmFish 160616 (popcount) 18% schneller, als die Stockfish C++ compiles, von I.Ivec, die ich seit einigen Wochen nutze,,seit die abrok.eu compiles so langsam wurden. Die Knotenzahlen von asmFish sind sogar leicht höher, als die von Houdini 4. Lediglich Mars 3.41 hat noch einen Tick höhere Knotenwerte. asmFish berechnet knapp 28% mehr Knoten pro Sekunde als Komodo 10 im singlecore. Im Endless RoubdRobin mit 4 cores sind es im Schnitt etwa +25% mehr als Komodo 10 (der normale Stockfish ist hier nur minimal schneller.

3) Die Parallelisierung scheint gut zu funktionieren. Auch im Endless RoubdRobin mit 4 cores sind die Knotenzahlen ca. 15-20% höher als die Stockfish C++ compiles.

4) In der Shredder GUI zeigt asmFish (im Gegensatz zum normalen Stockfish) weder die Hashauslastung, noch den gerade untersuchten Zug an. Bewertung, Hauptvariante und Knotenzahlen werden hingegen korrekt angezeigt.

Stefan
Parent - - By Peter Martan Date 2016-06-20 00:21
Ich habe einen weiteren bug gefunden, die Syzygy- Interpretation ist in dieser Stellung unmittelbar vor dem Remis- 6Steiner fälschlich die eines sicheren Gewinns:

n7/8/2B4p/1Pk5/5K2/8/7p/8 w - - 0 1

Analysis by asmFish 2016.06.16 POPCNT:

66.Lxa8
  +-  (123.52)   Tiefe: 7   00:00:00  0kN, tb=8
...
66.Lxa8
  +-  (123.52)   Tiefe: 127   00:00:00  29kN, tb=1471

Der "offizielle" SF zeigt das richtige 0.00 an.

n7/8/2B4p/1Pk5/5K2/8/7p/8 w - - 0 1

Analysis by Stockfish 150616 64 POPCNT:

66.Lxa8
  =  (0.00)   Tiefe: 7/2   00:00:00  4kN, tb=146
...
66.Lxa8
  =  (0.00)   Tiefe: 127/2   00:00:09  76050kN, tb=2106061
Parent - - By Stefan Pohl Date 2016-06-20 14:57
Peter Martan schrieb:

Ich habe einen weiteren bug gefunden, die Syzygy- Interpretation ist in dieser Stellung unmittelbar vor dem Remis- 6Steiner fälschlich die eines sicheren Gewinns


Viel gravierender ist, daß asmFish einen ponder-bug zu haben scheint. Ingo wollte einen IPON-Testrun machen und mußte wegen diverser Crashes von asmFish abbrechen. Er benutzt die ShredderGUI, die ich für mein EndlessRoubdRobin tournament auch nutze. Nur lasse ich ohne pondern spielen. Und bei mir läuft asmFish in der ShredderGUI einwandfrei. Ebenso in meinem Bullet-Testrun, wo ich ja die LittlerBlitzerGUI nutze, die pondern erst gar nicht unterstützt.
Ich hab das im fishcooking forum gepostet. Dort sollte der Autor von asmFish das auch lesen...
Mal sehen, ob und wann das gefixt wird.

Stefan
Parent - - By Peter Martan Date 2016-06-20 15:39
Pondern hat bei mir im Fritz-GUI klaglos funktioniert, habe aber natürlich bei Weitem nicht so viel gespielt wie vielleicht notwendig wäre, um den bug zu bemerken und Ihr habt natürlich auch nichts davon, dass es im Fritz funktioniert.
Das mit den Syzygys dürfte zumindest im Immortal schon bekannt sein, was ich lese.
Parent - By Stefan Pohl Date 2016-07-04 10:28
Peter Martan schrieb:

Pondern hat bei mir im Fritz-GUI klaglos funktioniert, habe aber natürlich bei Weitem nicht so viel gespielt wie vielleicht notwendig wäre, um den bug zu bemerken und Ihr habt natürlich auch nichts davon, dass es im Fritz funktioniert.
Das mit den Syzygys dürfte zumindest im Immortal schon bekannt sein, was ich lese.


Möglicherweise lag das Problem beim versuchten IPON-Testrun auch an den Syzygy-Base Problemen dieser asmFish-Version und nicht am pondern. Auf der IPON-Seite steht nur, daß 4 Steiner Bases benutzt werden. Leider weiß ich nicht, ob sich das nur auf die GUI oder auch die Engines bezieht. Wenn letzteres der Fall sein sollte, könnte das vielleicht die crashes erklären. Und auch das schwache Abschneiden von asmFish vor Abbruch des Testruns (nur 0.7% besserer Score als Stockfish 7, was auch mehr als seltsam ist). Bei mir ist asmFish über 50 Elo vor Stockfish 7. Das sollte auch unter IPON-Bedingungen mindestens +30 Elo ergeben. Tja. Mysteriös.

Stefan
Parent - By Jens Hartmann Date 2016-06-20 16:10
Pondern klappt bei mir auch ohne Probleme.

Ein bekanntes Problem ist, dass der gerade berechnete Zug sowie der Füllzustand der Hashtabellen nicht angezeit wird. Screenshot:
http://i67.tinypic.com/2cxceux.jpg
Parent - By Thomas Plaschke Date 2016-06-20 18:43
Den Fehler kann ich bestätigen.

Darüber hinaus bekomme ich reproduzierbar Programmabstürze, wenn ich asmFish einen 6-Steiner vorsetze (Ich verwende die Syzygy-6-Steiner-Tabellen.).
- Mein Cutechess-Turnier mit asmFish muss ich daher ohne Endspieltabellenunterstützung wiederholen. Ca. 10 % der Partien gingen für asmFish dadurch vorzeitig zu Ende.
Viele Grüße
Th. Plaschke
Parent - - By Stefan Pohl Date 2016-06-19 08:20
So, hier ein früher Zwischenstand des Bullet-Testruns von asmFish 160616:

2150 von 7000 Partien: Score 76.8%. Der Endergebnis des letzten getesteten Stockfish 160610: 75.4%. Das wäre laut Elotabelle im Moment ein Plus von +13 Elo. Weiterhin keine Probleme, also keine Crashes, timelosses etc. Sieht also ziemlich gut aus!
Endergebnis am Donnerstag auf meiner Website.

Stefan
Parent - - By Tom Paul Date 2016-06-19 08:31
Stefan Pohl schrieb:

So, hier ein früher Zwischenstand des Bullet-Testruns von asmFish 160616:

2150 von 7000 Partien: Score 76.8%. Der Endergebnis des letzten getesteten Stockfish 160610: 75.4%. Das wäre laut Elotabelle im Moment ein Plus von +13 Elo. Weiterhin keine Probleme, also keine Crashes, timelosses etc. Sieht also ziemlich gut aus!
Endergebnis am Donnerstag auf meiner Website.

Stefan


Also sagen wir ungefähr +27% sind ungefähr +13,5 ELO.
Parent - - By Stefan Pohl Date 2016-06-19 12:04
Tom Paul schrieb:

Stefan Pohl schrieb:

So, hier ein früher Zwischenstand des Bullet-Testruns von asmFish 160616:

2150 von 7000 Partien: Score 76.8%. Der Endergebnis des letzten getesteten Stockfish 160610: 75.4%. Das wäre laut Elotabelle im Moment ein Plus von +13 Elo. Weiterhin keine Probleme, also keine Crashes, timelosses etc. Sieht also ziemlich gut aus!
Endergebnis am Donnerstag auf meiner Website.

Stefan


Also sagen wir ungefähr +27% sind ungefähr +13,5 ELO.


Falsch. Ich teste die Stockfishe mit den Ivec-compiles, nicht mehr mit den abrok.eu-compiles. Und im Vergleich mit den Ivec-compiles ist asmFish nur ca. 18% schneller.
Parent - - By Tom Paul Date 2016-06-19 12:13
Stefan Pohl schrieb:

Tom Paul schrieb:

Stefan Pohl schrieb:

So, hier ein früher Zwischenstand des Bullet-Testruns von asmFish 160616:

2150 von 7000 Partien: Score 76.8%. Der Endergebnis des letzten getesteten Stockfish 160610: 75.4%. Das wäre laut Elotabelle im Moment ein Plus von +13 Elo. Weiterhin keine Probleme, also keine Crashes, timelosses etc. Sieht also ziemlich gut aus!
Endergebnis am Donnerstag auf meiner Website.

Stefan


Also sagen wir ungefähr +27% sind ungefähr +13,5 ELO.


Falsch. Ich teste die Stockfishe mit den Ivec-compiles, nicht mehr mit den abrok.eu-compiles. Und im Vergleich mit den Ivec-compiles ist asmFish nur ca. 18% schneller.


Also bekommst du schon bei 18% +13 ELO?
Parent - By Benno Hartwig Date 2016-06-19 22:59 Edited 2016-06-19 23:03
Vor kurzem noch galt bei Geschwindigkeitesgewinnen um wenige Prozent, zumindest bei kürzeren Zeiten, die pi-mal-Daumen Regel:
"Das Plus bei der Geschwindigkeit in Prozent bekommst du ungefähr in Elo dazu."
Da ging man von ca. +60 Elo bei Geschwindigkeitsverdopplung aus.

Bei diesen langen Zeiten mag das ELO-Plus bei Geschwindigsverdopplung kleiner sein.
Insofern erscheint mit bei 18% Geschwindigkeitssteigerung ein Elo-Plus von 13 eigentlich ganz plausibel.

13 Elo Steigerung erreichen die SF-Jungs eigentlich immer wieder recht fix.
Wenn der asm-SF vor dem "guten alten" c++-SF bleiben will, muss da aber ständig am Ball geblieben werden.
Aber vielleicht ist das gar nicht das Ziel.
Vielleicht geht es einfach um die Demonstration, dass auch heute noch Spitzen-Engines in Assembler tatsächlich noch machbar sind!

Benno
Parent - - By Stefan Pohl Date 2016-06-23 11:53 Upvotes 1
Stefan Pohl schrieb:

So, hier ein früher Zwischenstand des Bullet-Testruns von asmFish 160616:

2150 von 7000 Partien: Score 76.8%. Der Endergebnis des letzten getesteten Stockfish 160610: 75.4%. Das wäre laut Elotabelle im Moment ein Plus von +13 Elo. Weiterhin keine Probleme, also keine Crashes, timelosses etc. Sieht also ziemlich gut aus!
Endergebnis am Donnerstag auf meiner Website.

Stefan


Endergebnis ist jetzt online

http://spcc.beepworld.de
Parent - By Benno Hartwig Date 2016-06-23 12:55
Ah, thanx.
Also tatsächlich ein Elo-Plus in der Größenordnung, die die etwas größere Geschwindigkeit erwarten lässt.
Allerdings auch so "übersichtlich", dass die normale SF-Entwicklung nicht gar zu lange braucht, um solche 15 Elo auch aufzuarbeiten.

Der asm-Fish kann also auf Dauer durchaus der stärkste Fisch (und ggf. auch die stärkste Engine überhaupt) sein, wenn diese asm-Version tatsächlich auch sehr aktuell am normal SF gehalten wird (oder eben: wenn hier eine ganz eigene, dynamische Entwicklung stattfindet. )

Benno
Parent - - By Hauke Lutz Date 2016-06-18 14:50 Edited 2016-06-18 14:53
Bei mir war der asmFish 27% schneller als die Version von abrok.eu.

FEN: r3r1k1/p2nbppp/8/8/3p1B2/3P2N1/qP2QPPP/1R3RK1 w - - 3 1
GUI: Arena 3.5.1
Hardware: 6/8 Threads ; 2gb Hash (ideapad Z710)
Rechentiefe: 33 Halbzüge ; MV = 6

Zeit asmFish:  19:23
Zeit abrok.eu: 24:37

Hauke
Parent - - By Stefan Pohl Date 2016-06-18 15:13
Hauke Lutz schrieb:

Bei mir war der asmFish 27% schneller als die Version von abrok.eu.

FEN: r3r1k1/p2nbppp/8/8/3p1B2/3P2N1/qP2QPPP/1R3RK1 w - - 3 1
GUI: Arena 3.5.1
Hardware: 6/8 Threads ; 2gb Hash (ideapad Z710)
Rechentiefe: 33 Halbzüge ; MV = 6

Zeit asmFish:  19:23
Zeit abrok.eu: 24:37

Hauke


Moin Hauke,

Das haut doch prima hin. Die Ivec Compiles, die ich seit einiger Zeit nutze, sind ja ca. 9% schneller, als die abrok.eu compiles. Und asmFish ist bei mir wie gesagt 18% schneller als die Ivec compiles. Also komme ich auch auf ca. +27% speedup für asmFish gegenüber den abrok.eu compiles.

Auch kann man für die Zukunft von asmFish weitere Geschwindigkeitssteigerungen erhoffen. Im fishcooking Forum schrieb der Macher über die aktuelle asmFish-Version:

"With the help of many testers bugs in the initial version have located and fixed and I am ready to release something that could be called 'stable'.
The repo is https://github.com/tthsqe12/asm  It contains the source, assembler, make instructions, and executables.
Except for syzygy, I am confident that the the code is correct, so it is now time to optimize it for speed."

Will sagen, bis zum heutigen Tag ging es erst mal darum, asmFish korrekt zum Laufen zu bringen. Der Assemblercode ist noch gar nicht auf optimalen Speed hin optimiert. Da kann also noch was kommen!

Stefan
Parent - By Tom Paul Date 2016-06-18 15:18
Stefan Pohl schrieb:

Hauke Lutz schrieb:

Bei mir war der asmFish 27% schneller als die Version von abrok.eu.

FEN: r3r1k1/p2nbppp/8/8/3p1B2/3P2N1/qP2QPPP/1R3RK1 w - - 3 1
GUI: Arena 3.5.1
Hardware: 6/8 Threads ; 2gb Hash (ideapad Z710)
Rechentiefe: 33 Halbzüge ; MV = 6

Zeit asmFish:  19:23
Zeit abrok.eu: 24:37

Hauke


Moin Hauke,

Das haut doch prima hin. Die Ivec Compiles, die ich seit einiger Zeit nutze, sind ja ca. 9% schneller, als die abrok.eu compiles. Und asmFish ist bei mir wie gesagt 18% schneller als die Ivec compiles. Also komme ich auch auf ca. +27% speedup für asmFish gegenüber den abrok.eu compiles.

Auch kann man für die Zukunft von asmFish weitere Geschwindigkeitssteigerungen erhoffen. Im fishcooking Forum schrieb der Macher über die aktuelle asmFish-Version:

"With the help of many testers bugs in the initial version have located and fixed and I am ready to release something that could be called 'stable'.
The repo is <a class='ura' href='https://github.com/tthsqe12/asm'>https://github.com/tthsqe12/asm</a>  It contains the source, assembler, make instructions, and executables.
Except for syzygy, I am confident that the the code is correct, so it is now time to optimize it for speed."

Will sagen, bis zum heutigen Tag ging es erst mal darum, asmFish korrekt zum Laufen zu bringen. Der Assemblercode ist noch gar nicht auf optimalen Speed hin optimiert. Da kann also noch was kommen!

Stefan


= +50%
Parent - - By Peter Martan Date 2016-06-18 15:41 Edited 2016-06-18 15:49
Also erstmal wieder ein herzliches Danke, Stefan, dass du dich der Sache so annimmst.
Erste Eindrücke auf 24 threads: läuft bisher völlig stabil, auch mit 32G hash, Knotenzahlen so um die 20% höher als das gleichalte ultimaiq-Compile, time to depth je nach Stellung so 10% kürzer, time to solution natürlich total stellungsabhängig, aber bei (für SF) einfachen Taktikstellungen auf single core ziemlich gleich.
Parent - By Peter Martan Date 2016-06-18 17:18
Peter Martan schrieb:

time to depth je nach Stellung so 10% kürzer

Da war ich vielleicht etwas vorschnell, das kann sich je nach Stellung auch total umkehren.
Außerdem mittlerweile ein kleiner bug: "nächstbester Zug" funktioniert nicht.
Parent - - By Benno Hartwig Date 2016-06-18 16:49

> Bei mir war der asmFish 27% schneller als die Version von abrok.eu.


Ich bin gespannt, ob die Resultate zu dieser Geschwindigkeitssteigerung passen.
Es werden so ja nur sehr wenige Elos gewonnen, und selbst kleine Ungenauigkeiten bei der Umsetzung können das schnell wieder kaputt machen.

Benno
Parent - By Thomas Plaschke Date 2016-06-18 17:49
Danke, Benno!

Ich wollte nicht der Erste sein, der Wasser in den Wein der allgemeinen Euphorie gießt .
Zu einen habe ich großen Respekt vor dem Programmierer. Was der umgesetzt hat ist viel, viel mehr als die Anpassung eines C++-Compiler-Outputs, so weit ich das beurteilen kann (ASM-Selbsteinschätzung: x86-Grundkenntnisse, 68xxx fortgeschrittener Anfänger). Er scheint Stockfish wirklich nach Assembler konvertiert zu haben. Er schreibt ja außerdem, an welchen Stellen er Vereinfachungen oder Abweichungen gewählt hat - deswegen ist asmFish keine 1:1-Umsetzung. Ich habe den Eindruck - ohne einen konkreten Spielstärkevergleich gemacht zu haben - mit asmFish einen älteren Stockfish vor mir zu haben.

Mal sehen, wie stark er wirklich ist.

Viele Grüße
Th. Plaschke
Parent - By Thomas Plaschke Date 2016-06-22 18:09
Code:
mehrere Gauntlets mit TC 60"/+0.5"; 1 Thread; i5-3570k @4.2 GHz
   # PLAYER              : RATING  ERROR   POINTS  PLAYED    (%)   CFS(next)
   1 asmFish-160616      :   3321      6   1768.0    2977   59.4%      77
   2 Stockfish-160610    :   3317     10    537.0    1087   49.4%     100
   3 Komodo 9.1          :   3255     10    492.5    1208   40.8%     100
   4 Critter 1.6a        :   3138     15    179.5     682   26.3%     ---

White advantage = 35.63 +/- 3.77
Draw rate (equal opponents) = 70.18 % +/- 0.96
Kein schlechter Einstand!
Der Stockfish-160610 ist eine selbst compilierte PGO-Ausgabe. Für meinen Rechner gibt es keine schnellere Version. Die Begründung "zu langsame EXE" für den 2. Platz entfällt.

Viele Grüße
Th. Plaschke
Parent - - By Stefan Pohl Date 2016-06-17 14:47
Bemerkenswert ist auch die geringe Größe des .exe-Files. Die popcount-Version, die ich gerade teste, ist nur 110KByte groß. Der compilierte Stockfish ist ca. 10mal größer (1.1 MByte)...
So hätte Stockfish in einen 80er Jahre Brettcomputer reingepaßt. Wahnsinn...

Stefan
Parent - By Benno Hartwig Date 2016-06-17 16:47
Seit mehr als 30 Jahren findet diese Computerschächerei für den heimischen Gebrauch statt.

Und immer noch entwickelt sie sich rasant weiter (vielleicht tatsächlich sogar immer rasanter, obwohl die Rechner den tatsächlich notwendigen und ggf. ersehnten Gegnerspielstärken seit langer Zeit(!) weit davon gelaufen sind).
Und immer noch gibt es Überraschendes (wie jetzt dieser asm-Stockfish)
und das Netz (und eben fleißige Leute wie z.B. du, Thanx) liefert so viel davon frei Haus.

Toll
Benno
Parent - - By Jens Hartmann Date 2016-06-17 15:41
Auf meinem Dual Xeon 2670 läuft der asmFish stabil und hat bisher alle Stockfishversionen, Komodo 10 und 9.42 sowie SugarSE in einem 40 Partien Nunn Match geschlagen. Nach 240 Partien pro Engine um einige Punke vor dem Zweitplatzierten und sehr deutlich vor Komodo 10 und 9.42, die sich noch hinter SF Matefinder die letzten Plätze teilen. In einigen 100 Teststellungen schneidet er ingesamt auch sehr gut ab. Mit Fasm ist das eigenständige Kompilieren ein Kinderspiel und dauert weniger als eine Sekunde. Ach ja: Alles 3 min Blitz.
Parent - - By Stefan Pohl Date 2016-06-17 17:58 Upvotes 1
Jens Hartmann schrieb:

Auf meinem Dual Xeon 2670 läuft der asmFish stabil und hat bisher alle Stockfishversionen, Komodo 10 und 9.42 sowie SugarSE in einem 40 Partien Nunn Match geschlagen. Nach 240 Partien pro Engine um einige Punke vor dem Zweitplatzierten und sehr deutlich vor Komodo 10 und 9.42, die sich noch hinter SF Matefinder die letzten Plätze teilen. In einigen 100 Teststellungen schneidet er ingesamt auch sehr gut ab. Mit Fasm ist das eigenständige Kompilieren ein Kinderspiel und dauert weniger als eine Sekunde. Ach ja: Alles 3 min Blitz.


So, ich hab meine Website doch noch aktualisiert (mit dem Testergebnis von Stockfish 160610). Auf meiner Startseite habe ich den Ort verlinkt wo man die aktuellsten Windows-Versionen von asmFish herunterladen kann...(für alle, die wie ich keine Ahnung/Lust zum selber compilieren haben).
Den Testrun von asmFish 160616 hab ich gestartet (diese Version ist der sogenannte "first stable release"). Der Testrun wird wohl Donnerstag durch sein. Zwischenergebnis am Wochenende...falls alles glattgeht...
Auch wird diese asmFish-Version jetzt mal testweise im Endless RoundRobin den "normalen" Stockfish ersetzen. Ich will sehen, wie der assembler-Stocki mit langen Bedenkzeiten und 4 Cores klarkommt...

Stefan

http://spcc.beepworld.de
Parent - - By Benno Hartwig Date 2016-07-02 11:27
Schön(!), dass du asm auch durchlaufen lassen hast!

Hast du vor, sofern diese asm-Version regelmäßig mit neuen Releases kommt, auch diese im Test zu behalten?
Zumindest solange diese Releases sogar etwas besser als die c++-Versionen abschneiden, ist das Interesse sicher sehr groß.

Benno
Parent - By Michael Scheidl Date 2016-07-02 11:29
Hab's mir auch runtergeladen und werde gleich mal bei TCEC damit kibitzen.
Parent - By Stefan Pohl Date 2016-07-02 18:04
Benno Hartwig schrieb:

Schön(!), dass du asm auch durchlaufen lassen hast!

Hast du vor, sofern diese asm-Version regelmäßig mit neuen Releases kommt, auch diese im Test zu behalten?
Zumindest solange diese Releases sogar etwas besser als die c++-Versionen abschneiden, ist das Interesse sicher sehr groß.

Benno


Erst mal abwarten, ob und wie regelmäßig asmfish-Releases wirklich kommen...Prinzipiell habe ich schon vor, falls es regelmäßige Releases geben sollte, asmfish zumindest gelegentlich zu testen. Deswegen habe ich ja auch schon einen grünen Punkt in mein Elodiagramm gemacht und asmfish rangeschrieben. Sollte es regelmäßige Releases geben, hätten wir dann eine zweite, grüne Kurve im gleichen Diagramm wie Stockfish (rot). Dann kann man schön vergleichen.
Priorität haben aber die Stockfish-Testruns. Und einer dauert knapp 6 Tage...Und zusätzlich mache ich gelegentlich inoffizielle Testruns für ein noch in der Entwicklumg befindliches und noch geheimes Projekt, von dem ich glaube, daß es sehr, sehr interessant ist. Daher will ich den Macher dabei weiter mit etwas Testzeit unterstützen, und das auch noch nach dem Release. Daher bin ich im Moment etwas knapp, was die Rechnerzeit angeht. Und ich habe ja nur zwei Quadcore Notebooks. Aber ab und zu einen asmfish-Testrun werde ich schon unterbringen.
Wie schon erwähnt, bitte keine Nachfragen zu dem mysteriösen Projekt, von dem ich hier spreche, ich bin nicht autorisiert, Auskünfte zu erteilen. Aber es wird toll! Und es wird mal wieder beweisen, daß unser Hobby Computerschach auch nach über 30 Jahren immer noch zu großartigen Neuerungen und echten Innovationen fähig ist.

Stefan
Parent - - By Stefan Pohl Date 2016-07-05 12:12
Benno Hartwig schrieb:

Schön(!), dass du asm auch durchlaufen lassen hast!

Hast du vor, sofern diese asm-Version regelmäßig mit neuen Releases kommt, auch diese im Test zu behalten?
Zumindest solange diese Releases sogar etwas besser als die c++-Versionen abschneiden, ist das Interesse sicher sehr groß.

Benno


Gute Nachricht für dich, Benno:
Da ich bei Stockfish noch auf den Einbau mindestens eines erfolgreichen Patches warte und ja auch gerade erst ein Stockfish-Testrun durch ist (Ergebnis ist bereits auf meiner Website online), teste ich jetzt zwischendurch den neuesten asmFish vom 4.Juli.
Ergebnis voraussichtlich am Montag.

Stefan
Parent - By Benno Hartwig Date 2016-07-05 19:11
Parent - - By Stefan Pohl Date 2016-07-07 10:49
Stefan Pohl schrieb:

Benno Hartwig schrieb:

Schön(!), dass du asm auch durchlaufen lassen hast!

Hast du vor, sofern diese asm-Version regelmäßig mit neuen Releases kommt, auch diese im Test zu behalten?
Zumindest solange diese Releases sogar etwas besser als die c++-Versionen abschneiden, ist das Interesse sicher sehr groß.

Benno


Gute Nachricht für dich, Benno:
Da ich bei Stockfish noch auf den Einbau mindestens eines erfolgreichen Patches warte und ja auch gerade erst ein Stockfish-Testrun durch ist (Ergebnis ist bereits auf meiner Website online), teste ich jetzt zwischendurch den neuesten asmFish vom 4.Juli.
Ergebnis voraussichtlich am Montag.

Stefan


Kleiner Zwischenstand des Testruns von asmFish 160704 (modern): Nach gut 2500 von 7000 Partien: +23 Elo zu Stockfish 160626 und +13 Elo zu asmFish 160616. Erstaunlich. Knapp 22% höhere Knotenzahlen als die ultimaiq-Stockfish compiles, die ich jetzt benutze.
Mal sehen, ob dieses beeindruckende Ergebnis bis zum Ende gehalten werden kann...

Die prinzipielle Frage ist ja nun, ob asmFish nicht als eigentständige Engine betrachtet werden sollte (und demzufolge neben Stockfish in die diversen Ranglisten aufgenommen werden sollte). Zwar liegt der Stockfish-Code zugrunde.,Diesen allerdings komplett in Assembler umzuschreiben, ist eine beträchtliche und beeindruckende Eigenleistung des Autors. Meiner Meinung nach beinhalten Engines wie z.B. Critter, Fire Oder Equinox auch keine höhere Eigenleistung des Autors. Wenn überhaupt. Aber das ist wohl Ansichtssache. Ich würde deshalb gerne weitere Meinungen zu dieser Frage hören.

Stefan
Parent - - By Jörg Oster Date 2016-07-07 11:45
Hallo Stefan,

man spricht in einem Fall wie diesem von einer Portierung in eine andere Programmiersprache.
Der Compiler macht übrigens aus dem Stockfish Quellcode dasselbe, nämlich auch Assembler-Code!
Aber nicht unbedingt mit dem gleichen Ergebnis. (Stichwort: Geschwindigkeit)

Keine Frage, dass dies eine anerkennenswerte Leistung darstellt, aber es ist und bleibt trotzdem immer noch Stockfish!
Die Chancen, dass asmFish z. B. bei TCEC teilnimmt, sind ungefähr 0.00000%.

Im Grunde stellen sich nun 2 Fragen:
- Wie kann der Stockfish-Quellcode davon profitieren?
- Wird der Autor es schaffen, mit der Stockfish-Entwicklung auf Dauer mitzuhalten?

Hierzu auch ein Zitat von Joona Kiiski aus dem Fishcooking-Forum: https://groups.google.com/forum/?fromgroups=#!topic/fishcooking/z2sd39wrUvw
Zitat:
This is an interesting experiment!

I find it surprising that you can still extract so much speed out of manually written ASM-code!

I just hope that we can get some concrete improvements in C-code as well.
As Stockfish development continuous, the asm-port will be outdated soon, and I doubt that anyone will have energy to maintain it in the long run...


Und noch eines aus dem gleichen Thread von joost.van...@gmail.com:
Zitat:
This definitely is an interesting experiment. However, given the serious effort that is needed to write asm programs, I believe the most sustainable way to get this benefit into SF on the long run is to identify those pieces of code that can be speedup significantly, and take one of two options.

a) either rewrite the SF source code in a way that exposes the optimization opportunity to the compiler more clearly (for example using restrict pragmas)

b) report to gcc the missed optimization bug, and have it fixed for a next version. If a small C++ reproducer is given, and optimal asm solution is provided, my experience is that this works rather well.


Nun, zu deiner Frage erhälst du von mir ein klares Nein.
Das ist wie mit einer Übersetzung eines Buches vom Englischen ins Deutsche.

Gruß, Jörg.

P. S.: Noch eine kleine Anmerkung: eine Engine neu zu schreiben setzt eine wesentlich höhere Eigenleistung voraus,
         und ist in keinster Weise mit einem Umschreiben zu vergleichen!
Parent - - By Stefan Pohl Date 2016-07-07 12:22 Edited 2016-07-07 12:26
Hallo, Jörg

Im Prinzip kann man das so sehen. Nur glaubt wohl niemand ernsthaft, daß Critter oder Fire "neu geschriebene" Engines sind. Dennoch werden sie getestet und sind/waren im TCEC dabei. Das genau ist ja der Punkt. Gäbe es wirklich nur ausschließlich vom Autor komplett neu geschriebene Engines, würde ich dir also 100% zustimmen. Nur, so ist es ja nunmal heutzutage nicht...Insofern bin ich da ein wenig hin- und hergerissen.

Stefan
Parent - - By Ralf Mueller Date 2016-07-07 13:39
Hallo Stefan,

aber eine Portierung und ein Derivat sind doch unterschiedliche Dinge. Der Stockfish-Port spielt exakt genauso wie der originale Stockfish, rechnet nur eben schneller. Wenn jetzt jemand Stockfish noch in Java und in Pascal portieren würde, würdest du alle in deine Rangliste aufnehmen?
Parent - - By Benno Hartwig Date 2016-07-07 14:09

> aber eine Portierung und ein Derivat sind doch unterschiedliche Dinge


"unterschiedlich" sicher (wie sollte man auch auf eine andere Idee kommen).
Nur: worin besteht gerade hier ("Portieren nach Assembler"  vs. "Aufbau von Critter oder mehr noch von Fire, nachdem die Robbos da waren") die größere Eigenleistung?

Die größere und angenehmere Überraschung war zumindest für mich das Erscheinen des asm-Fish.

Benno
Parent - By Ralf Mueller Date 2016-07-07 15:02
Hallo Benno,

danke für deine Antwort.
Mein Punkt ist, dass die Eigenleistung nicht das einzige Kriterium sein sollte. Angenommen, ich würde jede Zeile Stockfish-Code ausführlich und leicht verständlich annotieren, so ist das zwar eine gewaltige Eigenleistung, aber die Engine ist eben nach wie vor die gleiche. Die Portierung ist auch eine große Eigenleistung, aber die Engine ist eben nach wie vor fast die gleiche, nur eben ein wenig schneller oder langsamer.
Parent - - By Stefan Pohl Date 2016-07-07 15:07
Benno Hartwig schrieb:

"unterschiedlich" sicher (wie sollte man auch auf eine andere Idee kommen).
Nur: worin besteht gerade hier ("Portieren nach Assembler"  vs. "Aufbau von Critter oder mehr noch von Fire, nachdem die Robbos da waren") die größere Eigenleistung?

Die größere und angenehmere Überraschung war zumindest für mich das Erscheinen des asm-Fish.

Benno


Genau wegen dieser Problematik propagiere ich seit Jahren das von mir scherzhaft so genannte "Windelprinzip". Für mich ist entscheidend, was hinten raus kommt...Wenn eine Engine, die mehr oder weniger auf einer anderen aufbaut, meßbar stärker spielt als das zugrunde liegende Original, wenn also ein Eloplus hinten raus kommt, dann finde ich, daß man die Engine als eigenständige Engine behandeln sollte/könnte. Und asmFish IST meßbar stärker als der stärkste Stockfish.. "Erschwerend" kommt hinzu, daß asmFish damit so ganz nebenbei die Nummer 1 der Welt ist, es geht also nicht um irgendeine Engine unter ferner liefen. Sollte man also als Ranglistenbetreiber die Nummer 1 der Welt nicht testen?!?! Gut, daß ich keine richtige Rangliste mehr betreibe...insofern stellt sich mir dieses Problem zunächst nicht.
Nur war so ein Fall wie asmFish bisher noch nie da. Bisher ging es um modifizierten Originalcode. Nicht um Portierung in eine schnellere Sprache.

Stefan
Parent - - By Ralf Mueller Date 2016-07-07 15:25
Hallo Stefan,

wenn für dich die Elosteigerung das entscheidende Kriterium ist, sehe ich keinen Grund, asmFish nicht bei dir einzugliedern.
Parent - - By Stefan Pohl Date 2016-07-07 15:30
Ralf Mueller schrieb:

Hallo Stefan,

wenn für dich die Elosteigerung das entscheidende Kriterium ist, sehe ich keinen Grund, asmFish nicht bei dir einzugliedern.


Im Rahmen meiner Stockfishtesterei hab ich ja schon einen asmFish getestet. Der zweite Test der neuesten Version vom 4.7. läuft ja momentan. Knapp 2900 Partien durch. +22 Elo zum neuesten und stärksten Stockfish.
Mich treibt ja eher die Frage um, ob die richtigen Ranglisten den asmFish aufnehmen sollten oder könnten.

Stefan
Parent - - By Ralf Mueller Date 2016-07-07 15:36
Hallo Stefan,

ich würde sagen, dass das ganz von den selbstgesteckten Kriterien abhängt. Wenn es um Eloplus geht, dann ja, wenn es um Eigenständigkeit geht, eher nein.

Ich persönlich tendiere auch zu deiner Auffassung - wenn es eine klar beste Engine gibt, weswegen sollte die bei keiner Rangliste geführt werden? Und die Eigenständigkeit kann man ja sowieso kaum bestimmen und definieren.
Parent - - By Benno Hartwig Date 2016-07-07 16:37

> Wenn es um Eloplus geht, dann ja, wenn es um Eigenständigkeit geht, eher nein.


Stefan erwähnte es ja auch schon: ganz wichtiges Kriterium wird sein, wie gut dieser asm-Stockfish auf dem Laufenden gehalten wird.
Die Entwicklung in Assembler ist sicher deutlich schwieriger/umständlicher als in C++
Und ein permanentes Nachprogrammieren ist wahrscheinlich eine enorm zeitfressende Prozedur.

Von daher:
Solange der asm-Fish erkennbar die noch mal stärkere Engine ist, solange also wirklich regelmäßig viel Zeit in ihn investiert wird, solange ist das Interesse an einer Leistungseinschätzung sicher sehr groß.
Und die fragenden Augen in Richtung Stefan auch.
Andernfalls würde der asm-SF aber doch recht schnell eine Fußnote in der Computerschach-Historie werden.

Benno
Parent - - By Ralf Mueller Date 2016-07-07 16:44
Hallo Benno,

das ist für mich kein entscheidendes Kriterium. Wenn jemand ein Derivat veröffentlicht, das 100 Elo vor Stockfish liegt und der Autor eindeutig sagt, dass es keine Weiterentwicklungen geben wird, dann möchte ich trotzdem, dass diese Engine unbedingt getestet wird.
Die ganzen Derivate von Stockfish, die regelmäßig erscheinen und elomäßig immer +-5 Punkte von Stockfish entfernt sind, müssen hingegen meiner Meinung nach nicht unbedingt getestet werden.
Siehst du das anders?
Up Topic Hauptforen / CSS-Forum / asmFish
1 2 Previous Next  

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill