HCE and NNUE and vectorisation

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

HCE and NNUE and vectorisation

Post by xr_a_y »

Trying to investigate the situation after http://talkchess.com/forum3/viewtopic.php?f=7&t=76536 . I'm looking at how different executables of Minic, compiled for various hardware perform. I never did that better, I should have probably.

I'm using HCE and the net "Niggling Nymph" for this test at short TC (10s+0.1). The hardware used is AVX2 but the "core2" executable is SSE3 but not popcnt, the "nehalem" one is popcnt+SSE4.2 while the "skylake" executable is popcnt+AVX2+BMI2...

Code: Select all

Rank Name                          Elo     +/-   Games   Score    Draw 
   1 minic_3.03_linux_x64_skylake_niny    56      11    2454   58.0%   39.2% 
   2 minic_3.03_linux_x64_nehalem_niny    13      11    2454   51.9%   40.9% 
   3 minic_3.03_linux_x64_nehalem         10      11    2455   51.5%   39.7% 
   4 minic_3.03_linux_x64_skylake          4      11    2455   50.6%   41.4% 
   5 minic_3.03_linux_x64_core2          -36      11    2456   44.9%   39.7% 
   6 minic_3.03_linux_x64_core2_niny     -48      11    2456   43.1%   37.3% 
What does this say ?
For HCE first, this looks simple, performance is the same as soon as popcnt is here. Not having popcnt leads to something like -40Elo. Thre is not much dependency to vectorisation but popcnt looks quite important.

For NNUE, AVX2 is +40 versus SSE4.2 and there is again a gap of nearly 60Elo for SSE3.

So that on (very) old hardware, current Minic HCE is better than "Niggling Nymph" !

This can explain some strange results during some testing process and in rating list where I sometimes see my net underperform a lot.

In this table

Code: Select all

Rank Name                                Elo     +/-   Games   Score    Draw 
   1 minic_2.53_napping_nexus            270      12    3080   82.6%   25.7% 
   2 minic_2.53_nascent_nutrient         165      11    3080   72.1%   29.9% 
   3 minic_3.02_nettling_nemesis          79      10    3079   61.2%   29.3% 
   4 minic_3.04_noisy_notch                4      10    3079   50.6%   35.6% 
   5 minic_3.03_niggling_nymph           -33      10    3079   45.3%   35.1% 
   6 minic_3.02_narcotized_nightshift    -47      10    3080   43.2%   34.4% 
   7 minic_2.53                          -52      10    3079   42.6%   34.2% 
   8 minic_2.46                          -64      10    3080   40.9%   32.7% 
   9 minic_3.03                          -70      10    3079   40.1%   34.0% 
  10 minic_3.04                          -78      10    3079   38.9%   32.5% 
  11 minic_3.01_nefarious_nucleus       -127      11    3080   32.4%   26.4% 
I show various nets performance versus some HCE version of Minic (TC 10s+0.1, on AVX2 hardware with AVX2 build).

There is a more 100Elo gap between "Nefarious Nucleus" and "Niggling Nymph" on AVX2 hardware, this means that on old hardware, "Nefarious Nucleus" or even "Narcotized Nightshift" can be way weaker than HCE.
mar
Posts: 2559
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: HCE and NNUE and vectorisation

Post by mar »

+40 for popcnt vs nopocnt in HCE seems huge. in my engine I get ~5% speedup with popcnt, that should be at most 5 elo
so either you use popcnt a lot or your popcnt emulation is very slow or maybe I'm missing something.

Code: Select all

This can explain some strange results during some testing process and in rating list where I sometimes see my net underperform a lot.
yes well some people play on toasters then mix their results with other testers with modern CPUs - the result is extra noise.
some people play multiple games in parallel but playing say 10 games on a quad isn't such a great idea either

I've given up all hope, always thinking that it's my engine's fault but the fact is that some people don't seem to know how to test shit.
plus frequent results like 10 or 01 also add a lot of noise and typically hint at garbage openings.
I could as well dump those results from dev/urandom

so the conclusion is to trust my own tests where I played hundreds of thousands of games and don't take (some) rating lists too seriously anymore, I could as well ask some oracle or just play 100 games :D
If I'd test this way, my engine would be 1500 elo today, I'm pretty sure of that.

a recent example: in one rating list A I got +80, in B +50 and in C +30, that's 50 elo worth of noise between A and C and no, the error bars should be already relatively small given the amount of games played. so I tend to trust lists with more games on equal hardware with opening that weren't generated by a random mover, because noise is best battled with volume
and I don't care about LTC fairytales anymore either

... end of rant :)
Martin Sedlak
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: HCE and NNUE and vectorisation

Post by xr_a_y »

:!: Don't get me wrong here, I am totally thankful and respectful of rating list work. It's probably can be a better process like any other thing, but people investing their time, organizing test, maintaining web site, ... about engine rating are really important to me. Thanks again guys ! :!:

My point is just to better interpret the results and try to deliver a better engine on all hardware. This means that testing on my own pretty good hardware only doesn't allow me to anounce things like "this new net is better than HCE by at least 50Elo" ; no, I have to be more careful and add "on AVX2 hardware".
Ras
Posts: 2488
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: HCE and NNUE and vectorisation

Post by Ras »

xr_a_y wrote: Thu Feb 11, 2021 6:13 pmI'm using HCE and the net "Niggling Nymph" for this test at short TC (10s+0.1).
11 games don't tell you anything at all. Against a roughly equal opponent, your expected score would be 5.5, but you have +/-sqrt(N) as error margin - which is basically around +/-240 Elo error. Actually even worse than that because 11 is also too small for +/-sqrt(N) to even apply so that 240 Elo is only a lower bound.
Last edited by Ras on Thu Feb 11, 2021 9:03 pm, edited 2 times in total.
Rasmus Althoff
https://www.ct800.net
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: HCE and NNUE and vectorisation

Post by xr_a_y »

mar wrote: Thu Feb 11, 2021 7:08 pm +40 for popcnt vs nopocnt in HCE seems huge. in my engine I get ~5% speedup with popcnt, that should be at most 5 elo
so either you use popcnt a lot or your popcnt emulation is very slow or maybe I'm missing something.
I indeed probably "count" too much in evaluation ...
But maybe SSE3 versus SSE4 also has some effect, I'll try to test this later.
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: HCE and NNUE and vectorisation

Post by xr_a_y »

Ras wrote: Thu Feb 11, 2021 9:02 pm
xr_a_y wrote: Thu Feb 11, 2021 6:13 pmI'm using HCE and the net "Niggling Nymph" for this test at short TC (10s+0.1).
11 games don't tell you anything at all. Against a roughly equal opponent, your expected score would be 5.5, but you have +/-sqrt(N) as error margin - which is basically around +/-240 Elo error. Actually even worse than that because 11 is also too small for +/-sqrt(N) to even apply so that 242 Elo is only a lower bound.
There are 2400 and in the second table 3000 games per lines, 11 is probably the error margins you are look for here. First line alignment is of, sorry.
Ras
Posts: 2488
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: HCE and NNUE and vectorisation

Post by Ras »

xr_a_y wrote: Thu Feb 11, 2021 9:03 pmFirst line alignment is of, sorry.
Uh, didn't spot that, sorry. Then it's of course significant. Did you check some test positions to make sure that all compiles (single worker thread) should give the same search tree (node numbers) and result (PV, score)? If so, what are the speed differences at a depth that will take around 30 seconds on a machine that runs idle otherwise?
Rasmus Althoff
https://www.ct800.net
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: HCE and NNUE and vectorisation

Post by xr_a_y »

Ras wrote: Thu Feb 11, 2021 9:09 pm
xr_a_y wrote: Thu Feb 11, 2021 9:03 pmFirst line alignment is of, sorry.
Uh, didn't spot that, sorry. Then it's of course significant. Did you check some test positions to make sure that all compiles (single worker thread) should give the same search tree (node numbers) and result (PV, score)? If so, what are the speed differences at a depth that will take around 30 seconds on a machine that runs idle otherwise?
Yep, here is a start pos sample

Code: Select all

./Dist/Minic3/minic_3.03_linux_x64_skylake -analyze "start" 15
info string Info  2021-02-11 21:23:37-954: No NNUE net loaded, using standard evaluation
info depth 1 score cp 102 time 1 nodes 21 nps 20999 seldepth 1 pv b1c3  tbhits 0
info depth 2 score cp 45 time 1 nodes 62 nps 61999 seldepth 2 pv b1c3 b8c6  tbhits 0
info depth 3 score cp 91 time 1 nodes 90 nps 89999 seldepth 3 pv b1c3 b8c6 g1f3  tbhits 0
info depth 4 score cp 58 time 1 nodes 171 nps 170999 seldepth 4 pv e2e3 b8c6 b1c3 g8f6  tbhits 0
info depth 5 score cp 53 time 1 nodes 475 nps 474999 seldepth 6 pv c2c4 b8c6 b1c3 g8f6 g1f3  tbhits 0
info depth 6 score cp 72 time 1 nodes 806 nps 805999 seldepth 6 pv b1c3 b8c6 h2h3 g8f6 g1f3 e7e6  tbhits 0
info depth 7 score cp 74 time 2 nodes 2384 nps 1192000 seldepth 9 pv b1c3 d7d5 g1f3 b8c6 d2d4 g8f6 h2h3  tbhits 0
info depth 8 score cp 63 time 5 nodes 5012 nps 1002400 seldepth 12 pv b1c3 b8c6 e2e4 g8f6 d2d4 h7h6 g1f3 d7d5  tbhits 0
info depth 9 score cp 50 time 15 nodes 14996 nps 999733 seldepth 15 pv c2c4 c7c5 e2e3 b8c6 b1c3 g8f6 d2d4 c5d4 e3d4  tbhits 0
info depth 10 score cp 51 time 35 nodes 34560 nps 987428 seldepth 16 pv c2c4 c7c5 b1c3 b8c6 b2b3 h7h6 g1f3 g8f6 h2h3 e7e5  tbhits 0
info depth 11 score cp 52 time 68 nodes 66131 nps 972514 seldepth 21 pv c2c4 c7c5 g1f3 g7g6 b1c3 b8c6 b2b3 g8f6 c1a3 e7e6 h2h3  tbhits 0
info depth 12 score cp 51 time 102 nodes 104340 nps 1022941 seldepth 24 pv c2c4 c7c5 g1f3 g8f6 b1c3 b8c6 e2e4 d8c7 f1d3 g7g6 e1g1 f8g7  tbhits 0
info depth 13 score cp 59 time 168 nodes 176860 nps 1052738 seldepth 25 pv g1f3 d7d5 d2d4 g7g6 g2g3 g8f6 f1g2 b8c6 f3e5 f8g7 b1c3 e8g8 e1g1  tbhits 0
info depth 14 score cp 53 time 290 nodes 293041 nps 1010486 seldepth 26 pv g1f3 d7d5 d2d4 e7e6 b1c3 g8f6 e2e3 f8b4 f1d3 b8c6 f3e5 e8g8 e1g1 c6e5  tbhits 0
info depth 15 score cp 58 time 501 nodes 512812 nps 1023576 seldepth 28 pv g1f3 d7d5 d2d4 e7e6 e2e3 g8f6 f1d3 f8b4 c1d2 b8c6 e1g1 e8g8 c2c4 d5c4 d2b4  tbhits 0 hashfull 41
./Dist/Minic3/minic_3.03_linux_x64_nehalem -analyze "start" 15
info string This is Minic version 3.03 (NNUE available)
info string Info  2021-02-11 21:23:43-445: No NNUE net loaded, using standard evaluation
info depth 1 score cp 102 time 1 nodes 21 nps 20999 seldepth 1 pv b1c3  tbhits 0
info depth 2 score cp 45 time 1 nodes 62 nps 61999 seldepth 2 pv b1c3 b8c6  tbhits 0
info depth 3 score cp 91 time 1 nodes 90 nps 89999 seldepth 3 pv b1c3 b8c6 g1f3  tbhits 0
info depth 4 score cp 58 time 1 nodes 171 nps 170999 seldepth 4 pv e2e3 b8c6 b1c3 g8f6  tbhits 0
info depth 5 score cp 53 time 1 nodes 475 nps 474999 seldepth 6 pv c2c4 b8c6 b1c3 g8f6 g1f3  tbhits 0
info depth 6 score cp 72 time 1 nodes 806 nps 805999 seldepth 6 pv b1c3 b8c6 h2h3 g8f6 g1f3 e7e6  tbhits 0
info depth 7 score cp 74 time 2 nodes 2384 nps 1192000 seldepth 9 pv b1c3 d7d5 g1f3 b8c6 d2d4 g8f6 h2h3  tbhits 0
info depth 8 score cp 63 time 5 nodes 5012 nps 1002400 seldepth 12 pv b1c3 b8c6 e2e4 g8f6 d2d4 h7h6 g1f3 d7d5  tbhits 0
info depth 9 score cp 50 time 15 nodes 14996 nps 999733 seldepth 15 pv c2c4 c7c5 e2e3 b8c6 b1c3 g8f6 d2d4 c5d4 e3d4  tbhits 0
info depth 10 score cp 51 time 33 nodes 34560 nps 1047272 seldepth 16 pv c2c4 c7c5 b1c3 b8c6 b2b3 h7h6 g1f3 g8f6 h2h3 e7e5  tbhits 0
info depth 11 score cp 52 time 67 nodes 66131 nps 987029 seldepth 21 pv c2c4 c7c5 g1f3 g7g6 b1c3 b8c6 b2b3 g8f6 c1a3 e7e6 h2h3  tbhits 0
info depth 12 score cp 51 time 107 nodes 104340 nps 975140 seldepth 24 pv c2c4 c7c5 g1f3 g8f6 b1c3 b8c6 e2e4 d8c7 f1d3 g7g6 e1g1 f8g7  tbhits 0
info depth 13 score cp 59 time 192 nodes 176860 nps 921145 seldepth 25 pv g1f3 d7d5 d2d4 g7g6 g2g3 g8f6 f1g2 b8c6 f3e5 f8g7 b1c3 e8g8 e1g1  tbhits 0
info depth 14 score cp 53 time 335 nodes 293041 nps 874749 seldepth 26 pv g1f3 d7d5 d2d4 e7e6 b1c3 g8f6 e2e3 f8b4 f1d3 b8c6 f3e5 e8g8 e1g1 c6e5  tbhits 0
info depth 15 score cp 58 time 563 nodes 512812 nps 910856 seldepth 28 pv g1f3 d7d5 d2d4 e7e6 e2e3 g8f6 f1d3 f8b4 c1d2 b8c6 e1g1 e8g8 c2c4 d5c4 d2b4  tbhits 0 hashfull 41
./Dist/Minic3/minic_3.03_linux_x64_core2 -analyze "start" 15
info string This is Minic version 3.03 (NNUE available)
info string Info  2021-02-11 21:23:50-098: No NNUE net loaded, using standard evaluation
info depth 1 score cp 102 time 1 nodes 21 nps 20999 seldepth 1 pv b1c3  tbhits 0
info depth 2 score cp 45 time 1 nodes 62 nps 61999 seldepth 2 pv b1c3 b8c6  tbhits 0
info depth 3 score cp 91 time 1 nodes 90 nps 89999 seldepth 3 pv b1c3 b8c6 g1f3  tbhits 0
info depth 4 score cp 58 time 5 nodes 171 nps 34200 seldepth 4 pv e2e3 b8c6 b1c3 g8f6  tbhits 0
info depth 5 score cp 53 time 5 nodes 475 nps 95000 seldepth 6 pv c2c4 b8c6 b1c3 g8f6 g1f3  tbhits 0
info depth 6 score cp 72 time 6 nodes 806 nps 134333 seldepth 6 pv b1c3 b8c6 h2h3 g8f6 g1f3 e7e6  tbhits 0
info depth 7 score cp 74 time 7 nodes 2384 nps 340571 seldepth 9 pv b1c3 d7d5 g1f3 b8c6 d2d4 g8f6 h2h3  tbhits 0
info depth 8 score cp 63 time 20 nodes 5012 nps 250600 seldepth 12 pv b1c3 b8c6 e2e4 g8f6 d2d4 h7h6 g1f3 d7d5  tbhits 0
info depth 9 score cp 50 time 31 nodes 14996 nps 483741 seldepth 15 pv c2c4 c7c5 e2e3 b8c6 b1c3 g8f6 d2d4 c5d4 e3d4  tbhits 0
info depth 10 score cp 51 time 77 nodes 34560 nps 448831 seldepth 16 pv c2c4 c7c5 b1c3 b8c6 b2b3 h7h6 g1f3 g8f6 h2h3 e7e5  tbhits 0
info depth 11 score cp 52 time 128 nodes 66131 nps 516648 seldepth 21 pv c2c4 c7c5 g1f3 g7g6 b1c3 b8c6 b2b3 g8f6 c1a3 e7e6 h2h3  tbhits 0
info depth 12 score cp 51 time 190 nodes 104340 nps 549157 seldepth 24 pv c2c4 c7c5 g1f3 g8f6 b1c3 b8c6 e2e4 d8c7 f1d3 g7g6 e1g1 f8g7  tbhits 0
info depth 13 score cp 59 time 285 nodes 176860 nps 620561 seldepth 25 pv g1f3 d7d5 d2d4 g7g6 g2g3 g8f6 f1g2 b8c6 f3e5 f8g7 b1c3 e8g8 e1g1  tbhits 0
info depth 14 score cp 53 time 427 nodes 293041 nps 686278 seldepth 26 pv g1f3 d7d5 d2d4 e7e6 b1c3 g8f6 e2e3 f8b4 f1d3 b8c6 f3e5 e8g8 e1g1 c6e5  tbhits 0
info depth 15 score cp 58 time 688 nodes 512812 nps 745366 seldepth 28 pv g1f3 d7d5 d2d4 e7e6 e2e3 g8f6 f1d3 f8b4 c1d2 b8c6 e1g1 e8g8 c2c4 d5c4 d2b4  tbhits 0 hashfull 41
But in fact in Minic I can check much more stats like those :

Code: Select all

info string Info  2021-02-11 21:25:21-915: nodes 238950
info string Info  2021-02-11 21:25:21-915: qnodes 273862
info string Info  2021-02-11 21:25:21-915: tthits 130385
info string Info  2021-02-11 21:25:21-915: ttInsert 636269
info string Info  2021-02-11 21:25:21-915: ttPawnhits 224230
info string Info  2021-02-11 21:25:21-915: ttPawnInsert 71403
info string Info  2021-02-11 21:25:21-915: ttScHits 96613
info string Info  2021-02-11 21:25:21-915: ttScMiss 295632
info string Info  2021-02-11 21:25:21-915: materialHits 370345
info string Info  2021-02-11 21:25:21-915: materialMiss 13
info string Info  2021-02-11 21:25:21-915: materialHelper 0
info string Info  2021-02-11 21:25:21-915: materialDraw 0
info string Info  2021-02-11 21:25:21-915: materialDraw2 0
info string Info  2021-02-11 21:25:21-915: staticNullMove 32969
info string Info  2021-02-11 21:25:21-915: lmr 164120
info string Info  2021-02-11 21:25:21-915: lmrfail 1423
info string Info  2021-02-11 21:25:21-915: pvsfail 246
info string Info  2021-02-11 21:25:21-915: razoringTry 8653
info string Info  2021-02-11 21:25:21-915: razoring 7352
info string Info  2021-02-11 21:25:21-915: nullMoveTry 62919
info string Info  2021-02-11 21:25:21-915: nullMoveTry2 61664
info string Info  2021-02-11 21:25:21-915: nullMoveTry3 0
info string Info  2021-02-11 21:25:21-915: nullMove 32880
info string Info  2021-02-11 21:25:21-915: nullMove2 0
info string Info  2021-02-11 21:25:21-915: probcutTry 12163
info string Info  2021-02-11 21:25:21-915: probcutTry2 1204
info string Info  2021-02-11 21:25:21-915: probcut 1132
info string Info  2021-02-11 21:25:21-915: lmp 907654
info string Info  2021-02-11 21:25:21-915: historyPruning 3244
info string Info  2021-02-11 21:25:21-915: futility 29013
info string Info  2021-02-11 21:25:21-915: CMHPruning 17696
info string Info  2021-02-11 21:25:21-915: see 589
info string Info  2021-02-11 21:25:21-915: see2 21056
info string Info  2021-02-11 21:25:21-915: seeQuiet 26782
info string Info  2021-02-11 21:25:21-915: iid 12
info string Info  2021-02-11 21:25:21-915: ttalpha 552
info string Info  2021-02-11 21:25:21-915: ttbeta 18861
info string Info  2021-02-11 21:25:21-915: checkExtension 0
info string Info  2021-02-11 21:25:21-915: checkExtension2 0
info string Info  2021-02-11 21:25:21-915: recaptureExtension 0
info string Info  2021-02-11 21:25:21-915: castlingExtension 0
info string Info  2021-02-11 21:25:21-915: CMHExtension 0
info string Info  2021-02-11 21:25:21-915: pawnPushExtension 0
info string Info  2021-02-11 21:25:21-915: singularExtension 97
info string Info  2021-02-11 21:25:21-915: singularExtension2 11
info string Info  2021-02-11 21:25:21-915: singularExtension3 125
info string Info  2021-02-11 21:25:21-915: singularExtension4 239
info string Info  2021-02-11 21:25:21-915: queenThreatExtension 0
info string Info  2021-02-11 21:25:21-915: BMExtension 0
info string Info  2021-02-11 21:25:21-915: mateThreatExtension 0
info string Info  2021-02-11 21:25:21-915: endGameExtension 0
info string Info  2021-02-11 21:25:21-915: goodHistoryExtension 0
info string Info  2021-02-11 21:25:21-915: TBHit1 0
info string Info  2021-02-11 21:25:21-915: TBHit2 0
info string Info  2021-02-11 21:25:21-915: dangerPrune 1303
info string Info  2021-02-11 21:25:21-915: dangerReduce 3191
info string Info  2021-02-11 21:25:21-915: computedHash 0
info string Info  2021-02-11 21:25:21-915: qfutility 0
info string Info  2021-02-11 21:25:21-915: qsee 99825
info string Info  2021-02-11 21:25:21-915: delta 0
info string Info  2021-02-11 21:25:21-916: evalNoKing 0
info string Info  2021-02-11 21:25:21-916: evalStd 0
info string Info  2021-02-11 21:25:21-916: evalNNUE 0
And all is correct.
Ras
Posts: 2488
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: HCE and NNUE and vectorisation

Post by Ras »

xr_a_y wrote: Thu Feb 11, 2021 9:25 pmYep, here is a start pos sample
From the log: "info string Info 2021-02-11 21:23:37-954: No NNUE net loaded, using standard evaluation" for all of these. Is this really what you used during the matches? And also, could you try like depth 20 to make the time measurement more accurate?
Rasmus Althoff
https://www.ct800.net
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: HCE and NNUE and vectorisation

Post by xr_a_y »

Ras wrote: Thu Feb 11, 2021 9:46 pm From the log: "info string Info 2021-02-11 21:23:37-954: No NNUE net loaded, using standard evaluation" for all of these. Is this really what you used during the matches?
In the match there are 3 Minic HCE (so like this), and 3 with nets "NiNy".
Ras wrote: Thu Feb 11, 2021 9:46 pm And also, could you try like depth 20 to make the time measurement more accurate?
Sure, here is start pos on empty system

Code: Select all

AVX2 : info depth 20 score cp 64 time 7844 nodes 9748230 nps 1242762 seldepth 33 pv e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f8c5 c2c3 f6e4 d2d4 e5d4 c3d4 c5b4 d4d5 c6e7 b5d3 e4f6 b1c3 b4c3  tbhits 0
SSE4.2 : info depth 20 score cp 64 time 8235 nodes 9748230 nps 1183756 seldepth 33 pv e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f8c5 c2c3 f6e4 d2d4 e5d4 c3d4 c5b4 d4d5 c6e7 b5d3 e4f6 b1c3 b4c3  tbhits 0
SSE3, no popcnt : info depth 20 score cp 64 time 10046 nodes 9748230 nps 970359 seldepth 33 pv e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f8c5 c2c3 f6e4 d2d4 e5d4 c3d4 c5b4 d4d5 c6e7 b5d3 e4f6 b1c3 b4c3  tbhits 0
This looks like a 20% slowdown.

About this Stockfish team says (using a difference in TC to emulate the slow down)

Code: Select all

tc=4.0+0.4 vs tc=3.2+0.32
   # PLAYER   	:  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 master4.0	: 	0.0   ----  5690.0   10305	55 	100
   2 master3.2	:   -36.7	3.5  4615.0   10305	45 	---

tc=60+0.6 vs tc=48+0.48
   # PLAYER    	:  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 master60.0	: 	0.0   ----  6229.0   12119	51 	100
   2 master48.0	:	-9.8	1.7  5890.0   12119	49 	---
For Minic I was testing at 10s+0.1, so the -40Elo is not that stupid.