New engine releases 2020

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

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
Gabor Szots
Posts: 490
Joined: Sat Jul 21, 2018 5:43 am
Location: Szentendre, Hungary
Full name: Gabor Szots

Re: New engine releases 2020

Post by Gabor Szots » Mon Apr 20, 2020 7:44 am

RubiChess wrote:
Mon Apr 20, 2020 7:30 am
RubiChess wrote:
Sun Apr 19, 2020 5:09 pm
RubiChess 1.7 is released here https://github.com/Matthies/RubiChess/releases/latest

Elo?? Don't really know. Best Rubi ever :)
Just after doing the release I did some test games and stumbled upon a strange and nasty bug. See https://github.com/Matthies/RubiChess/issues/197

I have no idea about the reason so far and how often and under which circumstances it will be triggered but I will investigate. So if you plan to test new Rubi, you should wait for some days or until I post here again.

Andreas
Thanks for letting us know.
Gabor Szots
CCRL testing group

RubiChess
Posts: 183
Joined: Fri Mar 30, 2018 5:20 am

Re: New engine releases 2020

Post by RubiChess » Mon Apr 20, 2020 3:59 pm

You can get the fixed release 1.7.1 now from here: https://github.com/Matthies/RubiChess/r ... /tag/1.7.1

Regards, Andreas

Jamal Bubker
Posts: 290
Joined: Mon May 24, 2010 2:32 pm

Re: New engine releases 2020

Post by Jamal Bubker » Tue Apr 21, 2020 12:55 pm

Thanks very much Andreas !!! 8-) 8-) Really very strong and interesting your engine !!

JohnWoe
Posts: 183
Joined: Sat Mar 02, 2013 10:31 pm

Re: New engine releases 2020

Post by JohnWoe » Fri Apr 24, 2020 1:03 pm

First Sapeli that understands 3 repetitions. Now it repeats a position once and tries again later.

I actually fixed one nasty bug.
Funny thing it that I have pretty much only removed crap and Sapeli has gained +50 ELO on CCRL Blitz lists :)
This 1.84 version shouldn't crash. But I will fix bugs if there's any.
Sapeli 1.84: https://github.com/SamuraiDangyo/Sapeli ... /tag/v1.84

User avatar
mvanthoor
Posts: 236
Joined: Wed Jul 03, 2019 2:42 pm
Full name: Marcel Vanthoor

Re: New engine releases 2020

Post by mvanthoor » Fri Apr 24, 2020 8:05 pm

JohnWoe wrote:
Fri Apr 24, 2020 1:03 pm
Funny thing it that I have pretty much only removed crap and Sapeli has gained +50 ELO on CCRL Blitz lists :)
I just posted this: Speed is your currency that buys you other things in a topic where you're also a participant. I don't find it funny or strange at all that optimizing the code to be faster has gained you 50 ELO. If your engine gets faster without doing anything else, it gains search depth, and it thus becomes stronger.

In this case, the speed has bought you strenght. You can be satisfied with this 50 ELO gain, but you can also sacrifice all or part of those 50 points by adding more evaluation... hoping that the gain from those extra evaluations will be more than the loss you're taking from the speed decrease.

JohnWoe
Posts: 183
Joined: Sat Mar 02, 2013 10:31 pm

Re: New engine releases 2020

Post by JohnWoe » Fri Apr 24, 2020 9:03 pm

mvanthoor wrote:
Fri Apr 24, 2020 8:05 pm
JohnWoe wrote:
Fri Apr 24, 2020 1:03 pm
Funny thing it that I have pretty much only removed crap and Sapeli has gained +50 ELO on CCRL Blitz lists :)
I just posted this: Speed is your currency that buys you other things in a topic where you're also a participant. I don't find it funny or strange at all that optimizing the code to be faster has gained you 50 ELO. If your engine gets faster without doing anything else, it gains search depth, and it thus becomes stronger.

In this case, the speed has bought you strenght. You can be satisfied with this 50 ELO gain, but you can also sacrifice all or part of those 50 points by adding more evaluation... hoping that the gain from those extra evaluations will be more than the loss you're taking from the speed decrease.
^ Yes. Less bugs is always faster. And in my opinion C is a language for Kernel/OS. This is what C was really invented for. Not really a general problem solving language. So I have simplified Sapeli to the bare minimum. Which gained some +ELO. As with C you need to keep things really simple. There is really no room for "clever code" in Sapeli. That only results bugs.

When sanitizing memory addresses. Sapeli scores only 60% versus Fairy.
When unleashed all the clang speed. Sapeli scores 99%+ versus Fairy.
That is thanks to the raw C speed.

I noticed that after converting some code C -> C++. Lots of that C ugliness was removed. The code became much simpler, shorter and cleaner. No more malloc, callocs, strncmps and other silliness.

I forgot to mention that clang is now the preferred compiler. After fixing more bugs Sapeli now finally runs much faster under clang vs gcc (44Mnps vs 32Mnps). But one should always -bench after compiling. v1.84 solved 288/300 WAC so I expect this version to be on par v1.79. I haven't really tested.

User avatar
mvanthoor
Posts: 236
Joined: Wed Jul 03, 2019 2:42 pm
Full name: Marcel Vanthoor

Re: New engine releases 2020

Post by mvanthoor » Fri Apr 24, 2020 9:12 pm

C was created to be one thing: a portable assember. That is, a language that is easier to read and write than assembler and makes programs run on multiple architecture without rewriting, but being just as fast. It succeeded. I love C, but I love Rust better because of it's awesome static code analyzer :) Still, I'm considering to port my engine to C at some point, just because I can.

And Sapeli runs at 44M nodes/second? That's 10% faster than Weiss and Rustic, if that is in perft with no hash and no bulk counting. I'll have to download and test Sapeli on my own system this weekend to make a real comparison. I'll try to compile it with both Gcc and Clang; though I have no experience with Clang yet. I'll install it in my MSYS2 environment.

JohnWoe
Posts: 183
Joined: Sat Mar 02, 2013 10:31 pm

Re: New engine releases 2020

Post by JohnWoe » Fri Apr 24, 2020 10:46 pm

mvanthoor wrote:
Fri Apr 24, 2020 9:12 pm
C was created to be one thing: a portable assember. That is, a language that is easier to read and write than assembler and makes programs run on multiple architecture without rewriting, but being just as fast. It succeeded. I love C, but I love Rust better because of it's awesome static code analyzer :) Still, I'm considering to port my engine to C at some point, just because I can.

And Sapeli runs at 44M nodes/second? That's 10% faster than Weiss and Rustic, if that is in perft with no hash and no bulk counting. I'll have to download and test Sapeli on my own system this weekend to make a real comparison. I'll try to compile it with both Gcc and Clang; though I have no experience with Clang yet. I'll install it in my MSYS2 environment.
That 44Mnps is for the 20 FENs suite. Bulk counting but no hashing. A simple test that Sapeli gets the total nodes count correct to catch bugs. But I noticed finally clang being a lot faster.

Compiling Sapeli makes all the difference. If you compile it wrong. It performs bad and results bad ELO on rating lists.

Funny thing is that clang reported "#define stdin stdin" as recursive definition in some standard C header. Like C is broken in the core. When you enable all warnings. :P

Code: Select all

Sapeli.c:468:36: warning: disabled expansion of recursive macro
      [-Wdisabled-macro-expansion]
  MYASSERT(fgets(str, sizeof(str), stdin) != NULL);
                                   ^
/usr/include/stdio.h:139:15: note: expanded from macro 'stdin'
#define stdin stdin

Michael Sherwin
Posts: 3196
Joined: Fri May 26, 2006 1:00 am
Location: WY, USA
Full name: Michael Sherwin

Re: New engine releases 2020

Post by Michael Sherwin » Sat Apr 25, 2020 2:49 am

mvanthoor wrote:
Fri Apr 24, 2020 9:12 pm
C was created to be one thing: a portable assember. That is, a language that is easier to read and write than assembler and makes programs run on multiple architecture without rewriting, but being just as fast. It succeeded. I love C, but I love Rust better because of it's awesome static code analyzer :) Still, I'm considering to port my engine to C at some point, just because I can.

And Sapeli runs at 44M nodes/second? That's 10% faster than Weiss and Rustic, if that is in perft with no hash and no bulk counting. I'll have to download and test Sapeli on my own system this weekend to make a real comparison. I'll try to compile it with both Gcc and Clang; though I have no experience with Clang yet. I'll install it in my MSYS2 environment.
When I saw 44 million with no bulk counting I was also interested. But JohnWoe says it uses bulk counting. I wonder if it makes/unmakes the last ply? Some perft do not even make/unmake the last ply. My engine Carnivor written in C on my 3950x, one thread, bench 6 runs at 55.7 million nodes per second. It makes and unmakes all moves and does no bulk counting and it uses the same make/unmake that the search uses. Carnivor is basically a material searcher with static piece square tables. It searches 25.6 million nodes per second, one thread, in the original position and plays e2e4.

My perft example, Godzilla, works identical to Carnivor except it is mostly in 32 bit assembler. It runs bench 6 at 73 million nodes per second. It does not play chess.

This was just fyi, just incase ...
If you are on a sidewalk and the covid goes beep beep
Just step aside or you might have a bit of heat
Covid covid runs through the town all day
Can the people ever change their ways
Sherwin the covid's after you
Sherwin if it catches you you're through

Ras
Posts: 1393
Joined: Tue Aug 30, 2016 6:19 pm
Full name: Rasmus Althoff
Contact:

Re: New engine releases 2020

Post by Ras » Sat Apr 25, 2020 8:55 am

JohnWoe wrote:
Fri Apr 24, 2020 10:46 pm
Funny thing is that clang reported "#define stdin stdin" as recursive definition in some standard C header. Like C is broken in the core.
It's not broken, the C standard allows self-referential macros. The main use of that is that you can check for it in some ifdef condition without having to define it to a specific value yet. Clang warns about that because it is also a source of bugs if not used intentionally. Then again, Clang's -Weverything has so many false positives that it is pretty useless anyway.
Rasmus Althoff
https://www.ct800.net

Post Reply