Booot 7.1 release

Discussion of computer chess matches and engine tournaments.

Moderator: Ras

booot
Posts: 86
Joined: Sun Jul 03, 2016 10:29 pm

Booot 7.1 release

Post by booot »

Good day all!

Booot returns. This time - with lots of changes :

1. Finally i revisited all IO and SMP code and excluded all Windows dependencies. From this time it is possible to build Booot under any OS with FreePascal (Lazarus) compiler. I build binaries also for Linux and Macos (Darwin64).
2. Completely rewritten all Asm SIMD procedures. There are 3 binaries under all platforms : for Avx2, for avx+pext(bmi2) and for avx512
3. Releases now are in GitHub with sources - https://github.com/booot76/Booot-chess- ... es/tag/7.1
4. Finally i found and fixed the oldest BUG, causing hangings and crashes in SMP (especially with big number of threads, like TCEC). It was ugly.
5. Fixed bug "wrong PV" under cutechess-cli
6. Fixed bug cousing problems with cutechess-cli in "concurensy>1" mode. Now it works fine.
7. New , bigger, NN. From this time - NN will be inside the binary.
8. Booot is quicker, smarter, and, i hope, stronger.

Enjoy!

Big thanks to Volodymyr Shcherbyna (Igel's author) for information, education and motivation. @Voffka - we did it! :D
Last edited by booot on Thu Mar 02, 2023 10:35 pm, edited 2 times in total.
voffka
Posts: 297
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Booot 7.1 release

Post by voffka »

Congrats Alex! Great release with so many improvements!
User avatar
Graham Banks
Posts: 43459
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Booot 7.1 release

Post by Graham Banks »

Exciting news! :)
gbanksnz at gmail.com
User avatar
pohl4711
Posts: 2662
Joined: Sat Sep 03, 2011 7:25 am
Location: Berlin, Germany
Full name: Stefan Pohl

Re: Booot 7.1 release

Post by pohl4711 »

The good news is, that Booot 7.1 seems to run fine in cutechess-cli (running 20 games simultaneously)... (Booot 7 did not run stable in this environment). So, I started the testrun for my SPCC-Ratinglist, were Booot 7 misses, because of that strange behaviour in cutechess-cli.
Fingers crossed...
voffka
Posts: 297
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Booot 7.1 release

Post by voffka »

Hi pohl4711,
pohl4711 wrote: Fri Mar 03, 2023 8:22 am The good news is, that Booot 7.1 seems to run fine in cutechess-cli (running 20 games simultaneously)... (Booot 7 did not run stable in this environment). So, I started the testrun for my SPCC-Ratinglist, were Booot 7 misses, because of that strange behaviour in cutechess-cli.
Fingers crossed...
Yes, it was intentionally a focus to get cutechess-cli fixed in Boot uci handling. It should work flawlessly as of 7.1 release.
FreemanZlat
Posts: 17
Joined: Mon May 30, 2022 10:50 am
Full name: Ivan Maklyakov

Re: Booot 7.1 release

Post by FreemanZlat »

Hi Alex
Looks like some problems with cutechess are still there. I get an error when starting a tournament with the option concurrent games >1. When =1 everything works fine.
CuteChess GUI Version 1.2.0
Engine version: booot71_avx2_pext.exe
Screenshot of the error
FreemanZlat
Posts: 17
Joined: Mon May 30, 2022 10:50 am
Full name: Ivan Maklyakov

Re: Booot 7.1 release

Post by FreemanZlat »

The problem might be related to the logical cores of the processor.
When concurrent games = the number of physical cores, everything is fine. If this value is greater, an error occurs after some time.
My processor is i7-11800H (8 cores, 16 threads)
booot
Posts: 86
Joined: Sun Jul 03, 2016 10:29 pm

Re: Booot 7.1 release

Post by booot »

Good day FreemanZlat! Thanks for report. Seems the cutechess-cli has some timeout after every copy of engine starts. And it drops engine away after it. Booot needs some time to initialize itself + read the NN +calc KPK endgame on the flow etc. May be it can take longer time when number of logical threads less than number of already started copies. I will research this.
Wolfgang
Posts: 964
Joined: Sat May 13, 2006 1:08 am

Re: Booot 7.1 release

Post by Wolfgang »

No problems here with BanksiaGUI and Shredder Classic with concurrency=12 or 14 on a 16C/32T CPU (Ryzen 9 3950x)
Best
Wolfgang
CEGT-Team
www.cegt.net
www.cegt.forumieren.com
jkominek
Posts: 68
Joined: Tue Sep 04, 2018 5:33 am
Full name: John Kominek

Re: Booot 7.1 release

Post by jkominek »

booot wrote: Fri Mar 03, 2023 11:31 pm Good day FreemanZlat! Thanks for report. Seems the cutechess-cli has some timeout after every copy of engine starts. And it drops engine away after it. Booot needs some time to initialize itself + read the NN +calc KPK endgame on the flow etc. May be it can take longer time when number of logical threads less than number of already started copies. I will research this.
Part of the problem could definitely be the initialization timeout that is hard-coded into cutechess. The timeout value really should be a command line parameter, but isn't.

This has become a more frequent issue as engines incorporate larger neural nets requiring longer initialization times. I've also had troubles when running classical time controls while having large hash table sizes set. When 24+ games are run in parallel that increases initialization time too, and cutechess_cli becomes increasingly likely to incorrectly claim an engine instance failed to initialize, and exits with a big splat.

Somehow by accident I've managed to create a setup that compiles cutechess. For my use I have taken the easy way out and upped the timeout value. I think I once saw on TCEC chat that they did the same thing there.

From cutechess/projects/lib/src/chessengine.cpp:

Code: Select all

ChessEngine::ChessEngine(QObject* parent)
        : ChessPlayer(parent),
          m_id(s_count++),
          m_pingState(NotStarted),
          m_pinging(false),
          m_whiteEvalPov(false),
          m_pondering(false),
          m_pingTimer(new QTimer(this)),
          m_quitTimer(new QTimer(this)),
          m_idleTimer(new QTimer(this)),
          m_protocolStartTimer(new QTimer(this)),
          m_ioDevice(nullptr),
          m_restartMode(EngineConfiguration::RestartAuto)
{
        m_pingTimer->setSingleShot(true);
        m_pingTimer->setInterval(45000); // was 15000
        connect(m_pingTimer, SIGNAL(timeout()), this, SLOT(onPingTimeout()));