Eelco de Groot wrote:Also no 32 bit compile, I am not sure Cfish supports that.
Any idea why that is?
I can only think of three reasons why a C software won't compile in 32 bit:
1) it is using several GB of RAM and unable to configure that to 3GB or less. That can only be the hashtables, and that should be configurable anyway.
2) it is using inline assembly or compiler builtins that rely on 64 bit instructions.
3) is is not written in a clean way and uses "magic numbers" for the data type widths. Like assuming a pointer is 8 bytes instead of using the appropriate C99 data types (e.g. uintptr_t) and sizeof.
Other stuff like processing 64 bit integers is perfectly possible on a 32 bit system, albeit slower because it will take several machine instructions instead of just one.
For my own convenience I changed the Makefile to default to 64-bit.
I compiled a 32-bit binary and it crashed when trying to print out a size_t as a 64-bit number in a single place. So that will be fixed.
On windows there may be further problems with format specifiers. Somewhat annoyingly different mingw-w64 versions seem to complete contradict each other as to what should be accepted and/or warned about. (-Wno-format is probably the solution, but at least it does detect the size_t problem that was real.)
On windows there may be further problems with format specifiers. Somewhat annoyingly different mingw-w64 versions seem to complete contradict each
Yes, MingW sucks in that regard because it tries to go with the Microsoft conventions.
What is the RAM consumption of CFish if you don't count the hash tables, but including static RAM usage and stack? Just asking for a potential successor of my embedded project.
On windows there may be further problems with format specifiers. Somewhat annoyingly different mingw-w64 versions seem to complete contradict each
Yes, MingW sucks in that regard because it tries to go with the Microsoft conventions.
My MingW cross-compiler on Linux does that. So I "fix" it by using Microsoft conventions on Windows, but then my MingW-compiler on Windows starts to complain (but stills produces a functional binary).
What is the RAM consumption of CFish if you don't count the hash tables, but including static RAM usage and stack? Just asking for a potential successor of my embedded project.
Compared to Stockfish it statically allocates at the start what it might be needing throughout the game, whereas Stockfish allocates far more on the stack. Total memory requirements are not really different. Functionally it is Stockfish.
Good news! My new Cfish compile, from the 2016-09-17 code, no longer plays Rxa3 in that problematic position. It makes a reasonable move. (The two old compiles continue to want to play Rxa3, so this is reproducible here.)
syzygy wrote:
syzygy wrote:
Jouni wrote:One note: 12.9. version gives in bench 6024713 at first run, then totally different values like 5122529 4862840 etc. .
Ah, it seems SF clears hash etc. between runs. Thanks
So did Cfish, but the counter move history tables were not correctly being cleared. Fixed now.
On windows there may be further problems with format specifiers. Somewhat annoyingly different mingw-w64 versions seem to complete contradict each
Yes, MingW sucks in that regard because it tries to go with the Microsoft conventions.
My MingW cross-compiler on Linux does that. So I "fix" it by using Microsoft conventions on Windows, but then my MingW-compiler on Windows starts to complain (but stills produces a functional binary).
What is the RAM consumption of CFish if you don't count the hash tables, but including static RAM usage and stack? Just asking for a potential successor of my embedded project.
Compared to Stockfish it statically allocates at the start what it might be needing throughout the game, whereas Stockfish allocates far more on the stack. Total memory requirements are not really different. Functionally it is Stockfish.
Hello Ronald,
Do you know how to make cfish as an LTO compile? I used to make Stockfish as LTO which forced me to include the three dlls to run the exe. It is faster though... non static. What change do I need to make to the makefile to create LTO?
APassionForCriminalJustic wrote:Do you know how to make cfish as an LTO compile? I used to make Stockfish as LTO which forced me to include the three dlls to run the exe. It is faster though... non static. What change do I need to make to the makefile to create LTO?
In the Makefile, add -flto where the SF Makefile has -flto.
I think you just need to delete a few #'s (which now comment out the -flto). So "# -flto" becomes "-flto".