No Good Idea Goes Unpunished

Discussion of chess software programming and technical issues.

Moderator: Ras

JoAnnP38
Posts: 253
Joined: Mon Aug 26, 2019 4:34 pm
Location: Clearwater, Florida USA
Full name: JoAnn Peeler

No Good Idea Goes Unpunished

Post by JoAnnP38 »

A few weeks ago, I decided to create a toy or model project to experiment with move generation ideas. I did a lot of benchmarking and tried and abandoned many ideas, but in the end, I was able to improve the move generation speed by over 50%. So today, I decide to introduce this code into Pedantic which required a lot of refactoring. So, like any good developer I created a local branch in GIT and proceeded to make the required changes. After completing the code, passing all my unit tests and verifying that there were no negative changes with accuracy by testing with the WAC300 tests, I decided it was time to run a SPRT test against the prior version. The test is still only 12-15% complete but here are some early results:

Code: Select all

Score of Pedantic 0.2A vs Pedantic 0.2B: 81 - 112 - 77  [0.443] 270
...      Pedantic 0.2A playing White: 47 - 47 - 41  [0.500] 135
...      Pedantic 0.2A playing Black: 34 - 65 - 36  [0.385] 135
...      White vs Black: 112 - 81 - 77  [0.557] 270
Elo difference: -40.1 +/- 35.3, LOS: 1.3 %, DrawRatio: 28.5 %
SPRT: llr -1.41 (-48.0%), lbound -2.94, ubound 2.94
*sigh* It's almost enough to make me want to just blow away an entire day's work and pretend like I never tried this.
JVMerlino
Posts: 1396
Joined: Wed Mar 08, 2006 10:15 pm
Location: San Francisco, California

Re: No Good Idea Goes Unpunished

Post by JVMerlino »

JoAnnP38 wrote: Sun May 07, 2023 1:53 am A few weeks ago, I decided to create a toy or model project to experiment with move generation ideas. I did a lot of benchmarking and tried and abandoned many ideas, but in the end, I was able to improve the move generation speed by over 50%. So today, I decide to introduce this code into Pedantic which required a lot of refactoring. So, like any good developer I created a local branch in GIT and proceeded to make the required changes. After completing the code, passing all my unit tests and verifying that there were no negative changes with accuracy by testing with the WAC300 tests, I decided it was time to run a SPRT test against the prior version. The test is still only 12-15% complete but here are some early results:

Code: Select all

Score of Pedantic 0.2A vs Pedantic 0.2B: 81 - 112 - 77  [0.443] 270
...      Pedantic 0.2A playing White: 47 - 47 - 41  [0.500] 135
...      Pedantic 0.2A playing Black: 34 - 65 - 36  [0.385] 135
...      White vs Black: 112 - 81 - 77  [0.557] 270
Elo difference: -40.1 +/- 35.3, LOS: 1.3 %, DrawRatio: 28.5 %
SPRT: llr -1.41 (-48.0%), lbound -2.94, ubound 2.94
*sigh* It's almost enough to make me want to just blow away an entire day's work and pretend like I never tried this.
I assume you verified your new move generation with lots of perft tests as well, right? Also, since an engine spends a relatively small amount of time in move generation, even a 50% speed increase there (assuming no other changes) won't give you a huge elo bump. Maybe 10-20 elo max? So you'll need a few thousand more games to be sure.