New engine releases 2020

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

Moderators: hgm, Rebel, chrisw

User avatar
Werner
Posts: 2871
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Re: New engine releases 2020

Post by Werner »

connor_mcmonigle wrote: Sun Oct 18, 2020 7:23 am Seer 1.0

I've spent a good chunk of my free time this summer writing a chess engine in C++ which can be found here: https://github.com/connormcmonigle/seer ... s/tag/v1.0. It should, hopefully, play at around 2900-3000 elo if AVX2 extensions are available (around 300-400 knps should be expected with AVX2). It uses a custom NNUE implementation with training code written in PyTorch and inference code relying on OpenMP SIMD for auto vectorization.

I'm not providing any compiles at this time, though compiling Seer should, with any luck, be straight forward (compilation instructions can be found in the readme). I'd love to see my engine appear on various rating lists if that's a possibility.

Thanks in advance and be sure to inform me if you encounter any issues,
Connor
So we have to made an own compile and a own net with your testing code ?
Werner
User avatar
Graham Banks
Posts: 41415
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: New engine releases 2020

Post by Graham Banks »

Werner wrote: Sun Oct 18, 2020 11:13 am
connor_mcmonigle wrote: Sun Oct 18, 2020 7:23 am Seer 1.0

I've spent a good chunk of my free time this summer writing a chess engine in C++ which can be found here: https://github.com/connormcmonigle/seer ... s/tag/v1.0. It should, hopefully, play at around 2900-3000 elo if AVX2 extensions are available (around 300-400 knps should be expected with AVX2). It uses a custom NNUE implementation with training code written in PyTorch and inference code relying on OpenMP SIMD for auto vectorization.

I'm not providing any compiles at this time, though compiling Seer should, with any luck, be straight forward (compilation instructions can be found in the readme). I'd love to see my engine appear on various rating lists if that's a possibility.

Thanks in advance and be sure to inform me if you encounter any issues,
Connor
So we have to made an own compile and a own net with your testing code ?
It would be more helpful if compiles were provided by the engine author.
gbanksnz at gmail.com
Gabor Szots
Posts: 1362
Joined: Sat Jul 21, 2018 7:43 am
Location: Szentendre, Hungary
Full name: Gabor Szots

Re: New engine releases 2020

Post by Gabor Szots »

connor_mcmonigle wrote: Sun Oct 18, 2020 7:23 am I'm not providing any compiles at this time, though compiling Seer should, with any luck, be straight forward (compilation instructions can be found in the readme).
I get this error message:
In file included from include/move.h:11,
from include/position_history.h:6,
from include/board.h:15,
from include/uci.h:8,
from seer.cc:4:
include/table_generation.h:395:87: in 'constexpr' expansion of 'chess::slider_attack_tbl<12>(chess::piece_type::rook, chess::rook_deltas())'
include/table_generation.h:368:13: in 'constexpr' expansion of 'chess::over_all<chess::slider_attack_tbl<max_num_blockers>::slider_attack_tbl<std::array<chess::delta, 4> >::<lambda(chess::tbl_square)> >(<lambda closure object>chess::slider_attack_tbl<max_num_blockers>::slider_attack_tbl<std::array<chess::delta, 4> >::<lambda(chess::tbl_square)>{((chess::slider_attack_tbl<12>*)this), (* & deltas)})'
include/square.h:284:8: in 'constexpr' expansion of '(& f)->chess::slider_attack_tbl<max_num_blockers>::slider_attack_tbl<std::array<chess::delta, 4> >::<lambda(chess::tbl_square)>(chess::tbl_square{i, j})'
include/table_generation.h:372:51: in 'constexpr' expansion of 'chess::pdep_compile_time(blocker_data, ((uint64_t)mask.chess::square_set::data))'
include/table_generation.h:44:12: error: 'constexpr' evaluation operation count exceeds limit of 33554432 (use '-fconstexpr-ops-limit=' to increase the limit)
44 | if(src & bb){
| ~~~~^~~~
EDIT: I used -fconstexpr-ops-limit=1000000000 in the command line and the above message disappeared but instead the I got a huge error file. As my compiling capabilities are very limited I will stop at this point. Please provide exes.

BTW, congratulations for making a 2900+ chess engine in one single summer. Many authors spend a lifetime to reach that level.
Gabor Szots
CCRL testing group
connor_mcmonigle
Posts: 530
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle »

jorose wrote: Sun Oct 18, 2020 9:12 am Congratulations on the release!

It's awesome that you also released your training code and I like that you have separate testing code in your project. Looks great and I'm looking forward to playing around with it!
Thanks so much for the kind words! Your progress on Winter was a huge inspiration and motivated me to take a stab at chess programming. However, I wouldn't regard my testing code as anything commendable (it's hardly comprehensive as it really just serves to validate my incremental updates work via fuzzing and sanity check some things).
Werner wrote: Sun Oct 18, 2020 11:13 am So we have to made an own compile and a own net with your testing code ?
The network weights I'm currently using for testing can be found on the release page here (save.bin): https://github.com/connormcmonigle/seer ... s/tag/v1.0
When running the engine, the Weights UCI paramter must be set to the absolute path to the downloaded weights file. It would be unreasonable to expect people to train their own networks if they just wanted to use my engine.
Graham Banks wrote: Sun Oct 18, 2020 11:15 am It would be more helpful if compiles were provided by the engine author.
My apologies. I guess I should have invested more time into providing binaries with the initial release. Let me elaborate on why I opted not to provide binaries at this time. To get reasonable performance, my engine has to be compiled for either SSE, AVX, AVX2 or AVX-512 depending on availablility. Additionally, BMI should be used if available. This would result in my distributing 8 separate binaries to effectively cover everyone's hardware. This sounds a bit like a nightmare to me. If you provide me with your system's specifications, I can hopefully produce an optimized compile for you :)
User avatar
Graham Banks
Posts: 41415
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: New engine releases 2020

Post by Graham Banks »

connor_mcmonigle wrote: Sun Oct 18, 2020 12:07 pmMy apologies. I guess I should have invested more time into providing binaries with the initial release. Let me elaborate on why I opted not to provide binaries at this time. To get reasonable performance, my engine has to be compiled for either SSE, AVX, AVX2 or AVX-512 depending on availablility. Additionally, BMI should be used if available. This would result in my distributing 8 separate binaries to effectively cover everyone's hardware. This sounds a bit like a nightmare to me. If you provide me with your system's specifications, I can hopefully produce an optimized compile for you :)
-Popcount (no bmi2)
-Bmi2/AVX

Also there are those who still like to use non-popcount.
gbanksnz at gmail.com
connor_mcmonigle
Posts: 530
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle »

Gabor Szots wrote: Sun Oct 18, 2020 11:21 am
I get this error message:
In file included from include/move.h:11,
from include/position_history.h:6,
from include/board.h:15,
from include/uci.h:8,
from seer.cc:4:
include/table_generation.h:395:87: in 'constexpr' expansion of 'chess::slider_attack_tbl<12>(chess::piece_type::rook, chess::rook_deltas())'
include/table_generation.h:368:13: in 'constexpr' expansion of 'chess::over_all<chess::slider_attack_tbl<max_num_blockers>::slider_attack_tbl<std::array<chess::delta, 4> >::<lambda(chess::tbl_square)> >(<lambda closure object>chess::slider_attack_tbl<max_num_blockers>::slider_attack_tbl<std::array<chess::delta, 4> >::<lambda(chess::tbl_square)>{((chess::slider_attack_tbl<12>*)this), (* & deltas)})'
include/square.h:284:8: in 'constexpr' expansion of '(& f)->chess::slider_attack_tbl<max_num_blockers>::slider_attack_tbl<std::array<chess::delta, 4> >::<lambda(chess::tbl_square)>(chess::tbl_square{i, j})'
include/table_generation.h:372:51: in 'constexpr' expansion of 'chess::pdep_compile_time(blocker_data, ((uint64_t)mask.chess::square_set::data))'
include/table_generation.h:44:12: error: 'constexpr' evaluation operation count exceeds limit of 33554432 (use '-fconstexpr-ops-limit=' to increase the limit)
44 | if(src & bb){
| ~~~~^~~~
EDIT: I used -fconstexpr-ops-limit=1000000000 in the command line and the above message disappeared but instead the I got a huge error file. As my compiling capabilities are very limited I will stop at this point. Please provide exes.

BTW, congratulations for making a 2900+ chess engine in one single summer. Many authors spend a lifetime to reach that level.
Thanks for the kind words and my apologies that you couldn't get it to compile. Clearly, I was way too optimistic about the difficulty associated with compiling my engine. If you provide me with your system's specifications, I can hopefully provide you with a compile.

To note, I'm using CMake for my build system. If you have CMake installed on your system, all you have to do to produce a compile is:

cd build
cmake ..
make seer
connor_mcmonigle
Posts: 530
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle »

Graham Banks wrote: Sun Oct 18, 2020 12:13 pm -Popcount (no bmi2)
-Bmi2/AVX

Also there are those who still like to use non-popcount.
Sorry if I'm not understanding. Perhaps my question wasn't clear. Your system has BMI2 and AVX (not AVX2)? If you provide me with the name of your CPU + your OS (Linux or Windows?), I should hopefully be able to provide you with a compile.
Last edited by connor_mcmonigle on Sun Oct 18, 2020 12:27 pm, edited 1 time in total.
Terje
Posts: 347
Joined: Tue Nov 19, 2019 4:34 am
Location: https://github.com/TerjeKir/weiss
Full name: Terje Kirstihagen

Re: New engine releases 2020

Post by Terje »

Rebel wrote: Sun Oct 18, 2020 10:30 am
Terje wrote: Sun Oct 18, 2020 12:22 am Weiss 1.2 released with 120 self-play elo, I expect 80 or so in lists

https://github.com/TerjeKir/weiss/releases/tag/v1.2

Static exchange evaluation has sadly made Weiss a bit slower :( but on the plus side compiling is now easier - just 'make' will likely be optimal for any machine. Also no longer requires 'isready' (or anything else) before 'go' :D
SRL 1000ms +89

Code: Select all

                           The SRL rating list of : Sun Oct 18 10:23:08 2020
    EPD  : epd\lc1.epd
    Time : 1000ms
                                                                     Max            Time   Hash          
    Engine                 Points  Used Time   Found   Pos    Elo   Score   Score    ms     Mb  Cpu  Errors
35  Weiss 1.2              293517  11:27:33.1  20047  40000  2935  400000  73.38%   1000   128    1     0
54  Weiss 1.0              284693  11:23:14.3  19241  40000  2846  400000  71.17%   1000   128    1     0
Cool....
Thanks for testing, a bit smaller of a gap to 1.0 than I'd have expected - any chance you could add in 1.1?
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: New engine releases 2020

Post by Guenther »

connor_mcmonigle wrote: Sun Oct 18, 2020 12:07 pm
Graham Banks wrote: Sun Oct 18, 2020 11:15 am It would be more helpful if compiles were provided by the engine author.
My apologies. I guess I should have invested more time into providing binaries with the initial release. Let me elaborate on why I opted not to provide binaries at this time. To get reasonable performance, my engine has to be compiled for either SSE, AVX, AVX2 or AVX-512 depending on availablility. Additionally, BMI should be used if available. This would result in my distributing 8 separate binaries to effectively cover everyone's hardware. This sounds a bit like a nightmare to me. If you provide me with your system's specifications, I can hopefully produce an optimized compile for you :)
Would it be possible to add a makefile too? I really hate cmake, probably because I never got a working toolchain for it with msys2
and don't want to spend more time on fixing it ;-)
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
connor_mcmonigle
Posts: 530
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle »

Guenther wrote: Sun Oct 18, 2020 12:27 pm ...
Would it be possible to add a makefile too? I really hate cmake, probably because I never got a working toolchain for it with msys2
and don't want to spend more time on fixing it ;-)
Sure. That's totally understandable. I should be able to get around to adding a Makefile sometime soon. I'll let you know when I do.