Introducing Igel chess engine

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Hey peter,
peter wrote: Thu Aug 20, 2020 5:04 pm My CPU is Intel Xeon X5670 x 12.
I look into it, you can compile Igel using the following cmd line:

Code: Select all

g++ -Wall -pthread -O3 -DEVAL_NNUE=1 -msse -msse3 -mpopcnt -DUSE_POPCNT=1 -DUSE_SSE41=1 -msse4.1 -DUSE_SSSE3=1 -mssse3 -DUSE_SSE2=1 -msse2 -DSYZYGY_SUPPORT=TRUE -march=native -flto *.cpp fathom/tbprobe.c nnue/*.cpp nnue/features/*.cpp -D_BTYPE=0 -DNDEBUG -o really_old_cpu_igel
In case you want me to compile a binary for you ping me in PM, I will share with you the compile.
User avatar
Guenther
Posts: 4606
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: Introducing Igel chess engine

Post by Guenther »

voffka wrote: Fri Aug 21, 2020 10:28 pm Hey peter,
peter wrote: Thu Aug 20, 2020 5:04 pm My CPU is Intel Xeon X5670 x 12.
I look into it, you can compile Igel using the following cmd line:

Code: Select all

g++ -Wall -pthread -O3 -DEVAL_NNUE=1 -msse -msse3 -mpopcnt -DUSE_POPCNT=1 -DUSE_SSE41=1 -msse4.1 -DUSE_SSSE3=1 -mssse3 -DUSE_SSE2=1 -msse2 -DSYZYGY_SUPPORT=TRUE -march=native -flto *.cpp fathom/tbprobe.c nnue/*.cpp nnue/features/*.cpp -D_BTYPE=0 -DNDEBUG -o really_old_cpu_igel
In case you want me to compile a binary for you ping me in PM, I will share with you the compile.
After updating my whole msys2 framework I compiled a version now for my old hardware (no popcount)

Code: Select all

g++ -std=c++17 -Wall -static -O3 *.cpp fathom/tbprobe.c nnue/*.cpp nnue/features/*.cpp -DEVAL_NNUE=1 -DSYZYGY_SUPPORT=TRUE -DNDEBUG -march=native -oIgel.exe
I had a hard time though to realize my build works. Usually I test it from cmd first, but it always crashed after 'go _whatever_'
Just in a last attempt I tried it in a GUI and here it worked. Is it supposed to not work anymore from cmd?

Code: Select all

Igel 2.7.0 64 by V. Medvedev, V. Shcherbyna
uci
id name Igel 2.7.0 64
id author V. Medvedev, V. Shcherbyna
option name Hash type spin default 128 min 1 max 1048576
option name Threads type spin default 1 min 1 max 1024
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 128
option name Ponder type check default false
option name Skill Level type spin default 20 min 0 max 20
option name EvalFile type string default ./eval/nn.bin
uciok
ucinewgame
isready
readyok
//until here it works from cmd
//any go command will make my compile crash from here
BTW I had quite some warnings.
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
User avatar
Scally
Posts: 232
Joined: Thu Sep 28, 2017 9:34 pm
Location: Bermondsey, London
Full name: Alan Cooper

Re: Introducing Igel chess engine

Post by Scally »

Hi all,

I managed to build Igel 2.7.0-NN on the Raspberry Pi 4.

Thanks to Volodymyr for the hint to use -DUSE_NEON=1 in my cmake

cmake .. -DEVAL_NNUE=1 -DUSE_NEON=1 -DSYZYGY_SUPPORT=TRUE

I found that when starting it manually if you add the full path to the eval file, then “go infinite” or whatever works.

i.e. setoption name EvalFile value /home/Al/Igel_2_7_0.nnue

Code: Select all

Al@RPi4-SSD:~ $ ./igel270-NN+neon 
Igel 2.7.0 CUSTOM by V. Medvedev, V. Shcherbyna
uci
id name Igel 2.7.0 CUSTOM
id author V. Medvedev, V. Shcherbyna
option name Hash type spin default 128 min 2 max 1048576
option name Threads type spin default 1 min 1 max 1024
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 128
option name Ponder type check default false
option name Skill Level type spin default 20 min 0 max 20
option name EvalFile type string default ./eval/nn.bin
uciok
setoption name EvalFile value /home/Al/Igel_2_7_0.nnue
Using EvalFile /home/Al/Igel_2_7_0.nnue
go infinite
info depth 1 seldepth 1 score cp 30 time 0 nodes 25 tbhits 0 pv c2c4
info depth 2 seldepth 2 score cp 108 time 1 nodes 67 tbhits 0 pv e2e4 g7g6
info depth 3 seldepth 3 score cp 44 time 2 nodes 147 tbhits 0 pv e2e4 g7g6 h2h3
info depth 4 seldepth 4 score cp 110 time 4 nodes 293 tbhits 0 pv e2e4 e7e6 d2d4 h7h6
info depth 5 seldepth 9 score cp 92 time 9 nodes 719 tbhits 0 pv e2e4 e7e6 d2d4 h7h6 c2c4
info depth 6 seldepth 9 score cp 38 time 21 nodes 1830 tbhits 0 pv e2e4 c7c5 g1f3 g8f6 b1c3 d7d6
info depth 7 seldepth 10 score cp 56 time 49 nodes 4632 tbhits 0 pv d2d4 d7d5 c2c4 d5c4 g1f3 g8f6 b1c3
info depth 8 seldepth 17 score cp 68 time 69 nodes 6593 tbhits 0 pv d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 g1f3 c7c5 c4d5
info depth 9 seldepth 19 score cp 68 time 96 nodes 9375 tbhits 0 pv d2d4 d7d5 c2c4 e7e6 g1f3 g8f6 b1c3 c7c5 c4d5
info depth 10 seldepth 21 score cp 52 time 138 nodes 16198 tbhits 0 pv d2d4 e7e6 c2c4 g8f6 g1f3 f8b4 c1d2 c7c5 d2b4 c5b4 d4d5 e6d5 c4d5
Here’s the result of a 1024 game cutechess tournament run on my RPi 4 between Igel 2.6.0 & Igel 2.7.0-NN
There’s enough games to show a significant gain in ELO:

Code: Select all

ELO File: ./elo/08211602.txt
 
PGN File: ./pgn/08211602.pgn
Time Control: Time Control-> base+inc: 20+0.400
Games: 1024
Threads: 1
Hash: 64

Current date : time (BST)
Date: 08/21/20 : 21:29:11

Projected-> Time: 5h:34m:26s
     Run -> Time: 5h:26m:19s

3073
Rank Name               Rating   Δ     +    -     #     Σ    Σ%     W    L    D   W%    =%   OppR 
---------------------------------------------------------------------------------------------------------

   1 I2-Igel-NN-v2.7.0   3126   0.0   19   19  1024  661.5  64.6  531  232  261  51.9  25.5  3020 
   2 I1-Igel-v2.6.0      3020 105.2   19   19  1024  362.5  35.4  232  531  261  22.7  25.5  3126 
---------------------------------------------------------------------------------------------------------

  Δ = delta from the next higher rated opponent
  # = number of games played
  Σ = total score, 1 point for win, 1/2 point for draw

LOS:
                   I2 I1
I2-Igel-NN-v2.7.0    100
I1-Igel-v2.6.0      0

Cheers,

Al.
User avatar
Guenther
Posts: 4606
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: Introducing Igel chess engine

Post by Guenther »

Scally wrote: Sat Aug 22, 2020 2:24 pm Hi all,

I managed to build Igel 2.7.0-NN on the Raspberry Pi 4.

Thanks to Volodymyr for the hint to use -DUSE_NEON=1 in my cmake

cmake .. -DEVAL_NNUE=1 -DUSE_NEON=1 -DSYZYGY_SUPPORT=TRUE

I found that when starting it manually if you add the full path to the eval file, then “go infinite” or whatever works.

i.e. setoption name EvalFile value /home/Al/Igel_2_7_0.nnue

...


Cheers,

Al.
Indeed Al, it needs the full path set if used from cmd!

Code: Select all

Igel 2.7.0 64 by V. Medvedev, V. Shcherbyna
uci
id name Igel 2.7.0 64
id author V. Medvedev, V. Shcherbyna
option name Hash type spin default 128 min 1 max 1048576
option name Threads type spin default 1 min 1 max 1024
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 128
option name Ponder type check default false
option name Skill Level type spin default 20 min 0 max 20
option name EvalFile type string default ./eval/nn.bin
uciok
ucinewgame
isready
readyok
setoption name EvalFile value C:\Engines\UCI\Igel_270-64\eval\nn.bin
Using EvalFile C:\Engines\UCI\Igel_270-64\eval\nn.bin
go depth 15
info depth 1 seldepth 1 score cp 30 time 1 nodes 25 tbhits 0 pv c2c4
info depth 2 seldepth 2 score cp 108 time 6 nodes 67 tbhits 0 pv e2e4 g7g6
info depth 3 seldepth 3 score cp 44 time 12 nodes 147 tbhits 0 pv e2e4 g7g6 h2h3
info depth 4 seldepth 4 score cp 110 time 19 nodes 293 tbhits 0 pv e2e4 e7e6 d2d4 h7h6
info depth 5 seldepth 9 score cp 92 time 29 nodes 719 tbhits 0 pv e2e4 e7e6 d2d4 h7h6 c2c4
info depth 6 seldepth 9 score cp 38 time 46 nodes 1830 tbhits 0 pv e2e4 c7c5 g1f3 g8f6 b1c3 d7d6
info depth 7 seldepth 10 score cp 56 time 76 nodes 4632 tbhits 0 pv d2d4 d7d5 c2c4 d5c4 g1f3 g8f6 b1c3
info depth 8 seldepth 17 score cp 68 time 100 nodes 6593 tbhits 0 pv d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 g1f3 c7c5 c4d5
info depth 9 seldepth 19 score cp 68 time 131 nodes 9375 tbhits 0 pv d2d4 d7d5 c2c4 e7e6 g1f3 g8f6 b1c3 c7c5 c4d5
info depth 10 seldepth 21 score cp 52 time 199 nodes 16198 tbhits 0 pv d2d4 e7e6 c2c4 g8f6 g1f3 f8b4 c1d2 c7c5 d2b4 c5b4 d4d5 e6d5 c4d5
info depth 11 seldepth 21 score cp 52 time 330 nodes 30365 tbhits 0 pv d2d4 d7d5 c2c4 d5c4 g1f3 e7e6 b1c3 c7c5 e2e4 c5d4 f3d4 f8b4 f1c4
info depth 12 seldepth 21 score cp 62 time 588 nodes 58842 tbhits 0 pv d2d4 g8f6 g1f3 e7e6 c2c4 f8e7 b1c3 e8g8 e2e4 d7d6 d4d5 e6d5
info depth 13 seldepth 25 score cp 54 time 1018 nodes 106800 tbhits 0 pv d2d4 g8f6 g1f3 e7e6 c2c4 f8e7 b1c3 d7d5 c1f4 e8g8 e2e3 b8d7 c4d5 f6d5 c3d5 e6d5 f1d3
info depth 14 seldepth 25 score cp 54 time 1229 nodes 129697 tbhits 0 nps 103588 pv d2d4 g8f6 g1f3 e7e6 c2c4 f8e7 b1c3 d7d5 c1f4 e8g8 e2e3 b8d7 c4d5 f6d5 c3d5 e6d5 f1d3
info depth 15 seldepth 26 score cp 52 time 1938 nodes 209488 tbhits 0 nps 104341 pv d2d4 g8f6 c2c4 e7e6 g1f3 f8e7 b1c3 d7d5 c1f4 e8g8 e2e3 b8d7 f1d3 c7c6 e1g1
bestmove d2d4 ponder g8f6
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Introducing Igel chess engine

Post by OliverBr »

voffka wrote: Tue Jul 03, 2018 12:28 pm Removed features:

- xboard
Why would you do that?
Chess Engine OliThink: http://brausch.org/home/chess
OliThink GitHub:https://github.com/olithink
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

OliverBr wrote: Sat Aug 22, 2020 3:33 pm
voffka wrote: Tue Jul 03, 2018 12:28 pm Removed features:

- xboard
Why would you do that?
Clarity of code. Many subsystems have been rewritten from scratch in Igel the moment I forked from GreKo 2018.01. So rewriting xboard seemed like a waste of time when UCI was already in place.
User avatar
pohl4711
Posts: 2435
Joined: Sat Sep 03, 2011 7:25 am
Location: Berlin, Germany
Full name: Stefan Pohl

Re: Introducing Igel chess engine

Post by pohl4711 »

I finished my 7000 games testrun of Igel 2.7.0 (using it's internal nnue). All worked fine: No timelosses, disconnects or crashes.

https://www.sp-cc.de
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Hello pohl4711,
pohl4711 wrote: Sun Aug 23, 2020 9:17 am I finished my 7000 games testrun of Igel 2.7.0 (using it's internal nnue). All worked fine: No timelosses, disconnects or crashes.

https://www.sp-cc.de
Thank you for the test. It is great to see that it was stable, and the performance is descent.
User avatar
Werner
Posts: 2871
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Re: Introducing Igel chess engine

Post by Werner »

I have an intel core I7 3770K Ivy Bridge.
Normally popcount versions are running here - but Igel 2.7.0 crashes (only avx).
Anybody has compiled a version running here?
Werner
Modern Times
Posts: 3546
Joined: Thu Jun 07, 2012 11:02 pm

Re: Introducing Igel chess engine

Post by Modern Times »

Werner wrote: Thu Aug 27, 2020 7:36 pm I have an intel core I7 3770K Ivy Bridge.
Normally popcount versions are running here - but Igel 2.7.0 crashes (only avx).
Anybody has compiled a version running here?
Yes, neither of the two compiles provided will run on my AMD FX8350 either. Popcount and SSE4.2 compiles like Stockfish modern run fine on this box.

The only machine that I have that I can run Igel on is my Ryzen laptop.