Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Gull kompilieren
- - By Benno Hartwig Date 2015-10-20 22:19
Hat schon mal jemand hier Gull3 selbst kompiliert?

Meine Versuche mit einer sehr simplen makefile-Datei und MinGW führen nur zu Fehlermeldungen, die beginnen mit:

gcc -o gull_jm.exe gull.cpp
gull.cpp:3402:22: error: pasting "PEI" and "." does not give a valid preprocessing token
  int kf = File(PVarC(PEI, king, me));
                      ^
gull.cpp:83:39: note: in definition of macro 'PVarC'
#define PVarC(prefix,var,me) ((me) ? (prefix##.##var##_b) : (prefix##.##var##_w))
                                      ^
gull.cpp:83:47: error: pasting "." and "king" does not give a valid preprocessing token
#define PVarC(prefix,var,me) ((me) ? (prefix##.##var##_b) : (prefix##.##var##_w))
                                              ^
...


Hat jemand ggf. ein passendes makefile?

Benno
Parent - - By Thomas Plaschke Date 2015-10-21 10:55
Das liegt nicht am makefile, sondern an der Art und Weise; wie GCC bzw. minGW Stringersetzungen durch #define handhaben. Die Teilausdrücke müssen bei jeder Ersetzung einen gültigen Ausdruck ergeben. Hier werden zwei Ersetzungen vorgenommen - und der erste ist in den gemeldeten Fehlern nicht gültig. Anders arbeitet Visual C++: da wird der Gesamtausdruck erst nach der Ausführung aller Ersetzungen ausgewertet. Deswegen lässt sich Gull3 mit VC, aber nicht mit minGW kompilieren. Die Sprachdefinition von C bzw. C++ legt nicht fest, ob während des Ersetzungslaufs des Präcompilers immer gültige Ausdrücke vorliegen müssen.

Einen lauffähigen Quelltest erhältst Du, wenn Du eine der Ersetzungen komplett von Hand vornimmst. - Ich habe das aufgegeben.

Viele Grüße
Th. Plaschke

P.S.: Ich kenne auch keine (Kommandozeilen-)Option, mit der man dieses "feature" ab- bzw. zuschalten kann.
Parent - - By Benno Hartwig Date 2015-10-21 12:39 Edited 2015-10-21 12:57
Ah, Danke für die Infos.
MinGW machte bei Stockfish einen so prima Job, dass ich glaubte, der würde auch hier erste Wahl sein.
Nun werde ich die Gull-Sourcen mal Visual Studio vorwerfen...

Benno
Parent - By Thomas Plaschke Date 2015-10-21 16:29

> MinGW machte bei Stockfish einen so prima Job, dass ich glaubte, der würde auch hier erste Wahl sein.


Das war auch mein Gedanke, aber dieser spezielle #define macht das zu einer recht aufwändigen Nummer. Vielleicht wissen die real programmer Rat (gut real programmer programmieren in Fortran oder Assembler wie man weiß, aber trotzdem... )


> Nun werde ich die Gull-Sourcen mal Visual Studio vorwerfen...


Ich habe VC 2010, 2013 und 2015 ausprobiert
Die nehmen sich mit oder ohne PGO nicht viel, wobei die PGO mit der 2015 verhältnismäßig umständlich ist.

Viele Grüße
Th. Plaschke
Parent - - By Roman Date 2015-10-21 18:54
Ich hatte mir mal die Mühe gemacht den Sourcecode so anzupassen, dass er mit gcc compilierbar ist und das ganze danach auf github hochgeladen:
https://github.com/rkorba/gull/
Allerdings läuft Gull bei mir leider nicht ganz stabil wenn ich ihn mit gcc compiliere.

Roman
Parent - By Thomas Plaschke Date 2015-10-21 23:42
Erst mal vielen, vielen Dank!
Das war bestimmt kein leichter Ritt!

Ich habe den Code auf die schnelle mit TDM-5.1.0, 4.9.2 und 4.8.1 kompiliert und PGO-Versionen hergestellt (Die 4.9.2 nur mit -fprofile-arcs und -fbranch-probabilities). Mit der 4.7.1 wollte es nicht klappen.
Die schnellste Version ist auf den ersten Blick das 5.1.0-Kompilat - große Überraschung. Aber die anderen liegen Kopf an Kopf. Aber gegenüber der VC++-Version liegen sie gerade mal mit 5% Abstand - also mehr nps - vorn.
Stabil scheinen die Programme auch zu sein - habe aber noch nicht viel getestet.

Noch mal vielen Dank!
Viele Grüße
Th. Plaschke
Parent - By Thomas Plaschke Date 2015-10-22 20:09

>Allerdings läuft Gull bei mir leider nicht ganz stabil wenn ich ihn mit gcc compiliere.


Habe jetzt mehr getest und glaube nun zu wissen, wovon Du sprichst
Der oder die Fehler dürften auch schwer zu ermitteln sein, weil sich das Verhalten der Engine von single- zu multi-threaded und je nach Compiler-Version unterscheidet.
Der Speed der minGW Compiler ist auch nicht so viel größer wie ich nach dem Vergleich von MS-Stockfish mit minGW-Stockfish erwartet hätte. - Bspw. geht die v5.1.0 single-threaded recht flott ans Werk. Aber mit 4 Cores sieht man im Taskmanager Erstaunliches - bevor sie abstürzt.

Aber trotzdem eine gute Erfahrung mehr!

Viele Grüße
Th. Plaschke
Up Topic Hauptforen / CSS-Forum / Gull kompilieren

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill