Introducing Igel chess engine
Moderator: Ras
-
Graham Banks
- Posts: 46265
- Joined: Sun Feb 26, 2006 10:52 am
- Location: Auckland, NZ
-
Gabor Szots
- Posts: 1594
- Joined: Sat Jul 21, 2018 7:43 am
- Location: Budapest, Hungary
- Full name: Gabor Szots
Re: Introducing Igel chess engine
Wait for Sunday (or maybe already Saturday)!
Gabor Szots
CCRL testing group
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
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)
Regression run against Igel 3.5.0 at Short Time Control (10+0.1)
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]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: 254
- Joined: Wed Feb 17, 2021 7:44 pm
- Full name: Christian Petersen
Re: Introducing Igel chess engine
Maybe, yes. But no easy way/simple switch to compile for older hardware or phones/arm-cpu.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).
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-
voffka
- Posts: 297
- Joined: Sat Jun 30, 2018 10:58 pm
- Location: Ukraine
- Full name: Volodymyr Shcherbyna
Re: Introducing Igel chess engine
Hi cpeters,
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.
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: 254
- Joined: Wed Feb 17, 2021 7:44 pm
- Full name: Christian Petersen
Re: Introducing Igel chess engine
Hello voffka!
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)): as result.
Jim included an ELF ("igel_360_64_ja_sse4_linux") which gives:
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?
Yes, I understand. In igel there's a benchmark-command. What would be the correct amount of Nodes for 3.6.0?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.
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 : 7815054Jim included an ELF ("igel_360_64_ja_sse4_linux") which gives:
Code: Select all
Nodes : 1202492Greetings!
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
Hi cpeters,
The correct bench for Igel 3.6.0 is 1202492.
-
cpeters
- Posts: 254
- Joined: Wed Feb 17, 2021 7:44 pm
- Full name: Christian Petersen
Re: Introducing Igel chess engine
Good evening voffka!
Thank you, got it working now (but it's veryvery slow on the frigging mac).
Thank you, got it working now (but it's veryvery slow on the frigging mac).
-
chessica
- Posts: 1124
- Joined: Thu Aug 11, 2022 11:30 pm
- Full name: Esmeralda Pinto
Re: Introducing Igel chess engine
Is the bench the same for all targets? How does it have to be started? In the
Console input from bench doesn't work, then it closes.
-
voffka
- Posts: 297
- Joined: Sat Jun 30, 2018 10:58 pm
- Location: Ukraine
- Full name: Volodymyr Shcherbyna
Re: Introducing Igel chess engine
Hi chessica,
To get the bench please run "igel.exe bench" in the command line.
Yes, the bench has to be the same for all flavours of igel compilation for the same version: e.g. Igel 3.6.0 correct bench must be 1202492. If it is not the same for some "custom compile" it means something is wrong and the produced binary is not actually Igel 3.6.0 in terms of playing strength.
To get the bench please run "igel.exe bench" in the command line.