We need to scrap Perft()

Discussion of chess software programming and technical issues.

Moderator: Ras

Mergi
Posts: 127
Joined: Sat Aug 21, 2021 9:55 pm
Full name: Jen

Re: We need to scrap Perft()

Post by Mergi »

So if a node generates no captures or promotions, it shall return 0?
R. Tomasi
Posts: 307
Joined: Wed Sep 01, 2021 4:08 pm
Location: Germany
Full name: Roland Tomasi

Re: We need to scrap Perft()

Post by R. Tomasi »

Mergi wrote: Sat Dec 18, 2021 4:43 pm So if a node generates no captures or promotions, it shall return 0?
Yes. A leaf node that is.
R. Tomasi
Posts: 307
Joined: Wed Sep 01, 2021 4:08 pm
Location: Germany
Full name: Roland Tomasi

Re: We need to scrap Perft()

Post by R. Tomasi »

These are my first results for the standard starting position. I want to emphasize that these numbers are from my first attempt - there might be bugs, so no guarantee the numbers are correct. Somebody else should verify:

Code: Select all

cperft 1


depth:  1 nodes:   0.00 fN

 Leafs:             0
 Captures:          0
 En passant:        0
 Castles:           0
 Promotions:        0
 Checks:            0
 Checkmates:        0
 Double pushes:     0
 Queenside castles: 0
 Kingside castles:  0

cperft 2

  a2a4  : 0
  b2b4  : 0
  c2c4  : 0
  d2d4  : 0
  e2e4  : 0
  f2f4  : 0
  g2g4  : 0
  h2h4  : 0
  b1a3  : 0
  b1c3  : 0
  g1f3  : 0
  g1h3  : 0
  a2a3  : 0
  b2b3  : 0
  c2c3  : 0
  d2d3  : 0
  e2e3  : 0
  f2f3  : 0
  g2g3  : 0
  h2h3  : 0

depth:  2 nodes:   40.0 N

 Leafs:             0
 Captures:          0
 En passant:        0
 Castles:           0
 Promotions:        0
 Checks:            0
 Checkmates:        0
 Double pushes:     0
 Queenside castles: 0
 Kingside castles:  0

cperft 3

  a2a4  : 1
  b2b4  : 2
  c2c4  : 2
  d2d4  : 5
  e2e4  : 6
  f2f4  : 2
  g2g4  : 2
  h2h4  : 1
  b1a3  : 1
  b1c3  : 2
  g1f3  : 2
  g1h3  : 1
  a2a3  : 0
  b2b3  : 0
  c2c3  : 0
  d2d3  : 3
  e2e3  : 4
  f2f3  : 0
  g2g3  : 0
  h2h3  : 0

depth:  3 nodes:    440 N

 Leafs:             34
 Captures:          34
 En passant:        0
 Castles:           0
 Promotions:        0
 Checks:            0
 Checkmates:        0
 Double pushes:     0
 Queenside castles: 0
 Kingside castles:  0

cperft 4

  a2a4  : 57
  b2b4  : 147
  c2c4  : 80
  d2d4  : 159
  e2e4  : 171
  f2f4  : 75
  g2g4  : 149
  h2h4  : 93
  b1a3  : 65
  b1c3  : 40
  g1f3  : 43
  g1h3  : 65
  a2a3  : 64
  b2b3  : 36
  c2c3  : 35
  d2d3  : 78
  e2e3  : 85
  f2f3  : 34
  g2g3  : 36
  h2h3  : 64

depth:  4 nodes:   9.34 kN

 Leafs:             1576
 Captures:          1576
 En passant:        0
 Castles:           0
 Promotions:        0
 Checks:            16
 Checkmates:        0
 Double pushes:     0
 Queenside castles: 0
 Kingside castles:  0

cperft 5

  a2a4  : 2460
  b2b4  : 3704
  c2c4  : 4787
  d2d4  : 8307
  e2e4  : 10952
  f2f4  : 3082
  g2g4  : 3550
  h2h4  : 2532
  b1a3  : 2983
  b1c3  : 4686
  g1f3  : 4676
  g1h3  : 2993
  a2a3  : 1648
  b2b3  : 2505
  c2c3  : 3670
  d2d3  : 5344
  e2e3  : 9141
  f2f3  : 1507
  g2g3  : 2546
  h2h3  : 1646

depth:  5 nodes:    207 kN

 Leafs:             82719
 Captures:          82719
 En passant:        258
 Castles:           0
 Promotions:        0
 Checks:            6433
 Checkmates:        2
 Double pushes:     0
 Queenside castles: 0
 Kingside castles:  0

cperft 6

  a2a4  : 111284
  b2b4  : 180968
  c2c4  : 145186
  d2d4  : 265185
  e2e4  : 302926
  f2f4  : 118336
  g2g4  : 177710
  h2h4  : 137850
  b1a3  : 109237
  b1c3  : 110483
  g1f3  : 112551
  g1h3  : 107496
  a2a3  : 99782
  b2b3  : 95539
  c2c3  : 97817
  d2d3  : 162951
  e2e3  : 208120
  f2f3  : 74949
  g2g3  : 96298
  h2h3  : 97340

depth:  6 nodes:   5.07 MN

 Leafs:             2812008
 Captures:          2812008
 En passant:        5248
 Castles:           0
 Promotions:        0
 Checks:            173463
 Checkmates:        260
 Double pushes:     0
 Queenside castles: 0
 Kingside castles:  0
Note that the number given after "nodes:" is wrong and does not have any meaning. It's just a residue of the perft function that I copy-pasted from. Also note that I start counting with 1, not 0. So what i get for "cperft 6" is acutally "cperft 5" for most people.
Mergi
Posts: 127
Joined: Sat Aug 21, 2021 9:55 pm
Full name: Jen

Re: We need to scrap Perft()

Post by Mergi »

R. Tomasi wrote: Sat Dec 18, 2021 4:50 pm ...
Seems correct. Except i feel like the deph is + 1? As in, for example depth 2 should be 34 leaf nodes. ... Unless i misunderstood this cpeft idea again :oops:
Mergi
Posts: 127
Joined: Sat Aug 21, 2021 9:55 pm
Full name: Jen

Re: We need to scrap Perft()

Post by Mergi »

There was a bug 8-)
Last edited by Mergi on Sat Dec 18, 2021 5:09 pm, edited 1 time in total.
R. Tomasi
Posts: 307
Joined: Wed Sep 01, 2021 4:08 pm
Location: Germany
Full name: Roland Tomasi

Re: We need to scrap Perft()

Post by R. Tomasi »

Mergi wrote: Sat Dec 18, 2021 4:54 pm
R. Tomasi wrote: Sat Dec 18, 2021 4:50 pm ...
Seems correct. Except i feel like the deph is + 1? As in, for example depth 2 should be 34 leaf nodes. ... Unless i misunderstood this cpeft idea again :oops:
Nono, you're absolutely right. See the comment at the bottom of my post.
Mergi
Posts: 127
Joined: Sat Aug 21, 2021 9:55 pm
Full name: Jen

Re: We need to scrap Perft()

Post by Mergi »

Oh, your depth 6 is different from mine by 3 nodes.

2812011 != 2812008

I wonder why that is
R. Tomasi
Posts: 307
Joined: Wed Sep 01, 2021 4:08 pm
Location: Germany
Full name: Roland Tomasi

Re: We need to scrap Perft()

Post by R. Tomasi »

Mergi wrote: Sat Dec 18, 2021 4:55 pm ...
We seem to have different results for depth 6 (your definition of depth).
R. Tomasi
Posts: 307
Joined: Wed Sep 01, 2021 4:08 pm
Location: Germany
Full name: Roland Tomasi

Re: We need to scrap Perft()

Post by R. Tomasi »

Mergi wrote: Sat Dec 18, 2021 4:57 pm Oh, your depth 6 is different from mine by 3 nodes.

2812011 != 2812008

I wonder why that is
Underpromotions would be my guess... (?) Are you counting underpromotions when doing the captures only layer? I don't.
Mergi
Posts: 127
Joined: Sat Aug 21, 2021 9:55 pm
Full name: Jen

Re: We need to scrap Perft()

Post by Mergi »

Yes, bug was on my side. Now i'm getting the same number as you. 2812008 :oops:

It was some promotions spaghetti.