Progress on Belofte

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

In sourceforge, a new 2.1.0 release is available for those who want. Build 2.1.0.3.

Still working on 2.1.3 release. As I wanted to benchmark against previous versions, I backported the bench command into 2.1.0 and fixed some bug on node counting in that release for the BruteForce algorithm. Running 2.1.0.3 with --bench command now returns perft results and Bruteforce with StaticEval together with their relative NPS.

No changes to 2.1.1 and 2.1.2 releases as I expect to release 2.1.3 soon.
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

Belofte 2.1.3 release is nearing.
I hope no further changes are due for this release and the master branch is more or less stable for the release.
If no major issues are found and optimized compiles for non-linux platforms become available, the release will be formalised.

Major changes to previous releases:
- huge improvement in speed (450% perft, 400% bruteforce) by various code optimisations
- normalisation of code style, units, compilers, etc...
- no major algorithm changes except that positional eval is standard now instead of static eval
- alfa-beta fail soft default algorithme (though one can change through the alg command)

Ps.: I went to trunk as master branch, but then I could not delete master from sf, so dropped trunk and returned back to master as main branch.

As there was some compilation problem in 2.1.2 compared to 2.1.0, there was actually a performance regression. This release should be cutting short and I hope this release will be a future baseline for all upcoming releases.

For those that want it, please have a look at the master branch and/or files section in sourceforge.

Linux versions compiled with clang 12.x
Windows versions compiled with gcc 8.x (anyone with clang 12 toolchain?)
Mac versions compiled with clang 5 (still trying to get my compile environment updated or contributions wanted)
Android/Arduino/... contributions wanted
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

Belofte 2.1.3 has been released.

It has a huge NPS improvement, resulting probably in a gain in ELO. It should beat hands down previous versions 2.0.x, 2.1.0, 2.1.1 and 2.1.2. Will have to see how this translates in the CCRL list.

Major changes:
- Change: Make positional board eval the default evaluation algorithm;
- Change: Make alpha-beta (no early cut-off) the default search algorithm;
- Bug-fix: 1 or 2 last moves not evaluated when castle is possible;
- Bug-fix: Passing `--quit` as parameter on launch no longer throws exception;
- Bug-fix: Do no longer segfault on move 128/ply 256 (regression);
- Bug-fix: xboard `undo` command does no longer break game history (eg.
`game` or `save` commands);
- Fix: Unicode characters in log-output are not well presented,
is default now;

Full release notes can be found in the README.md file and in the HISTORY.md file.

NPS improvement over 2.1.0: 4.5 times, over 2.1.1: 6 times, over 2.1.2: 8 times. (Yes, there was a slowdown as code was added)

Available versions: Linux 32 and 64 bit, Mac OS X 32 and 64 bit, Windows 64 bit.
I still have some issues with producing a good windows 32 bit version. If you need that version, please compile it yourself (C++11) or hold on. Below some speed results:

data from testrelease 2.1.3

Code: Select all

			perft	bf	
Clang (32)	4.456.424	153.033	2,58 %
Gcc (32)	3.272.417	116.122	-24,67 %
gcc native (32)	2.980.921	117.500	-31,38 %
Clang 12 (32)	4.411.127	148.974	1,54 %
Clang 12	5.464.331	187.639	25,78 %
gcc bmi2	4.286.335	152.365	-1,34 %
gcc popcnt	4.316.356	156.830	-0,65 %
gcc native	4.389.782	153.363	1,05 %
gcc	4.325.717	155.178	-0,43 %
clang	5.540.395	188.655	27,53 %
			
Average (no emulation)	4.344.381	152.966	
			
clang5 vbox mac (32)	3.609.312	93.457	-16,92 %
clang5 vbox mac	3.726.674	99.693	-14,22 %
gcc vbox win (32)	1.429.626	47.975	-67,09 %
gcc vbox win	2.900.319	92.520	-33,24 %
			
Win7-32 vbox	249.800		
Win7-64 vbox (32)	243.992	8.177	-94,38 %
Win7-64 vbox	2.852.713	97.641	-34,34 %
Win10-64 vbox (32)	tbd		
Win10-64 vbox	tbd		
I ran many tests and below test, while the number of games is insufficient to be statistically correct, give a rough indication of its score on linux. (tc=40/120+2)
More games and more time controls will give a clearer insight.

Code: Select all

   1 Little Wing 0.3               741     nan      36   98.6%    2.8%
   2 Rustic alpha 1.1              451     426      36   93.1%    8.3%
   3 Deepov 0.4.1                  451     nan      36   93.1%    2.8%
   4 Pigeon 1.5.1                  317     175      36   86.1%   11.1%
   5 Cinnamon 1.0                  280     145      36   83.3%   16.7%
   6 Belofte 0.9.18                203     130      38   76.3%   10.5%
   7 Belofte 2.1.3 xboard          131     122      36   68.1%    8.3%
   8 Bel 32 2.1.3 xboard           110     119      36   65.3%    8.3%
   9 Belofte 2.1.3 uci              55     113      38   57.9%    5.3%
  10 Samchess                       49     117      36   56.9%    2.8%
  11 Belofte 0.9.20                 35      99      40   55.0%   20.0%
  12 Bel 32 2.1.3 uci                0     108      38   50.0%   10.5%
  13 Belofte 2.1.2.4 uci           -17     105      40   47.5%   10.0%
  14 Belofte 2.1.2.4 xboard        -18     108      38   47.4%   10.5%
  15 Megalodon 1.0                 -19     103      36   47.2%   22.2%
  16 MinimalChess 0.2              -29     113      36   45.8%    8.3%
  17 Little Wing 0.2               -29     105      36   45.8%   19.4%
  18 Belofte 2.1.1.3 xboard        -46     110      38   43.4%    7.9%
  19 Belofte 2.1.0.3 uci           -70     104      40   40.0%   15.0%
  20 Belofte 2.1.0.3 xboard        -74     111      38   39.5%   10.5%
  21 Belofte 2.1.1.3 uci          -127     113      40   32.5%   10.0%
  22 Iota 0.1                     -131     117      36   31.9%   13.9%
  23 DarkTemplar 0.1              -203     110      38   23.7%   26.3%
  24 Fimbulwinter 5.05            -244     146      38   19.7%    7.9%
  25 Hippocampe 0.4.2             -451     nan      36    6.9%    2.8%
  26 Alouette 0.0.9               -564     nan      40    3.8%    7.5%
  27 Sachy 0.2                    -741     nan      36    1.4%    2.8%
To grab its code, please take master branch (or 2.1.3 branch in case of future fixes).
I will get started by working on the next 2.1.4 release.
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
Gabor Szots
Posts: 1362
Joined: Sat Jul 21, 2018 7:43 am
Location: Szentendre, Hungary
Full name: Gabor Szots

Re: Progress on Belofte

Post by Gabor Szots »

ydebilloez wrote: Thu Aug 05, 2021 12:12 pm - Change: Make positional board eval the default evaluation algorithm;
It seems to me that the default is StaticBoard. If that is positional board evaluation then what is the meaning of the PositionalBoard setting?
Gabor Szots
CCRL testing group
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

Gabor Szots wrote: Thu Aug 05, 2021 1:24 pm It seems to me that the default is StaticBoard. If that is positional board evaluation then what is the meaning of the PositionalBoard setting?
If you run with --info on the command line or give the info command, it will give you the details.
On my machine, it gives following output:

Code: Select all

belofte> info
Info for Belofte - 2.1.3
Built: on 03/08/2021 for Linux - x86_64
Compiled by: clang 12.0.0 with flags BELOFTE_NOUNICODE
Output detail - interface: 0, search: 0
Mode: belofte
Eval: Positional Board
Algo: alpha-beta
No level set, depth limited to 1
Could you please provide me with the results of the info command?
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
Gabor Szots
Posts: 1362
Joined: Sat Jul 21, 2018 7:43 am
Location: Szentendre, Hungary
Full name: Gabor Szots

Re: Progress on Belofte

Post by Gabor Szots »

ydebilloez wrote: Thu Aug 05, 2021 1:34 pm
Gabor Szots wrote: Thu Aug 05, 2021 1:24 pm It seems to me that the default is StaticBoard. If that is positional board evaluation then what is the meaning of the PositionalBoard setting?
If you run with --info on the command line or give the info command, it will give you the details.
On my machine, it gives following output:

Code: Select all

belofte> info
Info for Belofte - 2.1.3
Built: on 03/08/2021 for Linux - x86_64
Compiled by: clang 12.0.0 with flags BELOFTE_NOUNICODE
Output detail - interface: 0, search: 0
Mode: belofte
Eval: Positional Board
Algo: alpha-beta
No level set, depth limited to 1
Could you please provide me with the results of the info command?
Here is what I see (almost the same as yours):
belofte> Info for Belofte - 2.1.3
Built: on 03/08/2021 for Windows - x86_64
Compiled by: gcc 8.1.0 with flags BELOFTE_NOUNICODE _WIN32
Output detail - interface: 0, search: 0
Mode: belofte
Eval: Positional Board
Algo: alpha-beta
No level set, depth limited to 1
belofte> Bye
However, if I issue the uci command (instead of info), the default is StaticBoard.
Gabor Szots
CCRL testing group
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

Gabor Szots wrote: Thu Aug 05, 2021 1:41 pm However, if I issue the uci command (instead of info), the default is StaticBoard.
Dear Gabor,

You found a first bug... It says the default is StaticBoard, while it does initialise to PositionalBoard
so if you do nothing, it will do as info says. However, if you do issue an uci setoption command to confirm the static board, it does indeed change. (setoption name evaltype value StaticBoard)

I will post a new binary tonight with the bug fixed. The code repository has already been updated.

If you do not use the setoption command, you can continue using the existing version. If you issue the command setoption name evaltype value PositionalBoard, you can as well continue using the existing version.

Regards,
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
Gabor Szots
Posts: 1362
Joined: Sat Jul 21, 2018 7:43 am
Location: Szentendre, Hungary
Full name: Gabor Szots

Re: Progress on Belofte

Post by Gabor Szots »

Hi Yves,

I have started a tournament. Very early days but it seems a real improvement. We'll see at next week's CCRL update (probably 15th August).
Gabor Szots
CCRL testing group
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

Gabor Szots wrote: Sat Aug 07, 2021 9:03 am Hi Yves,

I have started a tournament. Very early days but it seems a real improvement. We'll see at next week's CCRL update (probably 15th August).
Thanks Gabor, I am curious to see how well it fares.
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Progress on Belofte

Post by ydebilloez »

While working on the 2.1.4 (next) release, I already published the technical documentation here: http://macchess.internetcontact.be/belo ... index.html
An update due since version 0.2.8.
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.