New engine releases 2020

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

Moderators: Harvey Williamson, bob, hgm

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
User avatar
Werner
Posts: 2548
Joined: Wed Mar 08, 2006 9:09 pm

Re: New engine releases 2020

Post by Werner » Sun Oct 18, 2020 9:13 am

connor_mcmonigle wrote:
Sun Oct 18, 2020 5: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: 34537
Joined: Sun Feb 26, 2006 9:52 am
Location: Auckland, NZ

Re: New engine releases 2020

Post by Graham Banks » Sun Oct 18, 2020 9:15 am

Werner wrote:
Sun Oct 18, 2020 9:13 am
connor_mcmonigle wrote:
Sun Oct 18, 2020 5: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: 623
Joined: Sat Jul 21, 2018 5:43 am
Location: Szentendre, Hungary
Full name: Gabor Szots

Re: New engine releases 2020

Post by Gabor Szots » Sun Oct 18, 2020 9:21 am

connor_mcmonigle wrote:
Sun Oct 18, 2020 5: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: 27
Joined: Sun Sep 06, 2020 2:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle » Sun Oct 18, 2020 10:07 am

jorose wrote:
Sun Oct 18, 2020 7: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 9: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 9: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: 34537
Joined: Sun Feb 26, 2006 9:52 am
Location: Auckland, NZ

Re: New engine releases 2020

Post by Graham Banks » Sun Oct 18, 2020 10:13 am

connor_mcmonigle wrote:
Sun Oct 18, 2020 10:07 am
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 :)
-Popcount (no bmi2)
-Bmi2/AVX

Also there are those who still like to use non-popcount.
gbanksnz at gmail.com

connor_mcmonigle
Posts: 27
Joined: Sun Sep 06, 2020 2:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle » Sun Oct 18, 2020 10:18 am

Gabor Szots wrote:
Sun Oct 18, 2020 9: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: 27
Joined: Sun Sep 06, 2020 2:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle » Sun Oct 18, 2020 10:23 am

Graham Banks wrote:
Sun Oct 18, 2020 10:13 am
-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 10:27 am, edited 1 time in total.

Terje
Posts: 257
Joined: Tue Nov 19, 2019 3:34 am
Location: https://github.com/TerjeKir/weiss
Full name: Terje Kirstihagen

Re: New engine releases 2020

Post by Terje » Sun Oct 18, 2020 10:24 am

Rebel wrote:
Sun Oct 18, 2020 8:30 am
Terje wrote:
Sat Oct 17, 2020 10:22 pm
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?

Guenther
Posts: 3436
Joined: Wed Oct 01, 2008 4:33 am
Location: Regensburg, Germany
Full name: Guenther Simon
Contact:

Re: New engine releases 2020

Post by Guenther » Sun Oct 18, 2020 10:27 am

connor_mcmonigle wrote:
Sun Oct 18, 2020 10:07 am
Graham Banks wrote:
Sun Oct 18, 2020 9: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
Greg Strong@ovyron wrote: What I think is that you have a very, very, VERY strong desire to post, and very little self-control.
All the time. In every conversation. You must post. Something. It's like you just can't help yourself.

connor_mcmonigle
Posts: 27
Joined: Sun Sep 06, 2020 2:40 am
Full name: Connor McMonigle

Re: New engine releases 2020

Post by connor_mcmonigle » Sun Oct 18, 2020 10:33 am

Guenther wrote:
Sun Oct 18, 2020 10:27 am
...
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.

Post Reply