Introducing Igel chess engine

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

Moderator: Ras

Chessqueen
Posts: 5685
Joined: Wed Sep 05, 2018 2:16 am
Location: Moving
Full name: Jorge Picado

Re: Introducing Igel chess engine

Post by Chessqueen »

Uri Blass wrote: Wed Feb 01, 2023 8:17 am
Chessqueen wrote: Wed Feb 01, 2023 1:07 am
voffka wrote: Tue Jan 31, 2023 6:43 pm Hi Uri,
Uri Blass wrote: Tue Jan 31, 2023 6:32 pm For some reason Igel does not work for me with arena3.5.1
I have not the same problem with other gui's.

I wonder if the problem is the fact that igel quit after getting some command that it does not understand unlike other engines like stockfish that respond with an error message but the engine does not stop.
Make sure you set the communication protocol type explicitely to UCI instead of Autodetect.
I did and it still does not work under Arena 3.5.1
For me it works under arena3.5.1
Not sure if you did it correctly

Instructions:
1)I see File PGN EPD Game Position Levels Engines and I Click on Engines
2)I click on manage that is the top option.
3)I choose details
4)I go down on my list of engines and Choose Igel-x64
5)I clikc on General(I think that it is the default option if I do not change it)
6)I choose UCI in the type(I have 4 options that I can choose(AutoDetect UCI Winboard,Winboard (old))
I simply reinstalled Arena and it worked
Next Match is being played with my other computer agains Koivisto 9, which I believe they should be equal

Rank Engine Score St Ig S-B
1 Stockfish_13_win_x64_avx2 29.0/50 · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· · =======1===1=1=============1============1=1=1===1= 609.00
2 Igel-x64_bmi2_avx2_3_4_0 21.0/50 =======0===0=0=============0============0=0=0===0= · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· · 609.00


50 games played / Tournament is finished

Tournament start: 2023.01.31, 05:56:59
Latest update: 2023.02.02, 05:47:13
Site/ Country: DESKTOP-OFQ3C0P, United States
Level: Blitz 1/2
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz 3.40 GHz with 16.0 GB Memory
Operating system: Windows 10 Home Home Edition (Build 9200) 64 bit
PGN-File: 8/8/8/6k1/8/5BPb/5K1P/8 b - - 2 1
Table created with: Arena 3.5.1
Chessqueen
Posts: 5685
Joined: Wed Sep 05, 2018 2:16 am
Location: Moving
Full name: Jorge Picado

Re: Introducing Igel chess engine

Post by Chessqueen »

I simply reinstalled Arena and it worked
Next Match is being played with my other computer agains Koivisto 9, which I believe they should be equal

Rank Engine Score St Ig S-B
1 Stockfish_13_win_x64_avx2 29.0/50 · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· · =======1===1=1=============1============1=1=1===1= 609.00
2 Igel-x64_bmi2_avx2_3_4_0 21.0/50 =======0===0=0=============0============0=0=0===0= · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· · 609.00


50 games played / Tournament is finished

Tournament start: 2023.01.31, 05:56:59
Latest update: 2023.02.02, 05:47:13
Site/ Country: DESKTOP-OFQ3C0P, United States
Level: Blitz 1/2
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz 3.40 GHz with 16.0 GB Memory
Operating system: Windows 10 Home Home Edition (Build 9200) 64 bit
PGN-File: 8/8/8/6k1/8/5BPb/5K1P/8 b - - 2 1
Table created with: Arena 3.5.1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==============================================================================================================================
Here is the other match which being played on my other computer against Koivisto 9

Rank Engine Score Ig Ko S-B
1 Igel-x64_bmi2_avx2_3_4_0 21.0/42 · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· · ========================01================ 441.00
1 Koivisto_9.0-windows-avx2-pgo 21.0/42 ========================10================ · ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· ·· · 441.00


42 of 50 games played

Tournament start: 2023.01.31, 05:56:59
Latest update: 2023.02.02, 06:00:42
Site/ Country: DESKTOP-OFQ3C0P, United States
Level: Blitz 1/2
Hardware: AMD E2-7110 APU with AMD Radeon R2 Graphics with 6.9 GB Memory
Operating system: Windows 10 Home Home Edition (Build 9200) 64 bit
PGN-File: 8/8/8/6k1/8/5BPb/5K1P/8 b - - 2 1
Table created with: Arena 3.5.1
voffka
Posts: 297
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Image

Igel 3.5.0 at https://github.com/vshcherbyna/igel/releases/tag/3.5.0 (official executable binaries for Windows and network).

This release brings marginal improvements in strength as a result of a switch to new network architecture and re-training network from scratch.

This version only supports AVX2 builds but I am considering to look at adding AVX512 support in the future releases.

What's new:

- new network architecture
- new network c049c117

Regression run against Igel 3.4.0 at Long Time Control (60+0.6)

http://chess.grantnet.us/test/32491/

Code: Select all

ELO   | 43.10 +- 3.70 (95%)
CONF  | 60.0+0.60s Threads=1 Hash=64MB
GAMES | N: 17568 W: 5631 L: 3463 D: 8474
Regression run against Igel 3.4.0 at Short Time Control (10+0.1)

http://chess.grantnet.us/test/32490/

Code: Select all

ELO   | 38.72 +- 3.35 (95%)
CONF  | 10.0+0.10s Threads=1 Hash=8MB
GAMES | N: 22976 W: 7639 L: 5089 D: 10248
User avatar
Graham Banks
Posts: 43988
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Introducing Igel chess engine

Post by Graham Banks »

Thanks, Volodymyr. :)
gbanksnz at gmail.com
User avatar
Gabor Szots
Posts: 1437
Joined: Sat Jul 21, 2018 7:43 am
Location: Budapest, Hungary
Full name: Gabor Szots

Re: Introducing Igel chess engine

Post by Gabor Szots »

Wait for Sunday (or maybe already Saturday)!
Gabor Szots
CCRL testing group
voffka
Posts: 297
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Igel 3.6.0 at https://github.com/vshcherbyna/igel/releases/tag/3.6.0 (official executable binaries for Windows and network).

This release brings marginal improvements in strength mostly in search.

What's new:

- extend by 2 in singular extension on non pv move
- improve low bound condition in singular extension
- check beta score in probcut condition
- store in TT in standing pat in qsearch
- implement iid
- tune null move depth
- tune razor depth
- remove instant moves handling

Regression run against Igel 3.5.0 at Long Time Control (60+0.6)

Code: Select all

Elo   | 21.28 +- 3.60 (95%)
Conf  | 60.0+0.60s Threads=1 Hash=64MB
Games | N: 8860 W: 2461 L: 1919 D: 4480
Penta | [7, 798, 2299, 1298, 28]
Regression run against Igel 3.5.0 at Short Time Control (10+0.1)

Code: Select all

Elo   | 20.07 +- 3.21 (95%)
Conf  | 10.0+0.10s Threads=1 Hash=8MB
Games | N: 13918 W: 3953 L: 3150 D: 6815
Penta | [76, 1392, 3306, 2023, 162]
cpeters
Posts: 186
Joined: Wed Feb 17, 2021 7:44 pm
Full name: Christian Petersen

Re: Introducing Igel chess engine

Post by cpeters »

Compiling
Official compilation method involves cmake and gcc/Visual Studio 2019 and assumes a modern CPU with AVX2 support (most of the computers produced in last 9 years).
Maybe, yes. But no easy way/simple switch to compile for older hardware or phones/arm-cpu. :-(

Code: Select all

$ make                                                                
g++ -Wall -std=c++17 -mpopcnt -pthread -lstdc++ -lm -O3 -march=native -flto=auto -DEVALFILE=\"weights/c049c1  17\" *.cpp fathom/tbprobe.cpp -DNDEBUG -D_BTYPE=0 -DSYZYGY_SUPPORT=TRUE -o igel                               
main.cpp: In function ‘int main(int, const char**)’:                                                          
main.cpp:28:19: error: ‘USE_AVX2’ was not declared in this scope                                              
   28 |     static_assert(USE_AVX2 == 1, "AVX2 is the minimum supported build type");                         
      |                   ^~~~~~~~                                                                            
nnue.cpp: In member function ‘int32_t Transformer::transform(Position&, uint8_t*, std::size_t)’:
nnue.cpp:152:23: warning: unused variable ‘offset’ [-Wunused-variable]
  152 |         std::uint32_t offset = (HalfDimensions / 2) * side;
      |                       ^~~~~~
nnue.cpp:145:12: warning: unused variable ‘acc’ [-Wunused-variable]
  145 |     auto & acc  = s->accumulator.accumulation;
      |            ^~~
nnue.cpp: In member function ‘void Transformer::incremental(Position&)’:
nnue.cpp:222:31: warning: unused variable ‘offset’ [-Wunused-variable]
  222 |                 std::uint32_t offset = HalfDimensions * removed[index];
      |                               ^~~~~~
nnue.cpp:236:27: warning: unused variable ‘offset’ [-Wunused-variable]
  236 |             std::uint32_t offset = HalfDimensions * added[index];
      |                           ^~~~~~
nnue.cpp: In member function ‘void Transformer::refresh(Position&)’:
nnue.cpp:256:23: warning: unused variable ‘ci’ [-Wunused-variable]
  256 |         std::uint32_t ci = pos.getActiveIndexes(c, indexes);
      |                       ^~
nnue.cpp:252:12: warning: unused variable ‘accumulator’ [-Wunused-variable]
  252 |     auto & accumulator = pos.state()->accumulator;
      |            ^~~~~~~~~~~
nnue.cpp: In static member function ‘static uint8_t* ClippedReLU<WeightScaleBits, InputDimensions>::propagate(int32_t*, char*)’:
nnue.cpp:389:27: error: ‘chunks’ was not declared in this scope
  389 |     std::uint32_t start = chunks * SIMD_WIDTH;
      |                           ^~~~~~
nnue.cpp: In instantiation of ‘int32_t* Layer<OutputDimensions, InputDimensions>::propagate(uint8_t*, char*) [with int OutputDimensions = 16; int InputDimensions = 1024; int32_t = int; uint8_t = unsigned char]’:
nnue.cpp:352:36:   required from herennue.cpp:328:29: warning: unused variable ‘offset’ [-Wunused-variable]
  328 |         const std::uint32_t offset = i * InputDimensions;
      |                             ^~~~~~
nnue.cpp: In instantiation of ‘int32_t* Layer<OutputDimensions, InputDimensions>::propagate(uint8_t*, char*) [with int OutputDimensions = 32; int InputDimensions = 32; int32_t = int; uint8_t = unsigned char]’:
nnue.cpp:359:33:   required from here
nnue.cpp:328:29: warning: unused variable ‘offset’ [-Wunused-variable]
nnue.cpp: In instantiation of ‘int32_t* Layer<OutputDimensions, InputDimensions>::propagate(uint8_t*, char*) [with int OutputDimensions = 1; int InputDimensions = 32; int32_t = int; uint8_t = unsigned char]’:
nnue.cpp:361:33:   required from here
nnue.cpp:328:29: warning: unused variable ‘offset’ [-Wunused-variable]
make: *** [Makefile:34: basic] fauldrominai 1
Please reconsider (https://en.wikipedia.org/wiki/The_Hare_and_the_Hedgehog -->> not a mention of some avx2)!
voffka
Posts: 297
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Hi cpeters,
cpeters wrote: Sun Dec 29, 2024 2:33 am Maybe, yes. But no easy way/simple switch to compile for older hardware or phones/arm-cpu. :-(
Supporting mobile and older CPUs are on my todo list, but the list is very long and I need to choose priorities.

The reason why I focus only on modern CPUs for the moment is that I want to make sure that the mainstream community get's latest Igel builds as soon as possible.
cpeters
Posts: 186
Joined: Wed Feb 17, 2021 7:44 pm
Full name: Christian Petersen

Re: Introducing Igel chess engine

Post by cpeters »

Hello voffka!
voffka wrote: Sun Dec 29, 2024 3:30 pm Supporting mobile and older CPUs are on my todo list, but the list is very long and I need to choose priorities.

The reason why I focus only on modern CPUs for the moment is that I want to make sure that the mainstream community get's latest Igel builds as soon as possible.
Yes, I understand. In igel there's a benchmark-command. What would be the correct amount of Nodes for 3.6.0?

If I compile locally the altered source from the package in this thread:
viewtopic.php?t=83775&start=590

I get on both computers (a macbook with m2 (ARM) and an older machine with Debian (x86-64)):

Code: Select all

Nodes : 7815054
as result.

Jim included an ELF ("igel_360_64_ja_sse4_linux") which gives:

Code: Select all

Nodes : 1202492
Which one would be correct, if any? Will try later with the phone (armv8/in termux with clang).

Greetings!

ps
Maybe I should use the built-in perft? But how?
voffka
Posts: 297
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Hi cpeters,
cpeters wrote: Mon Dec 30, 2024 2:45 am Which one would be correct, if any? Will try later with the phone (armv8/in termux with clang).
The correct bench for Igel 3.6.0 is 1202492.