Page 1 of 16

Minic version 2

Posted: Tue Mar 31, 2020 4:45 pm
by xr_a_y
xr_a_y wrote: Thu Mar 26, 2020 4:39 pm Minic is now too far from one of its original ambition, being a small code size.
With around 5000 lines today, it is maybe time to make Minic less ugly and go for a better multi files repository.

This shall take some time, but I think i'm gonna go this way, splitting Minic in some files and comment the code more.

See you on the other side.
So here we are ! Minic version 2 is available :D . The single file minic.cc has been split into many source files, thus increasing maintainability.
This version is functionally the same as 1.55 (including multiPV development).

I hope this work will allow Minic so get strength soon !

It is also, of course, time to say good bye to the good old "A complete 2000 lines of code engine" thread.

Re: Minic version 2

Posted: Tue Mar 31, 2020 5:15 pm
by Jamal Bubker
Merci beaucoup Vivien pour le travail effectué sur ton module et pour la mise à disposition de cette nouvelle version ! 8-) 8-)

Re: Minic version 2

Posted: Tue Mar 31, 2020 10:22 pm
by mvanthoor
Congrats :)

Maybe a suggestion which is used in Rust (and in the Stash engine as well). It can be beneficial to put your header files in an "include" folder, and your source files in an "src" folder; even dividing the src folder into multiple subfolders, where you gather modules that belong together. Splitting up the engine in multiple files was a good thing to do, but now you have an incredibly long unbroken list of files :P (

Re: Minic version 2

Posted: Wed Apr 01, 2020 10:49 am
by ThatsIt
Thx for the new version.
Is it worth to test it compared to version 1.54 ?

Best wishes,
G.S.
(CEGT team)

Re: Minic version 2

Posted: Wed Apr 01, 2020 11:17 am
by xr_a_y
ThatsIt wrote: Wed Apr 01, 2020 10:49 am Thx for the new version.
Is it worth to test it compared to version 1.54 ?

Best wishes,
G.S.
(CEGT team)
No, should be the same. Thanks

Re: Minic version 2

Posted: Wed Apr 01, 2020 11:47 am
by Gabor Szots
Hi Vivien,

I tried to compiled it using MINGW64, just for fun and learning reasons. However:

1. This was my command line: g++ *.cpp -O3 -march=native -o Minic_2.00-x64-SzG.exe. Now I got a fatal error saying tbprobe.h was not found.
2. OK, I downloaded the Fathom library from Jon Dart and put all the files in the same directory where all cpp files were. Now the error message was
In file included from egt.cpp:11:
tbprobe.h:27:10: fatal error: tbconfig.h: No such file or directory
#include <tbconfig.h>
3. Finally, I included -DWITH_SYZYGY in the g++ command line but now I got a lot of errors such as
In file included from attack.hpp:3,
from attack.cpp:1:
definition.hpp:47: warning: "WITH_SYZYGY" redefined
Could you please enlighten me, what am I doing wrong? Where should I put the Fathom files?


BTW, the compiles you provided seem not to be able to use syzygy, at least I can see no such option.

Re: Minic version 2

Posted: Wed Apr 01, 2020 1:31 pm
by xr_a_y
If you put Fathom directory inside Minic then from Minic root directory

Code: Select all

g++ -IFathom/src -ISource Source/*.cpp -lpthread    (and whatever other options you want)
Shall be good. WITH_SYZYGY is now default.

You have some sample build scripts in Tools directory.

Your current issue is just having forgotten to give the path to your fathom include directory (and having define WITH_SYZYGY twice, as I already do it by default inside de code).

Re: Minic version 2

Posted: Wed Apr 01, 2020 2:41 pm
by Gabor Szots
Still no success. Using your command line I get:
C:\Users\cicus\AppData\Local\Temp\ccyniKJA.o:egt.cpp:(.text+0x4d9): undefined reference to `tb_probe_wdl_impl'
C:\Users\cicus\AppData\Local\Temp\ccyniKJA.o:egt.cpp:(.text+0x6a7): undefined reference to `tb_init'
C:\Users\cicus\AppData\Local\Temp\ccyniKJA.o:egt.cpp:(.text+0x925): undefined reference to `tb_probe_root_impl'
C:\Users\cicus\AppData\Local\Temp\ccyniKJA.o:egt.cpp:(.rdata$.refptr.TB_LARGEST[.refptr.TB_LARGEST]+0x0): undefined reference to `TB_LARGEST'
collect2.exe: error: ld returned 1 exit status
And this is my Fathom library:
Directory of e:\Sakk\compiles\Minic\Fathom\src

2020.04.01. 14:38 <DIR> .
2020.04.01. 14:38 <DIR> ..
2020.04.01. 14:07 <DIR> apps
2020.04.01. 14:38 0 ki
2019.08.11. 20:33 8˙835 stdendian.h
2019.08.11. 20:33 31˙250 tbchess.c
2019.08.11. 20:33 5˙648 tbconfig.h
2019.08.11. 20:33 70˙320 tbprobe.c
2019.08.11. 20:33 12˙814 tbprobe.h
6 File(s) 128˙867 bytes
3 Dir(s) 795˙524˙161˙536 bytes free
While the apps library looks like:
Directory of e:\Sakk\compiles\Minic\Fathom\src\apps

2020.04.01. 14:39 <DIR> .
2020.04.01. 14:39 <DIR> ..
2019.08.11. 20:33 21˙767 fathom.c
2020.04.01. 14:39 0 ki
2019.08.11. 20:33 787 Makefile
3 File(s) 22˙554 bytes
2 Dir(s) 795˙524˙161˙536 bytes free

And there is no syzygypath option displayed in Arene or cutechess GUI (using your BMI2 compile).
Running from the command prompt I get this:
# This is Minic version 2.00
# Warn 2020-04-01 14:48:55-553: ARG key not given, quiet
# Warn 2020-04-01 14:48:55-558: ARG key not given, debugMode
# Warn 2020-04-01 14:48:55-558: ARG key not given, debugFile
# Warn 2020-04-01 14:48:55-558: ARG key not given, book
# Warn 2020-04-01 14:48:55-558: ARG key not given, bookFile
# Warn 2020-04-01 14:48:55-558: ARG key not given, ttSizeMb
# Warn 2020-04-01 14:48:55-558: ARG key not given, threads
# Warn 2020-04-01 14:48:55-558: ARG key not given, mateFinder
# Warn 2020-04-01 14:48:55-558: ARG key not given, fullXboardOutput
# Warn 2020-04-01 14:48:55-558: ARG key not given, level
# Warn 2020-04-01 14:48:55-558: ARG key not given, syzygyPath
id name Minic 2.00
id author Vivien Clauzon
option name Level type spin default 100 min 0 max 100
option name Hash type spin default 128 min 1 max 256000
option name Threads type spin default 1 min 1 max 256
option name UCI_Chess960 type check default false
option name Ponder type check default false
option name MultiPV type spin default 1 min 1 max 4
uciok

Re: Minic version 2

Posted: Wed Apr 01, 2020 3:48 pm
by xr_a_y
That's 2 different things here.

1°) To use a syzygyPath with pre-build Minic, just use the command line (this is not a GUI option yet)

Code: Select all

minic -uci -syzygyPath /your/path/to/syzygy/
2°)To compile Minic by yourself (I don't recommend this for testing, only if you want to develop in it), you will need to built Fathom lib also and link against it.
You have undefined reference because you don't link on Fathon here.
Your first issue was not having Fathom include directory, now you are missing Fathom lib itself.

Using mingw64 (under Windows OS I suppose using cywin ?), the Tools/build.sh script shall be very near to work.

Re: Minic version 2

Posted: Wed Apr 01, 2020 4:21 pm
by Gabor Szots
xr_a_y wrote: Wed Apr 01, 2020 3:48 pm That's 2 different things here.

1°) To use a syzygyPath with pre-build Minic, just use the command line (this is not a GUI option yet)

Code: Select all

minic -uci -syzygyPath /your/path/to/syzygy/
2°)To compile Minic by yourself (I don't recommend this for testing, only if you want to develop in it), you will need to built Fathom lib also and link against it.
You have undefined reference because you don't link on Fathon here.
Your first issue was not having Fathom include directory, now you are missing Fathom lib itself.

Using mingw64 (under Windows OS I suppose using cywin ?), the Tools/build.sh script shall be very near to work.
Thanks Vivien. Will do as suggested.