The Era of Teranode per second movegeneration is here - Gigantua Warp

Discussion of chess software programming and technical issues.

Moderator: Ras

dangi12012
Posts: 1071
Joined: Tue Apr 28, 2020 10:03 pm
Full name: Daniel Infuehr

The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by dangi12012 »

Hello chess community,

Daniel here. In 2021 I created the fastest movegenerator at that time.
I never stopped working on movegeneration, and it was pretty clear for me that the scaling on CPUs is very limited. Mostly due to memory bandwidth, and scaling stopping with AVX512, later AVX10. Since 2022 I have been working on a gpu movegenerator nonstop. Which is now ready to present.

GPUs dont have pext instruction for movegeneration, and the memory model is very different to CPU movegeneration. Almost none of the speed approaches map to the gpu. Most importantly warps (32 threads) have to execute in unison (non divergent). Also arrays are very expensive if the compiler cant prove indices at compiletime.

So what is required - not optional, is branchfree, non divergent code without any device memory footprint (absolute minimum register usage in nsight compute). U64 is also a footgun with large chess trees, meaning device resident code has to handle u128 or even more in a manner that is performant.

Forget materializing a movelist, that will thrash shared memory (which is 10x faster than global memory, but that is much too slow)
I must have read the nvidia developer guide 20x from beginning to end in the past years.
A few ideas - 90° rotated QBB. This is still make - unmake engine - maintaining a board in registers. No arrays on device code except shared memory.
cooperative groups. Also no need for block level aggregation, like prefix sums etc. Work is truly parallel.

Also color free chess. It is never "white" vs "white" it is "us" vs "them". The player to move, moves always in the same direction, and between each move the board is (cuda syntax) reverted via brevll. This saves many different masks and shifts, which are now const resident, and non color dependent. In that sense, the color to move template, is obsolete, and became a different paradigm where its not needed.

Before gigantua the fastest known movegenerator was 350MNPS. I raised this bar to 2.2 GNPS per thread. It is time to raise this bar again. I thought gpus can reach 100 GNPS, but I was wrong. That barrier was crossed The right exponent for nodes calculated per second BASE is TNPS. Without the TT.

Presenting Gigantua-warp (gpu engine)

Single RTX 3080 - no host ram taken. "root 2308.4" That is the speed without TT. That is 2308 Billion Nodes per second - 2 TNPS on a 3080 from 2020:

Code: Select all

run config: fen="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" depth=11
[2026-07-31 13:08:01:075] - level 1 returned
[2026-07-31 13:08:01:076] - Perft 1 20 120.7ms 0.000 GNodes/s
[2026-07-31 13:08:01:077] - expand(gpu): 20 -> 400 children, 400 unique
[2026-07-31 13:08:01:077] - level 2 returned
[2026-07-31 13:08:01:077] - Perft 2 400 122.3ms 0.000 GNodes/s
[2026-07-31 13:08:01:079] - expand(gpu): 400 -> 8902 children, 5362 unique
[2026-07-31 13:08:01:079] - level 3 returned
[2026-07-31 13:08:01:080] - Perft 3 8902 124.8ms 0.000 GNodes/s
[2026-07-31 13:08:01:084] - expand(gpu): 5362 -> 118522 children, 72078 unique
[2026-07-31 13:08:01:085] - level 4 returned
[2026-07-31 13:08:01:086] - Perft 4 197281 130.9ms 0.002 GNodes/s
[2026-07-31 13:08:01:108] - expand(gpu): 72078 -> 1797389 children, 822518 unique
[2026-07-31 13:08:01:124] - level 5 returned
[2026-07-31 13:08:01:126] - Perft 5 4865609 171.6ms 0.028 GNodes/s
[2026-07-31 13:08:01:320] - expand(gpu): 822518 -> 20197183 children, 9417683 unique
[2026-07-31 13:08:01:384] - level 6 returned
[2026-07-31 13:08:01:404] - Perft 6 119060324 449.1ms 0.265 GNodes/s
[2026-07-31 13:08:01:404] - Kernel execution time: 449.255700 milliseconds
[2026-07-31 13:08:01:404] - weighted frontier: depth 6, 9417683 unique roots (perft(6) = 119060324)
[2026-07-31 13:08:01:646] - [tt] tier sizing: 21761696/174093572/174093574 slots (5.67 GB tables, pow2 shape 24/27/27) scheme=fastrange f=1.30
[2026-07-31 13:08:01:929] - frontier staging: roots 2MB large pages, weights 2MB large pages
[2026-07-31 13:08:01:991] - Threads: 174080 (1360 x 128), Depth=5
[2026-07-31 13:08:02:095] -   counting... 0.8% 71922/9417683 roots 0.1s elapsed  12570.4 GN/s root  341.8 ETA     --
[2026-07-31 13:08:04:047] -   counting... 5.3% 500996/9417683 roots 2.1s elapsed  62035.6 GN/s root 2941.6 ETA  16.1s
[2026-07-31 13:08:05:998] -   counting... 9.6% 906180/9417683 roots 4.0s elapsed  55056.3 GN/s root 3171.2 ETA  18.9s
[2026-07-31 13:08:08:061] -   counting... 13.7% 1293082/9417683 roots 6.1s elapsed  54167.3 GN/s root 3120.8 ETA  21.9s
[2026-07-31 13:08:10:013] -   counting... 17.4% 1641718/9417683 roots 8.0s elapsed  51507.3 GN/s root 3193.2 ETA  24.8s
[2026-07-31 13:08:12:075] -   counting... 21.3% 2004898/9417683 roots 10.1s elapsed  49897.6 GN/s root 3119.1 ETA  27.2s
[2026-07-31 13:08:14:025] -   counting... 24.6% 2314336/9417683 roots 12.0s elapsed  48041.5 GN/s root 3064.3 ETA  29.8s
[2026-07-31 13:08:16:089] -   counting... 27.8% 2619240/9417683 roots 14.1s elapsed  45805.9 GN/s root 2981.5 ETA  32.2s
[2026-07-31 13:08:18:043] -   counting... 30.9% 2912664/9417683 roots 16.1s elapsed  44710.7 GN/s root 2918.3 ETA  33.7s
[2026-07-31 13:08:19:996] -   counting... 34.0% 3204738/9417683 roots 18.0s elapsed  43412.1 GN/s root 2851.5 ETA  79.4s
[2026-07-31 13:08:22:056] -   counting... 37.2% 3506324/9417683 roots 20.1s elapsed  42369.4 GN/s root 2784.7 ETA  78.6s
[2026-07-31 13:08:24:010] -   counting... 39.9% 3761290/9417683 roots 22.0s elapsed  41078.7 GN/s root 2720.4 ETA  76.9s
[2026-07-31 13:08:26:072] -   counting... 42.7% 4021764/9417683 roots 24.1s elapsed  40259.7 GN/s root 2667.2 ETA  76.1s
[2026-07-31 13:08:28:023] -   counting... 45.0% 4241082/9417683 roots 26.0s elapsed  38987.2 GN/s root 2622.0 ETA  75.2s
[2026-07-31 13:08:30:084] -   counting... 47.8% 4498334/9417683 roots 28.1s elapsed  38486.2 GN/s root 2588.2 ETA  73.3s
[2026-07-31 13:08:32:038] -   counting... 50.1% 4718630/9417683 roots 30.0s elapsed  37762.6 GN/s root 2569.7 ETA  71.4s
[2026-07-31 13:08:33:993] -   counting... 52.2% 4915496/9417683 roots 32.0s elapsed  36662.5 GN/s root 2535.3 ETA  71.7s
[2026-07-31 13:08:36:052] -   counting... 54.6% 5139482/9417683 roots 34.1s elapsed  36114.6 GN/s root 2504.0 ETA  69.2s
[2026-07-31 13:08:38:005] -   counting... 56.6% 5331624/9417683 roots 36.0s elapsed  35418.7 GN/s root 2474.7 ETA  69.2s
[2026-07-31 13:08:40:065] -   counting... 58.6% 5515898/9417683 roots 38.1s elapsed  34507.9 GN/s root 2441.8 ETA  67.8s
[2026-07-31 13:08:42:017] -   counting... 60.2% 5671912/9417683 roots 40.0s elapsed  33461.4 GN/s root 2409.6 ETA  69.1s
[2026-07-31 13:08:44:082] -   counting... 62.2% 5862210/9417683 roots 42.1s elapsed  33107.7 GN/s root 2401.8 ETA  66.5s
[2026-07-31 13:08:46:034] -   counting... 64.1% 6032344/9417683 roots 44.0s elapsed  32708.2 GN/s root 2388.4 ETA  65.7s
[2026-07-31 13:08:48:091] -   counting... 65.8% 6199884/9417683 roots 46.1s elapsed  32210.2 GN/s root 2380.8 ETA  63.6s
[2026-07-31 13:08:50:053] -   counting... 67.5% 6354486/9417683 roots 48.1s elapsed  31700.6 GN/s root 2380.4 ETA  63.0s
[2026-07-31 13:08:52:014] -   counting... 69.0% 6496116/9417683 roots 50.0s elapsed  31071.9 GN/s root 2364.3 ETA  61.3s
[2026-07-31 13:08:54:075] -   counting... 70.9% 6680822/9417683 roots 52.1s elapsed  30437.3 GN/s root 2346.4 ETA  58.4s
[2026-07-31 13:08:56:029] -   counting... 73.1% 6883512/9417683 roots 54.0s elapsed  29955.7 GN/s root 2308.4 ETA  53.7s
[2026-07-31 13:08:58:093] -   counting... 75.0% 7065444/9417683 roots 56.1s elapsed  29571.0 GN/s root 2274.0 ETA  51.3s
[2026-07-31 13:09:00:051] -   counting... 76.7% 7221014/9417683 roots 58.1s elapsed  29090.2 GN/s root 2246.2 ETA  48.4s
[2026-07-31 13:09:02:005] -   counting... 78.5% 7389164/9417683 roots 60.0s elapsed  28727.0 GN/s root 2215.9 ETA  45.5s
[2026-07-31 13:09:04:068] -   counting... 80.3% 7566628/9417683 roots 62.1s elapsed  28363.7 GN/s root 2189.1 ETA  41.6s
[2026-07-31 13:09:06:023] -   counting... 82.0% 7721916/9417683 roots 64.0s elapsed  28011.3 GN/s root 2168.2 ETA  29.0s
[2026-07-31 13:09:08:086] -   counting... 83.7% 7879308/9417683 roots 66.1s elapsed  27615.1 GN/s root 2141.9 ETA  24.0s
[2026-07-31 13:09:10:037] -   counting... 85.1% 8018812/9417683 roots 68.0s elapsed  27228.2 GN/s root 2120.3 ETA  21.0s
[2026-07-31 13:09:12:096] -   counting... 86.8% 8174386/9417683 roots 70.1s elapsed  26905.6 GN/s root 2102.7 ETA  17.8s
[2026-07-31 13:09:14:047] -   counting... 88.2% 8306258/9417683 roots 72.1s elapsed  26517.2 GN/s root 2088.7 ETA  15.4s
[2026-07-31 13:09:15:996] -   counting... 89.5% 8426448/9417683 roots 74.0s elapsed  26156.8 GN/s root 2074.7 ETA  13.7s
[2026-07-31 13:09:18:058] -   counting... 90.8% 8554082/9417683 roots 76.1s elapsed  25805.9 GN/s root 2061.7 ETA  12.0s
[2026-07-31 13:09:20:014] -   counting... 92.0% 8666952/9417683 roots 78.0s elapsed  25452.2 GN/s root 2054.8 ETA  10.5s
[2026-07-31 13:09:22:072] -   counting... 93.2% 8780554/9417683 roots 80.1s elapsed  25024.3 GN/s root 2045.2 ETA   8.9s
[2026-07-31 13:09:24:024] -   counting... 94.4% 8893200/9417683 roots 82.0s elapsed  24664.4 GN/s root 2031.5 ETA   7.3s
[2026-07-31 13:09:26:087] -   counting... 95.7% 9014292/9417683 roots 84.1s elapsed  24314.5 GN/s root 2018.2 ETA   5.7s
[2026-07-31 13:09:28:036] -   counting... 96.8% 9120950/9417683 roots 86.0s elapsed  23970.4 GN/s root 2010.1 ETA   4.4s
[2026-07-31 13:09:30:095] -   counting... 98.0% 9226228/9417683 roots 88.1s elapsed  23584.1 GN/s root 1996.6 ETA   2.9s
[2026-07-31 13:09:32:048] -   counting... 99.4% 9357358/9417683 roots 90.1s elapsed  23204.8 GN/s root 1980.6 ETA   0.9s
[2026-07-31 13:09:33:459] - exact ladder: 4 leg(s) on 1 worker(s)
[2026-07-31 13:09:33:459] -   leg 0: primary frontier, 9417683 roots at ply 6, endDepth 3 -> produces perft(9)
[2026-07-31 13:09:33:459] -   leg 1: primary frontier, 9417683 roots at ply 6, endDepth 4 -> produces perft(10)
[2026-07-31 13:09:33:459] -   leg 2: snapshot frontier, 72078 roots at ply 4, endDepth 3 -> produces perft(7)
[2026-07-31 13:09:33:459] -   leg 3: snapshot frontier, 822518 roots at ply 5, endDepth 3 -> produces perft(8)
[2026-07-31 13:09:33:460] - exact ladder: leg 0 START (ply 9, endDepth 3) on gpu0 - 9417683 roots in 9 chunk(s)
[2026-07-31 13:09:34:383] -   ladder leg 0 (ply 9): 100.0%  9417683/9417683 roots  chunk 9/9    0.9s elapsed (kernel 0.3s)  ETA     --
[2026-07-31 13:09:34:384] - exact ladder: leg 0 DONE (ply 9) on gpu0 - wall 0.923 s, kernel 0.258 s
[2026-07-31 13:09:34:384] - exact ladder: leg 1 START (ply 10, endDepth 4) on gpu0 - 9417683 roots in 9 chunk(s)
[2026-07-31 13:09:36:477] -   ladder leg 1 (ply 10):  44.5%  4194304/9417683 roots  chunk 4/9    2.1s elapsed (kernel 1.8s)  ETA   2.6s
[2026-07-31 13:09:39:083] -   ladder leg 1 (ply 10):  89.1%  8388608/9417683 roots  chunk 8/9    4.7s elapsed (kernel 4.1s)  ETA   0.6s
[2026-07-31 13:09:39:877] -   ladder leg 1 (ply 10): 100.0%  9417683/9417683 roots  chunk 9/9    5.5s elapsed (kernel 4.8s)  ETA     --
[2026-07-31 13:09:39:877] - exact ladder: leg 1 DONE (ply 10) on gpu0 - wall 5.494 s, kernel 4.847 s
[2026-07-31 13:09:39:878] - exact ladder: leg 2 START (ply 7, endDepth 3) on gpu0 - 72078 roots in 1 chunk(s)
[2026-07-31 13:09:39:887] -   ladder leg 2 (ply 7): 100.0%  72078/72078 roots  chunk 1/1    0.0s elapsed (kernel 0.0s)  ETA     --
[2026-07-31 13:09:39:888] - exact ladder: leg 2 DONE (ply 7) on gpu0 - wall 0.010 s, kernel 0.002 s
[2026-07-31 13:09:39:888] - exact ladder: leg 3 START (ply 8, endDepth 3) on gpu0 - 822518 roots in 1 chunk(s)
[2026-07-31 13:09:39:985] -   ladder leg 3 (ply 8): 100.0%  822518/822518 roots  chunk 1/1    0.1s elapsed (kernel 0.0s)  ETA     --
[2026-07-31 13:09:39:985] - exact ladder: leg 3 DONE (ply 8) on gpu0 - wall 0.097 s, kernel 0.021 s
[2026-07-31 13:09:39:985] - exact ladder: all 4 leg(s) done - wall 6.527 s, kernel 5.129 s reported
[2026-07-31 13:09:39:997] - Perft 7 3195901860 (from the primary frontier)
[2026-07-31 13:09:39:998] - Perft 8 84998978956 (from the primary frontier)
[2026-07-31 13:09:39:998] - Perft 9 2439530234167 (from the primary frontier)
[2026-07-31 13:09:39:998] - Perft 10 69352859712417 (from the primary frontier)
[2026-07-31 13:09:39:998] - Kernel execution time: 91886.513512 milliseconds
[2026-07-31 13:09:39:998] - Kernel finished
[2026-07-31 13:09:39:998] - Total 1 20
[2026-07-31 13:09:39:998] - Total 2 400
[2026-07-31 13:09:39:998] - Total 3 8902
[2026-07-31 13:09:39:998] - Total 4 197281
[2026-07-31 13:09:39:998] - Total 5 4865609
[2026-07-31 13:09:39:998] - Total 6 119060324
[2026-07-31 13:09:39:998] - Total 7 3195901860
[2026-07-31 13:09:39:999] - Total 8 84998978956
[2026-07-31 13:09:39:999] - Total 9 2439530234167
[2026-07-31 13:09:39:999] - Total 10 69352859712417
[2026-07-31 13:09:39:999] - Perft 11 2097651003696806 91886.5ms 22828.714 GNodes/s
8x 5090 - Kiwipete P11 - Words First Release - 1007981.328 GN/s root 60169.9 GN/s.
In words - 1 Million+ GN/s TT, 60 thousand billion nodes base perf ~ 7 thousand billion moves per card per second.

Code: Select all

[2026-07-31 11:33:09:546] - multi-GPU: 8 devices, 472514079 roots, chunk 7383032
[2026-07-31 11:33:09:547] - [gossip] OFF (default, pending re-earned dual-GPU A/B verdicts; CHESS_TT_GOSSIP=1 to enable)
[2026-07-31 11:34:17:800] -   counting... 14.0% 59064256/472514079 roots 68.3s elapsed 294647.5 GN/s root 13142.9 ETA 418.7s (gpu1 done chunk at 22149096)
[2026-07-31 11:34:23:796] -   counting... 15.4% 66447288/472514079 roots 74.2s elapsed 597959.4 GN/s root 25407.4 ETA 408.1s (gpu0 done chunk at 0)
[2026-07-31 11:34:36:790] -   counting... 17.2% 73830320/472514079 roots 87.2s elapsed 718927.5 GN/s root 32967.6 ETA 420.0s (gpu4 done chunk at 29532128)
[2026-07-31 11:34:40:259] -   counting... 18.7% 81213352/472514079 roots 90.7s elapsed 888768.0 GN/s root 42563.4 ETA 393.6s (gpu5 done chunk at 36915160)
[2026-07-31 11:34:41:029] -   counting... 20.5% 88596384/472514079 roots 91.5s elapsed 1143660.4 GN/s root 55152.2 ETA 354.7s (gpu6 done chunk at 44298192)
[2026-07-31 11:34:47:375] -   counting... 23.4% 95979416/472514079 roots 97.8s elapsed 1294082.4 GN/s root 63043.3 ETA 320.2s (gpu2 done chunk at 7383032)
[2026-07-31 11:34:58:019] -   counting... 25.8% 103362448/472514079 roots 108.5s elapsed 1346282.8 GN/s root 66252.0 ETA 311.2s (gpu3 done chunk at 14766064)
[2026-07-31 11:35:03:555] -   counting... 27.8% 110745480/472514079 roots 114.0s elapsed 1478256.8 GN/s root 74673.8 ETA 295.4s (gpu7 done chunk at 51681224)
[2026-07-31 11:35:55:883] -   counting... 29.6% 118128512/472514079 roots 166.3s elapsed 1141088.8 GN/s root 57509.0 ETA 395.4s (gpu0 done chunk at 66447288)
[2026-07-31 11:36:29:803] -   counting... 31.1% 125511544/472514079 roots 200.3s elapsed 1036932.5 GN/s root 53583.4 ETA 443.4s (gpu1 done chunk at 59064256)
[2026-07-31 11:36:31:366] -   counting... 32.6% 132894576/472514079 roots 201.8s elapsed 1126915.5 GN/s root 58958.8 ETA 417.3s (gpu4 done chunk at 73830320)
[2026-07-31 11:36:32:091] -   counting... 34.3% 140277608/472514079 roots 202.5s elapsed 1306162.9 GN/s root 64027.6 ETA 387.8s (gpu6 done chunk at 88596384)
[2026-07-31 11:36:50:006] -   counting... 35.8% 147660640/472514079 roots 220.5s elapsed 1298424.2 GN/s root 63669.1 ETA 395.1s (gpu5 done chunk at 81213352)
[2026-07-31 11:36:55:629] -   counting... 37.2% 155043672/472514079 roots 226.1s elapsed 1360324.4 GN/s root 66810.2 ETA 381.4s (gpu7 done chunk at 110745480)
[2026-07-31 11:37:01:502] -   counting... 38.9% 162426704/472514079 roots 232.0s elapsed 1473883.9 GN/s root 70205.1 ETA 364.6s (gpu2 done chunk at 95979416)
[2026-07-31 11:37:08:727] -   counting... 40.4% 169809736/472514079 roots 239.2s elapsed 1531668.0 GN/s root 72394.7 ETA 353.6s (gpu3 done chunk at 103362448)
[2026-07-31 11:38:12:774] -   counting... 42.0% 177192768/472514079 roots 303.2s elapsed 1272358.3 GN/s root 60909.0 ETA 419.1s (gpu0 done chunk at 118128512)
[2026-07-31 11:38:46:350] -   counting... 43.4% 184575800/472514079 roots 336.8s elapsed 1218804.1 GN/s root 58651.4 ETA 438.4s (gpu4 done chunk at 132894576)
[2026-07-31 11:38:51:548] -   counting... 45.1% 191958832/472514079 roots 342.0s elapsed 1256700.8 GN/s root 61097.2 ETA 415.7s (gpu1 done chunk at 125511544)
[2026-07-31 11:39:13:615] -   counting... 46.6% 199341864/472514079 roots 364.1s elapsed 1246229.5 GN/s root 61311.0 ETA 416.6s (gpu6 done chunk at 140277608)
[2026-07-31 11:39:14:947] -   counting... 48.4% 206724896/472514079 roots 365.4s elapsed 1310388.2 GN/s root 64782.8 ETA 390.3s (gpu7 done chunk at 155043672)
[2026-07-31 11:39:20:766] -   counting... 50.0% 214107928/472514079 roots 371.2s elapsed 1341358.9 GN/s root 66698.9 ETA 370.7s (gpu3 done chunk at 169809736)
[2026-07-31 11:39:31:911] -   counting... 51.6% 221490960/472514079 roots 382.4s elapsed 1355480.7 GN/s root 68120.0 ETA 359.1s (gpu5 done chunk at 147660640)
[2026-07-31 11:39:42:551] -   counting... 53.0% 228873992/472514079 roots 393.0s elapsed 1377451.7 GN/s root 69853.2 ETA 348.4s (gpu2 done chunk at 162426704)
[2026-07-31 11:40:41:254] -   counting... 54.6% 236257024/472514079 roots 451.7s elapsed 1236558.4 GN/s root 63137.8 ETA 375.0s (gpu0 done chunk at 177192768)
[2026-07-31 11:40:53:384] -   counting... 56.1% 243640056/472514079 roots 463.8s elapsed 1247826.3 GN/s root 63799.5 ETA 362.8s (gpu4 done chunk at 184575800)
[2026-07-31 11:41:20:257] -   counting... 57.7% 251023088/472514079 roots 490.7s elapsed 1217727.5 GN/s root 62344.4 ETA 360.0s (gpu6 done chunk at 199341864)
[2026-07-31 11:41:28:689] -   counting... 59.1% 258406120/472514079 roots 499.1s elapsed 1233955.1 GN/s root 63502.5 ETA 346.0s (gpu1 done chunk at 191958832)
[2026-07-31 11:41:40:267] -   counting... 60.4% 265789152/472514079 roots 510.7s elapsed 1244538.7 GN/s root 64079.4 ETA 335.0s (gpu7 done chunk at 206724896)
[2026-07-31 11:42:03:707] -   counting... 62.1% 273172184/472514079 roots 534.2s elapsed 1234114.9 GN/s root 63835.6 ETA 326.5s (gpu3 done chunk at 214107928)
[2026-07-31 11:42:04:774] -   counting... 63.6% 280555216/472514079 roots 535.2s elapsed 1274396.7 GN/s root 66042.8 ETA 306.5s (gpu2 done chunk at 228873992)
[2026-07-31 11:42:30:653] -   counting... 65.9% 287938248/472514079 roots 561.1s elapsed 1251193.0 GN/s root 65170.3 ETA 290.8s (gpu5 done chunk at 221490960)
[2026-07-31 11:43:18:387] -   counting... 68.1% 295321280/472514079 roots 608.8s elapsed 1189107.4 GN/s root 62062.2 ETA 285.6s (gpu4 done chunk at 243640056)
[2026-07-31 11:43:20:585] -   counting... 69.7% 302704312/472514079 roots 611.0s elapsed 1216638.2 GN/s root 63747.8 ETA 265.9s (gpu0 done chunk at 236257024)
[2026-07-31 11:43:47:108] -   counting... 71.2% 310087344/472514079 roots 637.6s elapsed 1200724.6 GN/s root 62926.4 ETA 257.3s (gpu7 done chunk at 265789152)
[2026-07-31 11:44:04:435] -   counting... 72.7% 317470376/472514079 roots 654.9s elapsed 1201685.1 GN/s root 63359.1 ETA 245.9s (gpu6 done chunk at 251023088)
[2026-07-31 11:44:30:942] -   counting... 74.1% 324853408/472514079 roots 681.4s elapsed 1182918.2 GN/s root 62755.1 ETA 237.7s (gpu1 done chunk at 258406120)
[2026-07-31 11:44:39:641] -   counting... 75.5% 332236440/472514079 roots 690.1s elapsed 1198725.2 GN/s root 63758.0 ETA 223.7s (gpu3 done chunk at 273172184)
[2026-07-31 11:44:46:033] -   counting... 77.1% 339619472/472514079 roots 696.5s elapsed 1230836.4 GN/s root 64791.0 ETA 207.2s (gpu2 done chunk at 280555216)
[2026-07-31 11:45:39:622] -   counting... 79.0% 347002504/472514079 roots 750.1s elapsed 1183726.1 GN/s root 61718.7 ETA 199.2s (gpu5 done chunk at 287938248)
[2026-07-31 11:46:43:710] -   counting... 80.9% 354385536/472514079 roots 814.2s elapsed 1121255.8 GN/s root 58576.2 ETA 191.7s (gpu4 done chunk at 295321280)
[2026-07-31 11:46:45:014] -   counting... 82.4% 361768568/472514079 roots 815.5s elapsed 1145688.0 GN/s root 59993.5 ETA 174.1s (gpu0 done chunk at 302704312)
[2026-07-31 11:47:03:006] -   counting... 83.7% 368690162/472514079 roots 833.5s elapsed 1144747.3 GN/s root 60169.9 ETA 162.6s (gpu7 done chunk at 310087344)
[2026-07-31 11:47:22:689] -   counting... 84.7% 375179156/472514079 roots 853.1s elapsed 1138501.9 GN/s root 59953.0 ETA 153.9s (gpu3 done chunk at 332236440)
[2026-07-31 11:47:23:289] -   counting... 85.7% 381262588/472514079 roots 853.7s elapsed 1164402.6 GN/s root 61087.2 ETA 142.2s (gpu2 done chunk at 339619472)
[2026-07-31 11:47:32:108] -   counting... 86.5% 386965806/472514079 roots 862.6s elapsed 1176591.4 GN/s root 61947.8 ETA 134.3s (gpu6 done chunk at 317470376)
[2026-07-31 11:47:48:747] -   counting... 88.0% 392312573/472514079 roots 879.2s elapsed 1175655.3 GN/s root 62160.6 ETA 120.1s (gpu1 done chunk at 324853408)
[2026-07-31 11:48:56:012] -   counting... 89.1% 397325167/472514079 roots 946.5s elapsed 1119119.8 GN/s root 58954.5 ETA 115.8s (gpu5 done chunk at 347002504)
[2026-07-31 11:49:30:451] -   counting... 90.0% 402024474/472514079 roots 980.9s elapsed 1090387.2 GN/s root 57783.8 ETA 109.5s (gpu2 done chunk at 381262588)
[2026-07-31 11:49:42:048] -   counting... 90.8% 406430074/472514079 roots 992.5s elapsed 1095045.9 GN/s root 58238.5 ETA 100.4s (gpu0 done chunk at 361768568)
[2026-07-31 11:49:43:060] -   counting... 91.7% 410560324/472514079 roots 993.5s elapsed 1106466.8 GN/s root 59097.8 ETA  89.6s (gpu3 done chunk at 375179156)
[2026-07-31 11:49:48:581] -   counting... 92.5% 414432433/472514079 roots 999.0s elapsed 1119673.8 GN/s root 59627.1 ETA  81.2s (gpu6 done chunk at 386965806)
[2026-07-31 11:49:49:666] -   counting... 93.2% 418062535/472514079 roots 1000.1s elapsed 1132712.2 GN/s root 60634.2 ETA  73.2s (gpu7 done chunk at 368690162)
[2026-07-31 11:50:01:931] -   counting... 93.9% 421465756/472514079 roots 1012.4s elapsed 1137929.9 GN/s root 61050.9 ETA  66.1s (gpu4 done chunk at 354385536)
[2026-07-31 11:50:05:068] -   counting... 94.4% 424656276/472514079 roots 1015.5s elapsed 1148150.1 GN/s root 61610.7 ETA  59.8s (gpu1 done chunk at 392312573)
[2026-07-31 11:51:09:474] -   counting... 95.0% 427647388/472514079 roots 1079.9s elapsed 1089611.9 GN/s root 58602.1 ETA  56.5s (gpu5 done chunk at 397325167)
[2026-07-31 11:51:22:099] -   counting... 95.5% 430451556/472514079 roots 1092.6s elapsed 1086572.3 GN/s root 58526.2 ETA  51.4s (gpu2 done chunk at 402024474)
[2026-07-31 11:51:31:082] -   counting... 96.0% 433080463/472514079 roots 1101.5s elapsed 1086820.5 GN/s root 58566.5 ETA  45.5s (gpu7 done chunk at 418062535)
[2026-07-31 11:51:37:210] -   counting... 96.3% 435545064/472514079 roots 1107.7s elapsed 1091482.5 GN/s root 58816.4 ETA  42.4s (gpu0 done chunk at 406430074)
[2026-07-31 11:51:38:341] -   counting... 96.5% 437855627/472514079 roots 1108.8s elapsed 1099540.4 GN/s root 59316.4 ETA  39.8s (gpu3 done chunk at 410560324)
[2026-07-31 11:51:41:470] -   counting... 96.7% 440021780/472514079 roots 1111.9s elapsed 1103969.0 GN/s root 59616.5 ETA  37.5s (gpu1 done chunk at 424656276)
[2026-07-31 11:51:44:331] -   counting... 97.0% 442052548/472514079 roots 1114.8s elapsed 1110078.3 GN/s root 60023.7 ETA  34.8s (gpu6 done chunk at 414432433)
[2026-07-31 11:51:53:233] -   counting... 97.3% 443956393/472514079 roots 1123.7s elapsed 1108952.5 GN/s root 60036.8 ETA  31.5s (gpu4 done chunk at 421465756)
[2026-07-31 12:00:10:350] - Kernel execution time: 1305071.746375 milliseconds
[2026-07-31 12:00:10:350] - Kernel finished
[2026-07-31 12:00:10:350] - Total 1 48
[2026-07-31 12:00:10:350] - Total 2 2039
[2026-07-31 12:00:10:350] - Total 3 97862
[2026-07-31 12:00:10:350] - Total 4 4085603
[2026-07-31 12:00:10:350] - Total 5 193690690
[2026-07-31 12:00:10:350] - Total 6 8031647685
[2026-07-31 12:00:10:350] - Total 7 374190009323
[2026-07-31 12:00:10:350] - Total 8 15493944087984
[2026-07-31 12:00:10:350] - Total 9 708027759953502
[2026-07-31 12:00:10:350] - Total 10 29344805396643919
[2026-07-31 12:00:10:350] - Perft 11 1315487952573035776 1305071.7ms 1007981.328 GNodes/s
I will share my full logs in the grand chess tree discord.

Dear chess community, this performance, is the new baseline for chess movegeneration. Scalable, host ram free up to ply 13.
The board structure itself can also be quite large, so attaching more metrics wont be too expensive either.

Architecture and P14, P15 times will be shared in due time.
P14 8x 5090 -

Code: Select all

[2026-07-31 01:33:49:665] -   counting... 99.6% 9147777024/9183507426 roots 5556.7s elapsed  44191.9 GN/s root 44191.9 ETA  21.7s
[2026-07-31 01:33:52:404] -   counting... 99.7% 9151971328/9183507426 roots 5559.4s elapsed  44187.4 GN/s root 44187.4 ETA  19.2s
[2026-07-31 01:33:55:418] -   counting... 99.7% 9156165632/9183507426 roots 5562.4s elapsed  44176.6 GN/s root 44176.6 ETA  16.6s
[2026-07-31 01:33:57:357] -   counting... 99.7% 9160359936/9183507426 roots 5564.4s elapsed  44176.3 GN/s root 44176.3 ETA  14.1s
[2026-07-31 01:33:59:201] -   counting... 99.8% 9164554240/9183507426 roots 5566.2s elapsed  44176.7 GN/s root 44176.7 ETA  11.5s
[2026-07-31 01:34:00:388] -   counting... 99.8% 9166730210/9183507426 roots 5567.4s elapsed  44176.7 GN/s root 44176.7 ETA  10.2s
[2026-07-31 01:34:00:830] -   counting... 99.9% 9170924514/9183507426 roots 5567.8s elapsed  44189.8 GN/s root 44189.8 ETA   7.6s
[2026-07-31 01:34:09:141] -   counting... 99.9% 9175118818/9183507426 roots 5576.1s elapsed  44141.4 GN/s root 44141.4 ETA   5.1s
[2026-07-31 01:34:11:742] -   counting... 100.0% 9179313122/9183507426 roots 5578.7s elapsed  44139.5 GN/s root 44139.5 ETA   2.5s
[2026-07-31 01:34:13:225] -   counting... 100.0% 9183507426/9183507426 roots 5580.2s elapsed  44146.9 GN/s root 44146.9 ETA     --
[2026-07-31 01:34:13:481] - rootdedup: streamed counting consumed 9183507426 roots (5492.475 s gpu)
[2026-07-31 01:34:13:482] - rootdedup: 988192872 -> 28668701726 children, 9183507426 unique (5917.359 s total)
[2026-07-31 01:34:13:937] - level 9 returned
[2026-07-31 01:34:13:937] - Perft 9 2439530234167 5969133.9ms 0.409 GNodes/s
[2026-07-31 01:34:14:336] - stream-count: folded 2190 chunk totals -> 61885021521585529237
[2026-07-31 01:34:13:937] - Kernel execution time: 5969134.016088 milliseconds
[2026-07-31 01:34:13:937] - weighted frontier: depth 9, 9183507426 unique roots (perft(9) = 2439530234167)
[2026-07-31 01:34:13:944] - frontier staging: roots 2MB transparent huge pages, weights 2MB transparent huge pages
[2026-07-31 01:34:14:369] - Perft 1 20
[2026-07-31 01:34:14:369] - Perft 2 400
[2026-07-31 01:34:14:369] - Perft 3 8902
[2026-07-31 01:34:14:369] - Perft 4 197281
[2026-07-31 01:34:14:369] - Perft 5 4865609
[2026-07-31 01:34:14:369] - Perft 6 119060324
[2026-07-31 01:34:14:369] - Perft 7 3195901860
[2026-07-31 01:34:14:369] - Perft 8 84998978956
[2026-07-31 01:34:14:369] - Perft 9 2439530234167
[2026-07-31 01:34:14:369] - Perft 14 61885021521585529237 5969134.0ms 10367504.123 GNodes/s
[2026-07-31 01:34:14:369] - target perft(14): 5969.134 s (cleared tt)
[2026-07-31 01:34:14:369] - [serve] vram free 5477 MB
[2026-07-31 01:34:14:369] - OK 61885021521585529237
Base chess iterations speed went from 350mnps to 2bnps to 5000bnps to 100% scalable 5000bnps due to obsessive effort to push that frontier as far as possible. It does not need exotic hardware. The future outlook is extremely good.

We have entered a truly golden era for computerchess.
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer
User avatar
Ajedrecista
Posts: 2264
Joined: Wed Jul 13, 2011 9:04 pm
Location: Madrid, Spain.

Re: The era of teranode per second move generation is here - Gigantua Warp.

Post by Ajedrecista »

Hello Daniel:
dangi12012 wrote: Fri Jul 31, 2026 2:33 pm[...]

Dear chess community, this performance, is the new baseline for chess movegeneration. Scalable, host ram free up to ply 13.
The board structure itself can also be quite large, so attaching more metrics wont be too expensive either.

Architecture and P14, P15 times will be shared in due time.
P14 8x 5090 -

Code: Select all

[2026-07-31 01:33:49:665] -   counting... 99.6% 9147777024/9183507426 roots 5556.7s elapsed  44191.9 GN/s root 44191.9 ETA  21.7s
[2026-07-31 01:33:52:404] -   counting... 99.7% 9151971328/9183507426 roots 5559.4s elapsed  44187.4 GN/s root 44187.4 ETA  19.2s
[2026-07-31 01:33:55:418] -   counting... 99.7% 9156165632/9183507426 roots 5562.4s elapsed  44176.6 GN/s root 44176.6 ETA  16.6s
[2026-07-31 01:33:57:357] -   counting... 99.7% 9160359936/9183507426 roots 5564.4s elapsed  44176.3 GN/s root 44176.3 ETA  14.1s
[2026-07-31 01:33:59:201] -   counting... 99.8% 9164554240/9183507426 roots 5566.2s elapsed  44176.7 GN/s root 44176.7 ETA  11.5s
[2026-07-31 01:34:00:388] -   counting... 99.8% 9166730210/9183507426 roots 5567.4s elapsed  44176.7 GN/s root 44176.7 ETA  10.2s
[2026-07-31 01:34:00:830] -   counting... 99.9% 9170924514/9183507426 roots 5567.8s elapsed  44189.8 GN/s root 44189.8 ETA   7.6s
[2026-07-31 01:34:09:141] -   counting... 99.9% 9175118818/9183507426 roots 5576.1s elapsed  44141.4 GN/s root 44141.4 ETA   5.1s
[2026-07-31 01:34:11:742] -   counting... 100.0% 9179313122/9183507426 roots 5578.7s elapsed  44139.5 GN/s root 44139.5 ETA   2.5s
[2026-07-31 01:34:13:225] -   counting... 100.0% 9183507426/9183507426 roots 5580.2s elapsed  44146.9 GN/s root 44146.9 ETA     --
[2026-07-31 01:34:13:481] - rootdedup: streamed counting consumed 9183507426 roots (5492.475 s gpu)
[2026-07-31 01:34:13:482] - rootdedup: 988192872 -> 28668701726 children, 9183507426 unique (5917.359 s total)
[2026-07-31 01:34:13:937] - level 9 returned
[2026-07-31 01:34:13:937] - Perft 9 2439530234167 5969133.9ms 0.409 GNodes/s
[2026-07-31 01:34:14:336] - stream-count: folded 2190 chunk totals -> 61885021521585529237
[2026-07-31 01:34:13:937] - Kernel execution time: 5969134.016088 milliseconds
[2026-07-31 01:34:13:937] - weighted frontier: depth 9, 9183507426 unique roots (perft(9) = 2439530234167)
[2026-07-31 01:34:13:944] - frontier staging: roots 2MB transparent huge pages, weights 2MB transparent huge pages
[2026-07-31 01:34:14:369] - Perft 1 20
[2026-07-31 01:34:14:369] - Perft 2 400
[2026-07-31 01:34:14:369] - Perft 3 8902
[2026-07-31 01:34:14:369] - Perft 4 197281
[2026-07-31 01:34:14:369] - Perft 5 4865609
[2026-07-31 01:34:14:369] - Perft 6 119060324
[2026-07-31 01:34:14:369] - Perft 7 3195901860
[2026-07-31 01:34:14:369] - Perft 8 84998978956
[2026-07-31 01:34:14:369] - Perft 9 2439530234167
[2026-07-31 01:34:14:369] - Perft 14 61885021521585529237 5969134.0ms 10367504.123 GNodes/s
[2026-07-31 01:34:14:369] - target perft(14): 5969.134 s (cleared tt)
[2026-07-31 01:34:14:369] - [serve] vram free 5477 MB
[2026-07-31 01:34:14:369] - OK 61885021521585529237
Base chess iterations speed went from 350mnps to 2bnps to 5000bnps to 100% scalable 5000bnps due to obsessive effort to push that frontier as far as possible. It does not need exotic hardware. The future outlook is extremely good.

We have entered a truly golden era for computerchess.
Perft(14) in less than 100 minutes? :shock: And Perft(15) running, maybe less than 3 days required... Would Perft(16) take around two months? If that, looks feasible in the sense of time, surely not regarding electric bills. Even compute the 20 possible perft(15) after the first ply and add the values, just to prevent losing an advance run... maybe less than 5 days for each of these smaller runs. I stay tuned.

Regards from Spain.

Ajedrecista.
chessbit
Posts: 48
Joined: Fri Dec 29, 2023 4:47 pm
Location: Belgium
Full name: thomas albert

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by chessbit »

Great job. I'm way too lazy to learn how to code for a GPU but it certainly looks like the way to go to push boundaries.
Have you implemented a null move at depth 2 (if that is at all possible with that architecture)? It gives a significant speed boost.
DreamerExx
Posts: 65
Joined: Wed May 20, 2026 4:08 pm
Full name: Даниил Крецу

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by DreamerExx »

Hi Daniel,
This is impressive engineering work regardless of the numbers, but I’d like to understand the perft(14) figure better because something isn’t adding up for me.

In the log you posted, the kernel execution time for producing perft(9) and perft(14) is identical: 5969133.9ms / 5969134.0ms. But the reported speed goes from 0.409 GNodes/s (for perft(9)) to 10,367,504 GNodes/s (for perft(14)) in that same window - a difference of about 25 million times. That doesn’t look like two independent measurements of the same run - it looks like the perft(14) total (which is astronomically large on its own) got divided by the elapsed time of the perft(9) kernel, rather than reflecting actual work done at depth 14.

Separately, going from 2.2 GNPS (single threaded CPU, your earlier Gigantua work) to over 1,000,000 GNPS (8x RTX 5090 with TT) is many orders of magnitude beyond what generation over generation GPU improvements would predict. Even scaling linearly across 8 cards and accounting for a much better algorithm, that gap is hard to reconcile.

Would you be willing to share the source, or at least the exact methodology for how perft(14) was computed and verified against known reference values? That would go a long way toward clearing this up. Not trying to be adversarial, just want to understand the real numbers here, because the underlying architecture ideas (register resident QBB, no movelist materialization) are genuinely interesting on their own merits.
DreamerExx
Posts: 65
Joined: Wed May 20, 2026 4:08 pm
Full name: Даниил Крецу

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by DreamerExx »

One more thing I noticed after looking at the raw log more closely: the “Perft 14” line isn’t just reusing the perft(9) timer, it also appears to reuse the perft(9) result’s neighboring line. Right before it, there’s a “stream-count: folded 2190 chunk totals -> 61885021521585529237” entry, and that exact same number then shows up as the reported perft(14) total. That suggests the value being labeled perft(14) may actually be some kind of chunk-summation artifact rather than an independent depth-14 count.

There’s also a numeric issue worth flagging separately: 61885021521585529237 exceeds the range of a 64-bit unsigned integer (max ~1.845 x 10^19) by roughly a factor of 3.3. If any accumulator in that reporting path is u64, that value cannot be a correctly summed total, it would have wrapped. Given the emphasis in your writeup on u128-or-larger handling for large trees, I’d guess this is confined to a logging/reporting step rather than the core counting kernel, but it would be good to confirm that the same accumulator width issue doesn’t affect any of the other high-depth totals.

To be clear, none of this changes my read on perft(9) and everything before it, those numbers look internally consistent. It’s specifically the perft(14) line that looks like a reporting bug rather than a real measurement, and I’d just like to understand whether depth 14 was actually computed and verified elsewhere, or whether that line should be retracted.
dangi12012
Posts: 1071
Joined: Tue Apr 28, 2020 10:03 pm
Full name: Daniel Infuehr

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by dangi12012 »

Sure, if its 100% device resident or hybrid depends on the tree size, which is not known in advance.

So the engine runs on the gpu, if the tree gets too large, it moves to the host, parent deduplication is always happening, which under the 4x symmetry of chess has these branching numbers, and depends on the position.
20, 400, 5362, 72078, 822518
against the normal
20, 400, 8902, 197281, 4865609

It is a explicit version of a weighted TT, reducing the true branching factor as far as possible. The gpu goes to depth 2-10 starting from the tree, optimal being depth 5 (optimal sm residency).

N-5 is omitted, because the gpu frontier is hyper - optimized, and maintaining 5 totals instead of 1 for all threads in a block is just too slow keep in mind a cuda core is a 32bit machine so a u128 takes 4 registers. You can for lower levels keep u32, but then you have different types depending on depth, huge slowdown. There is a --exact which contains all depths and this is the delta time for "exact ladder" in the logs. So its just not there is the answer.

All the final outputs are in the same millisecond, because that is just the print call in the end. Let me run Steven Edwards' symmetric perft probe position. 4x RTX PRO 6000 WS (300W QS Max) in exact mode.

CHESS_EXACT=1 CHESS_STREAM_HOST=0 /root/gigantuawarp --deep "r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 10" 10

Words first P10: (as far as i know)

Code: Select all

multi-GPU: 4 devices, 19106668 roots, chunk 597083
  gpu0: 10 chunks, 4843140 roots, 59.92s
  gpu1: 9 chunks, 4520921 roots, 55.59s
  gpu2: 11 chunks, 5328829 roots, 59.59s
  gpu3: 9 chunks, 4413778 roots, 56.19s
Perft 6 6923051137 (from the primary frontier)
Perft 7 287188994746 (from the primary frontier)
Perft 8 11923589843526 (from the primary frontier)
Perft 9 490154852788714 (from the primary frontier)
Kernel execution time: 79070.469697 milliseconds
Kernel finished
Total 1 46
Total 2 2079
Total 3 89890
Total 4 3894594
Total 5 164075551
Total 6 6923051137
Total 7 287188994746
Total 8 11923589843526
Total 9 490154852788714
Perft 10 20155532500692989 79070.5ms 254905.941 GNodes/s
target perft(10): 79.070 s (exact ladder: +4.118 s for plies 6..9 - 4 from the primary frontier, 0 rebuilt)
Second run

Code: Select all

expand(par): 1 -> 46 children, 46 unique (4 dev, 0.060 s total)
level 1 returned
Perft 1 46 738.3ms 0.000 GNodes/s
expand(par): 46 parents, 2079 children across 4 device(s)
expand(par): 46 -> 2079 children, 2079 unique (4 dev, 0.566 s total)
level 2 returned
Perft 2 2079 1304.9ms 0.000 GNodes/s
expand(par): 2079 parents, 89890 children across 4 device(s)
expand(par): 2079 -> 89890 children, 49377 unique (4 dev, 0.041 s total)
level 3 returned
Perft 3 89890 1346.4ms 0.000 GNodes/s
expand(par): 49377 parents, 2111696 children across 4 device(s)
expand(par): 49377 -> 2111696 children, 1164752 unique (4 dev, 0.561 s total)
level 4 returned
Perft 4 3894594 1921.2ms 0.002 GNodes/s
expand(par): 1164752 parents, 48573531 children across 4 device(s)
expand(par): 1164752 -> 48573531 children, 19106668 unique (4 dev, 16.579 s total)
level 5 returned
Perft 5 164075551 18774.4ms 0.009 GNodes/s
Kernel execution time: 18774.471171 milliseconds
weighted frontier: depth 5, 19106668 unique roots (perft(5) = 164075551)
frontier staging: roots 2MB transparent huge pages, weights 2MB transparent huge pages
multi-GPU: 4 devices, 19106668 roots, chunk 597083
[gossip] OFF (default, pending re-earned dual-GPU A/B verdicts; CHESS_TT_GOSSIP=1 to enable)
  gpu0: 10 chunks, 4804858 roots, 59.53s
  gpu1: 9 chunks, 4463778 roots, 56.03s
  gpu2: 10 chunks, 4827171 roots, 59.66s
  gpu3: 10 chunks, 5010861 roots, 55.11s
Perft 6 6923051137 (from the primary frontier)
Perft 7 287188994746 (from the primary frontier)
Perft 8 11923589843526 (from the primary frontier)
Perft 9 490154852788714 (from the primary frontier)
Kernel execution time: 78438.321025 milliseconds
Kernel finished
Total 1 46
Total 2 2079
Total 3 89890
Total 4 3894594
Total 5 164075551
Total 6 6923051137
Total 7 287188994746
Total 8 11923589843526
Total 9 490154852788714
Perft 10 20155532500692989 78438.3ms 256960.274 GNodes/s
target perft(10): 78.438 s (exact ladder: +4.199 s for plies 6..9 - 4 from the primary frontier, 0 rebuilt)
I attached my vast logs as well now in discord which contain countless fens and full logs for 1000s of runs on different machines and gpus.
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer
DreamerExx
Posts: 65
Joined: Wed May 20, 2026 4:08 pm
Full name: Даниил Крецу

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by DreamerExx »

Thanks for the detailed explanation - that clarifies several things.

The hybrid device/host behaviour, the weighted frontier with parent deduplication, and the reason intermediate totals (N-5) are omitted in the normal path all make sense now. The 4x symmetry reduction in unique positions is also clear.
One point from the original perft(14) log is still unclear to me though:

In that run the kernel execution time reported for producing perft(9) and perft(14) was essentially identical (~5969134 ms). The enormous perft(14) number then appeared right after the line
stream-count: folded 2190 chunk totals -> 61885021521585529237
and was simply labelled as Perft 14, giving the 10+ million GN/s figure.

Was that a reporting artefact (i.e. the known perft(14) value being printed against the earlier timer), or was depth 14 actually counted in that same kernel window?
I’m not doubting the lower depths or the architecture itself - just trying to understand how that particular measurement was produced.
dangi12012
Posts: 1071
Joined: Tue Apr 28, 2020 10:03 pm
Full name: Daniel Infuehr

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by dangi12012 »

Yes the Timing is Overall for the final number. I tried some other cards today. 8x 5080, 16GB each.
Gossip = probing each others TT, via 6.14. Peer Device Memory Access in nvida toolkit - is not worth it. PCIE is too slow, and the latency is too high.
Only on true NVLINK B200, B300 they add performance uplift and can act like a unified VRAM TT. GPU Chess is for the future, as a single 5090 has a memory bandwith of 1792Gb/s for its own private super fast TT window into the chess tree ist working on. Its a very hard topic to write stackfree, branchless, non materializing, chess code, and I hope we see more in the future.

It takes 105s to calulate P12, 1520s to calculate P13 on 8x 5080 gpus.
Times are extremely consistent on undisturbed server hardware it seems.

Code: Select all

[2026-08-03 19:24:01:871] - Kernel execution time: 105620.061344 milliseconds
[2026-08-03 19:24:01:871] - Kernel finished
[2026-08-03 19:24:01:871] - Total 1 20
[2026-08-03 19:24:01:871] - Total 2 400
[2026-08-03 19:24:01:871] - Total 3 8902
[2026-08-03 19:24:01:871] - Total 4 197281
[2026-08-03 19:24:01:871] - Total 5 4865609
[2026-08-03 19:24:01:871] - Total 6 119060324
[2026-08-03 19:24:01:871] - Total 7 3195901860
[2026-08-03 19:24:01:871] - Total 8 84998978956
[2026-08-03 19:24:01:871] - Total 9 2439530234167
[2026-08-03 19:24:01:871] - Total 10 69352859712417
[2026-08-03 19:24:01:871] - Total 11 2097651003696806
[2026-08-03 19:24:01:871] - Perft 12 62854969236701747 105620.1ms 595104.456 GNodes/s
[2026-08-03 19:24:01:871] - target perft(12): 105.620 s (exact ladder: +55.045 s wall / 27.870 s kernel for plies 8..11 - 4 from the primary frontier, 0 rebuilt)

Code: Select all

[2026-08-03 19:29:00:315] - Kernel execution time: 105048.200460 milliseconds
[2026-08-03 19:29:00:315] - Kernel finished
[2026-08-03 19:29:00:315] - Total 1 20
[2026-08-03 19:29:00:315] - Total 2 400
[2026-08-03 19:29:00:315] - Total 3 8902
[2026-08-03 19:29:00:315] - Total 4 197281
[2026-08-03 19:29:00:315] - Total 5 4865609
[2026-08-03 19:29:00:315] - Total 6 119060324
[2026-08-03 19:29:00:315] - Total 7 3195901860
[2026-08-03 19:29:00:315] - Total 8..11 suppressed (GPU counting-pass partial sums)
[2026-08-03 19:29:00:497] - Perft 12 62854969236701747 105048.2ms 598344.083 GNodes/s

Code: Select all

[2026-08-03 19:08:54:081] - Kernel execution time: 1519925.703557 milliseconds
[2026-08-03 19:08:54:081] - Kernel finished
[2026-08-03 19:08:54:081] - Total 1 20
[2026-08-03 19:08:54:081] - Total 2 400
[2026-08-03 19:08:54:081] - Total 3 8902
[2026-08-03 19:08:54:081] - Total 4 197281
[2026-08-03 19:08:54:081] - Total 5 4865609
[2026-08-03 19:08:54:081] - Total 6 119060324
[2026-08-03 19:08:54:081] - Total 7 3195901860
[2026-08-03 19:08:54:081] - Total 8 84998978956
[2026-08-03 19:08:54:081] - Total 9 2439530234167
[2026-08-03 19:08:54:081] - Total 10 69352859712417
[2026-08-03 19:08:54:081] - Total 11 2097651003696806
[2026-08-03 19:08:54:081] - Total 12 62854969236701747
[2026-08-03 19:08:54:081] - Perft 13 1981066775000396239 1519925.7ms 1303397.113 GNodes/s
[2026-08-03 19:08:54:081] - target perft(13): 1519.926 s (exact ladder: +631.443 s wall / 388.593 s kernel for plies 9..12 - 4 from the primary frontier, 0 rebuilt)
How to read above: It takes 1520s for the engine to know P13. It takes an additional 630s for 1 of the 8 gpus to do P12, which is not optimized. P12 as ist own campaign from scratch takes 105s.

Code: Select all

[2026-08-03 19:55:25:436] - Kernel execution time: 1520399.494354 milliseconds
[2026-08-03 19:55:25:437] - Kernel finished
[2026-08-03 19:55:25:437] - Total 1 20
[2026-08-03 19:55:25:437] - Total 2 400
[2026-08-03 19:55:25:437] - Total 3 8902
[2026-08-03 19:55:25:437] - Total 4 197281
[2026-08-03 19:55:25:437] - Total 5 4865609
[2026-08-03 19:55:25:437] - Total 6 119060324
[2026-08-03 19:55:25:437] - Total 7 3195901860
[2026-08-03 19:55:25:437] - Total 8 84998978956
[2026-08-03 19:55:25:437] - Total 9..12 suppressed (GPU counting-pass partial sums)
[2026-08-03 19:55:27:306] - Perft 13 1981066775000396239 1520399.5ms 1302990.945 GNodes/s
[2026-08-03 19:55:27:306] - target perft(13): 1520.399 s
Above is the default case. A P13 campaign will calc P13 as fast as it can accross all the gpus on that machine. In this case ~25min.
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer
dangi12012
Posts: 1071
Joined: Tue Apr 28, 2020 10:03 pm
Full name: Daniel Infuehr

Re: The Era of Teranode per second movegeneration is here - Gigantua Warp

Post by dangi12012 »

high end machine log - P13 - 16 x 5090

Code: Select all

[2026-08-07 19:26:12:255] - READY
[2026-08-07 19:26:12:255] - rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
[2026-08-07 19:26:12:255] - ZOBRIST=DEFAULT
[2026-08-07 19:26:12:255] - [CONFIG] FEN: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
[2026-08-07 19:26:12:255] - [CONFIG] DEPTH: 13
[2026-08-07 19:26:12:255] - [CONFIG] GPU DEPTH: 5
[2026-08-07 19:26:12:256] - [CONFIG] CPU: 192 cores source=affinity (hw 384)
[2026-08-07 19:26:12:256] - [CONFIG] RAM: 778.6 GB (777.8 GB usable) source=cgroup
[2026-08-07 19:26:12:373] - [CONFIG] VRAM: gpu0 33.7 GB (33.1 GB free)
[2026-08-07 19:26:12:481] - [CONFIG] VRAM: gpu1 33.7 GB (33.1 GB free)
[2026-08-07 19:26:12:598] - [CONFIG] VRAM: gpu2 33.7 GB (33.1 GB free)
[2026-08-07 19:26:12:711] - [CONFIG] VRAM: gpu3 33.7 GB (33.1 GB free)
[2026-08-07 19:26:12:824] - [CONFIG] VRAM: gpu4 33.7 GB (33.1 GB free)
[2026-08-07 19:26:12:937] - [CONFIG] VRAM: gpu5 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:053] - [CONFIG] VRAM: gpu6 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:170] - [CONFIG] VRAM: gpu7 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:289] - [CONFIG] VRAM: gpu8 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:411] - [CONFIG] VRAM: gpu9 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:557] - [CONFIG] VRAM: gpu10 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:701] - [CONFIG] VRAM: gpu11 33.7 GB (33.1 GB free)
[2026-08-07 19:26:13:911] - [CONFIG] VRAM: gpu12 33.7 GB (33.1 GB free)
[2026-08-07 19:26:14:039] - [CONFIG] VRAM: gpu13 33.7 GB (33.1 GB free)
[2026-08-07 19:26:14:169] - [CONFIG] VRAM: gpu14 33.7 GB (33.1 GB free)
[2026-08-07 19:26:14:300] - [CONFIG] VRAM: gpu15 33.7 GB (33.1 GB free)
[2026-08-07 19:26:14:300] - [CONFIG] RUN: frontierPly=9 endDepth=5 gpus=16 stream=off(default) exact=off tt=on mmap=(auto) zobrist=DEFAULT
[2026-08-07 19:26:14:300] - [membudget] COMPRESS cap raised to 615.4 GB from the 56 GB default (usable host RAM 724.0 GB; pin with COMPRESS_MEM_CAP_GB)
  ply 8 weights   gathering 988192872 boards (slot-indexed)
[2026-08-07 19:26:48:161] - [mmap-spill] dir /tmp fs=overlay off-cap (via statfs) total 32768 MB free 32589 MB vs cap 742572 MB -> spill RELIEVES memory pressure; volume is SMALLER than the cap
[2026-08-07 19:26:52:127] - frontier-compress: depth 8, 988192872 unique roots in 37.827s
[2026-08-07 19:26:52:127] - Perft 1 20 37827.2ms 0.000 GNodes/s
[2026-08-07 19:26:52:127] - Perft 2 400 37827.2ms 0.000 GNodes/s
[2026-08-07 19:26:52:127] - Perft 3 8902 37827.2ms 0.000 GNodes/s
[2026-08-07 19:26:52:127] - Perft 4 197281 37827.2ms 0.000 GNodes/s
[2026-08-07 19:26:52:127] - Perft 5 4865609 37827.2ms 0.000 GNodes/s
[2026-08-07 19:26:52:127] - Perft 6 119060324 37827.2ms 0.003 GNodes/s
[2026-08-07 19:26:52:127] - Perft 7 3195901860 37827.2ms 0.084 GNodes/s
[2026-08-07 19:26:52:127] - Perft 8 84998978956 37827.2ms 2.247 GNodes/s
[2026-08-07 19:26:52:329] - [TT] sizing from the tightest of 16 counting device(s): device 1 with 31596 MB free
[2026-08-07 19:26:52:329] - [TT] tier sizing: 26/29/30 (25.5 GB tables) scheme=mask
[2026-08-07 19:26:52:329] - [TT] counting VRAM: 27.38 GB tables + 4.29 GB reserved of 33.67 GB card = 83% in use (CHESS_TT_HEADROOM_MB to move it)
[2026-08-07 19:26:52:127] - Kernel execution time: 37827.234926 milliseconds
[2026-08-07 19:26:52:127] - weighted frontier: depth 8, 988192872 unique roots (perft(8) = 84998978956)
[2026-08-07 19:26:58:521] - frontier staging: roots 2MB transparent huge pages, weights 2MB transparent huge pages
[2026-08-07 19:26:58:912] - multi-GPU: 16 devices, 988192872 roots, chunk 7720256
[2026-08-07 19:26:58:913] - [gossip] OFF (default, pending re-earned dual-GPU A/B verdicts; CHESS_TT_GOSSIP=1 to enable)
[2026-08-07 19:27:25:968] -   counting... 34.7% 247048192/988192872 roots 27.1s elapsed 1258949.4 GN/s root 5496.3 ETA  50.9s (gpu2 done chunk at 0)
[2026-08-07 19:27:27:961] -   counting... 36.1% 254768448/988192872 roots 29.0s elapsed 2117378.3 GN/s root 10658.4 ETA  51.3s (gpu6 done chunk at 7720256)
[2026-08-07 19:27:28:097] -   counting... 37.4% 262488704/988192872 roots 29.2s elapsed 2918174.6 GN/s root 15841.5 ETA  48.9s (gpu8 done chunk at 15440512)
[2026-08-07 19:27:28:484] -   counting... 38.6% 270208960/988192872 roots 29.6s elapsed 3766383.0 GN/s root 21095.2 ETA  47.1s (gpu14 done chunk at 84922816)
[2026-08-07 19:27:28:574] -   counting... 39.5% 277929216/988192872 roots 29.7s elapsed 4572518.5 GN/s root 25956.8 ETA  45.5s (gpu13 done chunk at 23160768)
[2026-08-07 19:27:29:418] -   counting... 40.2% 285649472/988192872 roots 30.5s elapsed 5059657.6 GN/s root 30567.8 ETA  45.3s (gpu11 done chunk at 100363328)
[2026-08-07 19:27:30:209] -   counting... 40.8% 293369728/988192872 roots 31.3s elapsed 5706112.5 GN/s root 35036.8 ETA  45.3s (gpu0 done chunk at 30881024)
[2026-08-07 19:27:30:222] -   counting... 42.3% 301089984/988192872 roots 31.3s elapsed 6413353.6 GN/s root 39597.6 ETA  42.7s (gpu9 done chunk at 54041792)
[2026-08-07 19:27:30:899] -   counting... 43.7% 308810240/988192872 roots 32.0s elapsed 6980178.1 GN/s root 44460.3 ETA  41.3s (gpu3 done chunk at 92643072)
[2026-08-07 19:27:31:277] -   counting... 45.0% 316530496/988192872 roots 32.4s elapsed 7508866.1 GN/s root 49236.7 ETA  39.6s (gpu1 done chunk at 38601280)
[2026-08-07 19:27:31:308] -   counting... 46.0% 324250752/988192872 roots 32.4s elapsed 8142974.2 GN/s root 55139.2 ETA  38.0s (gpu4 done chunk at 115803840)
[2026-08-07 19:27:31:738] -   counting... 46.8% 331971008/988192872 roots 32.8s elapsed 8815445.0 GN/s root 60206.0 ETA  37.4s (gpu10 done chunk at 108083584)
[2026-08-07 19:27:32:300] -   counting... 47.4% 339691264/988192872 roots 33.4s elapsed 9117083.7 GN/s root 64355.2 ETA  37.1s (gpu5 done chunk at 46321536)
[2026-08-07 19:27:33:903] -   counting... 48.8% 347411520/988192872 roots 35.0s elapsed 9304318.6 GN/s root 66623.2 ETA  36.7s (gpu7 done chunk at 61762048)
[2026-08-07 19:27:35:299] -   counting... 50.0% 355131776/988192872 roots 36.4s elapsed 9362272.5 GN/s root 69021.6 ETA  36.4s (gpu15 done chunk at 77202560)
[2026-08-07 19:27:36:286] -   counting... 51.1% 362852032/988192872 roots 37.4s elapsed 9641143.2 GN/s root 72331.3 ETA  35.8s (gpu12 done chunk at 69482304)
[2026-08-07 19:27:46:530] -   counting... 52.2% 370572288/988192872 roots 47.6s elapsed 7955713.1 GN/s root 59921.1 ETA  43.7s (gpu9 done chunk at 177565888)
[2026-08-07 19:27:47:790] -   counting... 53.0% 378292544/988192872 roots 48.9s elapsed 8180386.9 GN/s root 62817.2 ETA  43.4s (gpu2 done chunk at 131244352)
[2026-08-07 19:27:47:953] -   counting... 53.8% 386012800/988192872 roots 49.0s elapsed 8504383.7 GN/s root 65604.4 ETA  42.1s (gpu14 done chunk at 223887424)
[2026-08-07 19:27:48:017] -   counting... 54.6% 393733056/988192872 roots 49.1s elapsed 8826690.9 GN/s root 68627.3 ETA  40.9s (gpu11 done chunk at 169845632)
[2026-08-07 19:27:48:404] -   counting... 55.1% 401453312/988192872 roots 49.5s elapsed 9131540.7 GN/s root 71960.7 ETA  40.3s (gpu8 done chunk at 123524096)
[2026-08-07 19:27:48:448] -   counting... 56.3% 409173568/988192872 roots 49.5s elapsed 9567820.4 GN/s root 75146.2 ETA  38.4s (gpu3 done chunk at 193006400)
[2026-08-07 19:27:49:671] -   counting... 57.4% 416893824/988192872 roots 50.8s elapsed 9679527.5 GN/s root 76980.0 ETA  37.7s (gpu13 done chunk at 208446912)
[2026-08-07 19:27:50:135] -   counting... 58.5% 424614080/988192872 roots 51.2s elapsed 9979280.9 GN/s root 79718.9 ETA  36.4s (gpu6 done chunk at 138964608)
[2026-08-07 19:27:51:158] -   counting... 59.5% 432334336/988192872 roots 52.2s elapsed 10148827.7 GN/s root 81463.2 ETA  35.5s (gpu10 done chunk at 200726656)
[2026-08-07 19:27:52:780] -   counting... 60.4% 440054592/988192872 roots 53.9s elapsed 10278749.9 GN/s root 81950.0 ETA  35.4s (gpu15 done chunk at 185286144)
[2026-08-07 19:27:53:747] -   counting... 61.1% 447774848/988192872 roots 54.8s elapsed 10359331.4 GN/s root 83775.8 ETA  34.9s (gpu0 done chunk at 231607680)
[2026-08-07 19:27:54:829] -   counting... 61.9% 455495104/988192872 roots 55.9s elapsed 10532621.4 GN/s root 85181.2 ETA  34.5s (gpu7 done chunk at 146684864)
[2026-08-07 19:27:55:477] -   counting... 62.6% 463215360/988192872 roots 56.6s elapsed 10657521.0 GN/s root 87411.6 ETA  33.7s (gpu5 done chunk at 154405120)
[2026-08-07 19:27:55:697] -   counting... 63.1% 470935616/988192872 roots 56.8s elapsed 10762207.9 GN/s root 90126.4 ETA  33.2s (gpu1 done chunk at 239327936)
[2026-08-07 19:27:56:059] -   counting... 63.8% 478655872/988192872 roots 57.1s elapsed 10986798.5 GN/s root 93004.5 ETA  32.5s (gpu4 done chunk at 216167168)
[2026-08-07 19:28:03:387] -   counting... 64.8% 486376128/988192872 roots 64.5s elapsed 9909212.9 GN/s root 85706.9 ETA  35.1s (gpu12 done chunk at 162125376)
[2026-08-07 19:28:03:626] -   counting... 65.7% 494096384/988192872 roots 64.7s elapsed 10210638.0 GN/s root 87776.4 ETA  33.8s (gpu9 done chunk at 301089984)
[2026-08-07 19:28:04:621] -   counting... 66.5% 501816640/988192872 roots 65.7s elapsed 10417790.1 GN/s root 88761.4 ETA  33.1s (gpu2 done chunk at 247048192)
[2026-08-07 19:28:06:790] -   counting... 67.3% 509536896/988192872 roots 67.9s elapsed 10398856.2 GN/s root 88208.1 ETA  32.9s (gpu3 done chunk at 308810240)
[2026-08-07 19:28:08:031] -   counting... 67.9% 517257152/988192872 roots 69.1s elapsed 10516940.0 GN/s root 89016.1 ETA  32.6s (gpu8 done chunk at 262488704)
[2026-08-07 19:28:09:744] -   counting... 68.4% 524977408/988192872 roots 70.8s elapsed 10510018.4 GN/s root 89472.2 ETA  32.8s (gpu14 done chunk at 270208960)
[2026-08-07 19:28:09:891] -   counting... 68.9% 532697664/988192872 roots 71.0s elapsed 10812946.4 GN/s root 91348.0 ETA  32.1s (gpu0 done chunk at 293369728)
[2026-08-07 19:28:10:452] -   counting... 69.6% 540417920/988192872 roots 71.5s elapsed 10868196.3 GN/s root 92804.5 ETA  31.2s (gpu11 done chunk at 285649472)
[2026-08-07 19:28:10:755] -   counting... 70.2% 548138176/988192872 roots 71.8s elapsed 11124729.7 GN/s root 94738.6 ETA  30.6s (gpu6 done chunk at 254768448)
[2026-08-07 19:28:12:047] -   counting... 70.6% 555858432/988192872 roots 73.1s elapsed 11132599.7 GN/s root 95438.9 ETA  30.5s (gpu13 done chunk at 277929216)
[2026-08-07 19:28:13:330] -   counting... 71.0% 563578688/988192872 roots 74.4s elapsed 11281351.5 GN/s root 96022.7 ETA  30.5s (gpu5 done chunk at 339691264)
[2026-08-07 19:28:13:981] -   counting... 71.7% 571298944/988192872 roots 75.1s elapsed 11317579.2 GN/s root 97314.5 ETA  29.7s (gpu10 done chunk at 331971008)
[2026-08-07 19:28:14:151] -   counting... 72.4% 579019200/988192872 roots 75.2s elapsed 11562175.2 GN/s root 99359.9 ETA  28.6s (gpu15 done chunk at 355131776)
[2026-08-07 19:28:15:514] -   counting... 73.2% 586739456/988192872 roots 76.6s elapsed 11595368.1 GN/s root 99746.7 ETA  28.0s (gpu1 done chunk at 316530496)
[2026-08-07 19:28:15:700] -   counting... 73.9% 594459712/988192872 roots 76.8s elapsed 11838793.5 GN/s root 101632.2 ETA  27.1s (gpu7 done chunk at 347411520)
[2026-08-07 19:28:19:014] -   counting... 74.5% 602179968/988192872 roots 80.1s elapsed 11528072.2 GN/s root 99719.3 ETA  27.4s (gpu4 done chunk at 324250752)
[2026-08-07 19:28:24:572] -   counting... 75.1% 609900224/988192872 roots 85.7s elapsed 11002730.4 GN/s root 95222.0 ETA  28.4s (gpu12 done chunk at 362852032)
[2026-08-07 19:28:26:297] -   counting... 75.6% 617620480/988192872 roots 87.4s elapsed 10966535.6 GN/s root 95365.2 ETA  28.2s (gpu9 done chunk at 370572288)
[2026-08-07 19:28:26:755] -   counting... 76.3% 625340736/988192872 roots 87.8s elapsed 11172356.7 GN/s root 96885.0 ETA  27.3s (gpu8 done chunk at 401453312)
[2026-08-07 19:28:28:289] -   counting... 76.6% 633060992/988192872 roots 89.4s elapsed 11209364.9 GN/s root 97244.0 ETA  27.3s (gpu3 done chunk at 409173568)
[2026-08-07 19:28:28:945] -   counting... 77.4% 640781248/988192872 roots 90.0s elapsed 11293288.2 GN/s root 98508.1 ETA  26.3s (gpu2 done chunk at 378292544)
[2026-08-07 19:28:30:725] -   counting... 78.0% 648501504/988192872 roots 91.8s elapsed 11293408.3 GN/s root 98525.4 ETA  26.0s (gpu6 done chunk at 424614080)
[2026-08-07 19:28:33:586] -   counting... 78.4% 656221760/988192872 roots 94.7s elapsed 11174082.1 GN/s root 97419.6 ETA  26.1s (gpu13 done chunk at 416893824)
[2026-08-07 19:28:33:854] -   counting... 78.7% 663942016/988192872 roots 94.9s elapsed 11287821.2 GN/s root 98874.2 ETA  25.7s (gpu14 done chunk at 386012800)
[2026-08-07 19:28:36:721] -   counting... 78.9% 671662272/988192872 roots 97.8s elapsed 11117937.4 GN/s root 97919.4 ETA  26.1s (gpu0 done chunk at 447774848)
[2026-08-07 19:28:37:258] -   counting... 79.9% 679382528/988192872 roots 98.3s elapsed 11182394.0 GN/s root 99035.2 ETA  24.8s (gpu1 done chunk at 470935616)
[2026-08-07 19:28:37:406] -   counting... 80.7% 687102784/988192872 roots 98.5s elapsed 11343090.9 GN/s root 100881.6 ETA  23.5s (gpu10 done chunk at 432334336)
[2026-08-07 19:28:37:437] -   counting... 81.5% 694823040/988192872 roots 98.5s elapsed 11465095.7 GN/s root 102800.5 ETA  22.3s (gpu11 done chunk at 393733056)
[2026-08-07 19:28:39:433] -   counting... 82.3% 702543296/988192872 roots 100.5s elapsed 11390634.1 GN/s root 102830.2 ETA  21.6s (gpu15 done chunk at 440054592)
[2026-08-07 19:28:40:804] -   counting... 83.2% 710263552/988192872 roots 101.9s elapsed 11386540.3 GN/s root 103282.4 ETA  20.6s (gpu7 done chunk at 455495104)
[2026-08-07 19:28:42:108] -   counting... 83.8% 717983808/988192872 roots 103.2s elapsed 11434284.0 GN/s root 103744.5 ETA  20.0s (gpu4 done chunk at 478655872)
[2026-08-07 19:28:44:608] -   counting... 84.4% 725704064/988192872 roots 105.7s elapsed 11265449.3 GN/s root 103358.9 ETA  19.5s (gpu5 done chunk at 463215360)
[2026-08-07 19:28:49:857] -   counting... 85.1% 733424320/988192872 roots 110.9s elapsed 10905981.2 GN/s root 100184.0 ETA  19.5s (gpu12 done chunk at 486376128)
[2026-08-07 19:28:50:789] -   counting... 86.0% 741144576/988192872 roots 111.9s elapsed 10965954.0 GN/s root 100946.7 ETA  18.3s (gpu9 done chunk at 494096384)
[2026-08-07 19:28:52:582] -   counting... 86.5% 748864832/988192872 roots 113.7s elapsed 10928561.7 GN/s root 100887.0 ETA  17.7s (gpu2 done chunk at 501816640)
[2026-08-07 19:28:54:060] -   counting... 87.3% 756343833/988192872 roots 115.1s elapsed 10903482.4 GN/s root 101328.7 ETA  16.7s (gpu3 done chunk at 509536896)
[2026-08-07 19:28:55:984] -   counting... 88.1% 763589115/988192872 roots 117.1s elapsed 10816279.7 GN/s root 101576.7 ETA  15.8s (gpu8 done chunk at 517257152)
[2026-08-07 19:29:02:537] -   counting... 88.6% 770607982/988192872 roots 123.6s elapsed 10332952.3 GN/s root 97780.4 ETA  15.9s (gpu14 done chunk at 524977408)
[2026-08-07 19:29:02:734] -   counting... 89.2% 777407509/988192872 roots 123.8s elapsed 10451062.7 GN/s root 99196.6 ETA  15.0s (gpu0 done chunk at 532697664)
[2026-08-07 19:29:03:290] -   counting... 89.6% 783994551/988192872 roots 124.4s elapsed 10466342.0 GN/s root 100287.9 ETA  14.5s (gpu13 done chunk at 555858432)
[2026-08-07 19:29:03:357] -   counting... 90.0% 790375748/988192872 roots 124.4s elapsed 10550512.4 GN/s root 102136.9 ETA  13.8s (gpu6 done chunk at 548138176)
[2026-08-07 19:29:05:147] -   counting... 90.7% 796557533/988192872 roots 126.2s elapsed 10546739.7 GN/s root 102472.2 ETA  13.0s (gpu10 done chunk at 571298944)
[2026-08-07 19:29:05:715] -   counting... 91.2% 802546137/988192872 roots 126.8s elapsed 10593598.8 GN/s root 103663.5 ETA  12.2s (gpu11 done chunk at 540417920)
[2026-08-07 19:29:08:146] -   counting... 91.6% 808347597/988192872 roots 129.2s elapsed 10531526.4 GN/s root 103493.8 ETA  11.8s (gpu1 done chunk at 586739456)
[2026-08-07 19:29:09:061] -   counting... 91.9% 813967761/988192872 roots 130.1s elapsed 10594800.0 GN/s root 104523.2 ETA  11.4s (gpu5 done chunk at 563578688)
[2026-08-07 19:29:09:706] -   counting... 92.3% 819412295/988192872 roots 130.8s elapsed 10687499.9 GN/s root 105793.8 ETA  10.9s (gpu15 done chunk at 579019200)
[2026-08-07 19:29:09:856] -   counting... 92.8% 824686688/988192872 roots 130.9s elapsed 10787432.7 GN/s root 107517.4 ETA  10.2s (gpu7 done chunk at 594459712)
[2026-08-07 19:29:13:103] -   counting... 93.2% 829796256/988192872 roots 134.2s elapsed 10642063.3 GN/s root 106809.0 ETA   9.8s (gpu4 done chunk at 602179968)
[2026-08-07 19:29:17:621] -   counting... 93.5% 834746150/988192872 roots 138.7s elapsed 10388017.9 GN/s root 104996.8 ETA   9.7s (gpu12 done chunk at 609900224)
[2026-08-07 19:29:23:111] -   counting... 93.8% 839541360/988192872 roots 144.2s elapsed 10079152.7 GN/s root 101980.8 ETA   9.5s (gpu0 done chunk at 671662272)
[2026-08-07 19:29:23:966] -   counting... 94.1% 844186719/988192872 roots 145.1s elapsed 10131684.8 GN/s root 103002.1 ETA   9.1s (gpu9 done chunk at 617620480)
[2026-08-07 19:29:24:885] -   counting... 94.3% 848686911/988192872 roots 146.0s elapsed 10165651.6 GN/s root 103901.7 ETA   8.9s (gpu2 done chunk at 640781248)
[2026-08-07 19:29:28:181] -   counting... 94.5% 853046472/988192872 roots 149.3s elapsed 10022144.7 GN/s root 102493.7 ETA   8.6s (gpu10 done chunk at 687102784)
[2026-08-07 19:29:29:836] -   counting... 94.8% 857269797/988192872 roots 150.9s elapsed 9997920.0 GN/s root 102364.6 ETA   8.3s (gpu11 done chunk at 694823040)
[2026-08-07 19:29:30:652] -   counting... 95.0% 861361143/988192872 roots 151.7s elapsed 10032087.7 GN/s root 102752.9 ETA   8.0s (gpu1 done chunk at 679382528)
[2026-08-07 19:29:31:423] -   counting... 95.2% 865324634/988192872 roots 152.5s elapsed 10063849.7 GN/s root 104347.4 ETA   7.6s (gpu8 done chunk at 625340736)
[2026-08-07 19:29:31:563] -   counting... 95.5% 869164266/988192872 roots 152.7s elapsed 10171878.7 GN/s root 105839.1 ETA   7.2s (gpu3 done chunk at 633060992)
[2026-08-07 19:29:35:701] -   counting... 95.7% 872883909/988192872 roots 156.8s elapsed 10017592.7 GN/s root 104170.7 ETA   7.1s (gpu15 done chunk at 702543296)
[2026-08-07 19:29:35:819] -   counting... 95.8% 876487314/988192872 roots 156.9s elapsed 10080266.0 GN/s root 105552.4 ETA   6.8s (gpu6 done chunk at 648501504)
[2026-08-07 19:29:39:129] -   counting... 96.0% 879978112/988192872 roots 160.2s elapsed 9950602.6 GN/s root 104556.9 ETA   6.7s (gpu5 done chunk at 725704064)
[2026-08-07 19:29:40:653] -   counting... 96.1% 883359823/988192872 roots 161.7s elapsed 9935015.3 GN/s root 104733.4 ETA   6.6s (gpu7 done chunk at 710263552)
[2026-08-07 19:29:41:500] -   counting... 96.3% 886635855/988192872 roots 162.6s elapsed 9922424.7 GN/s root 105857.2 ETA   6.3s (gpu14 done chunk at 663942016)
[2026-08-07 19:29:41:602] -   counting... 96.4% 889809511/988192872 roots 162.7s elapsed 9999428.9 GN/s root 106894.8 ETA   6.0s (gpu4 done chunk at 717983808)
[2026-08-07 19:29:43:733] -   counting... 96.6% 892883991/988192872 roots 164.8s elapsed 9969134.1 GN/s root 106540.4 ETA   5.8s (gpu12 done chunk at 733424320)
[2026-08-07 19:29:45:766] -   counting... 96.7% 895862393/988192872 roots 166.9s elapsed 9904671.1 GN/s root 106938.0 ETA   5.6s (gpu13 done chunk at 656221760)
[2026-08-07 19:29:47:735] -   counting... 96.9% 898747720/988192872 roots 168.8s elapsed 9840145.0 GN/s root 106741.4 ETA   5.4s (gpu0 done chunk at 777407509)
[2026-08-07 19:29:48:434] -   counting... 97.0% 901542881/988192872 roots 169.5s elapsed 9886996.8 GN/s root 107219.4 ETA   5.3s (gpu2 done chunk at 748864832)
[2026-08-07 19:29:51:059] -   counting... 97.1% 904250693/988192872 roots 172.1s elapsed 9804055.5 GN/s root 106402.2 ETA   5.2s (gpu10 done chunk at 796557533)
[2026-08-07 19:29:53:153] -   counting... 97.2% 906873886/988192872 roots 174.2s elapsed 9743670.5 GN/s root 105877.5 ETA   5.1s (gpu15 done chunk at 819412295)
[2026-08-07 19:29:53:272] -   counting... 97.2% 909415104/988192872 roots 174.4s elapsed 9821160.3 GN/s root 106756.5 ETA   5.0s (gpu3 done chunk at 756343833)
[2026-08-07 19:29:54:497] -   counting... 97.3% 911876909/988192872 roots 175.6s elapsed 9800405.7 GN/s root 106861.6 ETA   4.9s (gpu11 done chunk at 802546137)
[2026-08-07 19:29:54:546] -   counting... 97.3% 914261782/988192872 roots 175.6s elapsed 9857194.7 GN/s root 107815.4 ETA   4.8s (gpu9 done chunk at 741144576)
[2026-08-07 19:29:55:513] -   counting... 97.4% 916572128/988192872 roots 176.6s elapsed 9839113.1 GN/s root 107935.6 ETA   4.7s (gpu1 done chunk at 808347597)
[2026-08-07 19:29:57:048] -   counting... 97.5% 918810276/988192872 roots 178.1s elapsed 9826363.1 GN/s root 107803.0 ETA   4.5s (gpu6 done chunk at 790375748)
[2026-08-07 19:29:58:083] -   counting... 97.7% 920978482/988192872 roots 179.2s elapsed 9833676.1 GN/s root 108232.7 ETA   4.3s (gpu8 done chunk at 763589115)
[2026-08-07 19:29:59:822] -   counting... 97.8% 923078931/988192872 roots 180.9s elapsed 9784482.9 GN/s root 107910.3 ETA   4.2s (gpu5 done chunk at 813967761)
[2026-08-07 19:29:59:859] -   counting... 97.8% 925113741/988192872 roots 180.9s elapsed 9832987.1 GN/s root 108632.9 ETA   4.0s (gpu7 done chunk at 824686688)
[2026-08-07 19:30:02:649] -   counting... 97.9% 927084963/988192872 roots 183.7s elapsed 9723412.3 GN/s root 107795.6 ETA   3.9s (gpu4 done chunk at 829796256)
[2026-08-07 19:30:03:737] -   counting... 98.0% 928994585/988192872 roots 184.8s elapsed 9707377.7 GN/s root 107827.0 ETA   3.8s (gpu12 done chunk at 834746150)
[2026-08-07 19:30:04:296] -   counting... 98.1% 930844531/988192872 roots 185.4s elapsed 9745772.9 GN/s root 108312.1 ETA   3.6s (gpu14 done chunk at 770607982)
[2026-08-07 19:30:06:328] -   counting... 98.1% 932636666/988192872 roots 187.4s elapsed 9670594.6 GN/s root 107727.8 ETA   3.6s (gpu2 done chunk at 848686911)
[2026-08-07 19:30:09:123] -   counting... 98.2% 934372797/988192872 roots 190.2s elapsed 9563999.9 GN/s root 106813.7 ETA   3.5s (gpu0 done chunk at 839541360)
[2026-08-07 19:30:09:900] -   counting... 98.3% 936054674/988192872 roots 191.0s elapsed 9577751.9 GN/s root 107222.5 ETA   3.4s (gpu13 done chunk at 783994551)
[2026-08-07 19:30:10:929] -   counting... 98.3% 937683992/988192872 roots 192.0s elapsed 9564854.7 GN/s root 107329.0 ETA   3.3s (gpu10 done chunk at 853046472)
[2026-08-07 19:30:12:371] -   counting... 98.4% 939262394/988192872 roots 193.5s elapsed 9518058.8 GN/s root 107160.0 ETA   3.2s (gpu3 done chunk at 869164266)
[2026-08-07 19:30:12:829] -   counting... 98.4% 940791471/988192872 roots 193.9s elapsed 9521696.7 GN/s root 107541.6 ETA   3.1s (gpu15 done chunk at 872883909)
[2026-08-07 19:30:13:078] -   counting... 98.5% 942272764/988192872 roots 194.2s elapsed 9539819.0 GN/s root 108035.5 ETA   3.1s (gpu11 done chunk at 857269797)
[2026-08-07 19:30:14:522] -   counting... 98.5% 943707767/988192872 roots 195.6s elapsed 9505903.5 GN/s root 107888.3 ETA   3.0s (gpu1 done chunk at 861361143)
[2026-08-07 19:30:16:455] -   counting... 98.5% 945097926/988192872 roots 197.5s elapsed 9434035.3 GN/s root 107306.6 ETA   3.0s (gpu4 done chunk at 889809511)
[2026-08-07 19:30:17:067] -   counting... 98.6% 946444643/988192872 roots 198.2s elapsed 9428511.8 GN/s root 107402.0 ETA   2.9s (gpu14 done chunk at 886635855)
[2026-08-07 19:30:17:446] -   counting... 98.6% 947749275/988192872 roots 198.5s elapsed 9430761.5 GN/s root 107831.5 ETA   2.7s (gpu6 done chunk at 876487314)
[2026-08-07 19:30:17:693] -   counting... 98.7% 949013137/988192872 roots 198.8s elapsed 9444995.2 GN/s root 108464.1 ETA   2.6s (gpu5 done chunk at 879978112)
[2026-08-07 19:30:17:967] -   counting... 98.8% 950237503/988192872 roots 199.1s elapsed 9451909.0 GN/s root 108790.3 ETA   2.5s (gpu12 done chunk at 892883991)
[2026-08-07 19:30:18:265] -   counting... 98.8% 951423608/988192872 roots 199.4s elapsed 9460780.0 GN/s root 109341.3 ETA   2.4s (gpu9 done chunk at 844186719)
[2026-08-07 19:30:18:523] -   counting... 98.9% 952572647/988192872 roots 199.6s elapsed 9488237.6 GN/s root 109838.8 ETA   2.3s (gpu8 done chunk at 865324634)
[2026-08-07 19:30:18:668] -   counting... 98.9% 953685779/988192872 roots 199.8s elapsed 9506291.6 GN/s root 110350.6 ETA   2.1s (gpu7 done chunk at 883359823)
[2026-08-07 19:30:20:941] -   counting... 99.0% 954764125/988192872 roots 202.0s elapsed 9411151.3 GN/s root 109572.6 ETA   2.1s (gpu2 done chunk at 901542881)
[2026-08-07 19:30:23:898] -   counting... 99.0% 955808773/988192872 roots 205.0s elapsed 9287467.3 GN/s root 108313.7 ETA   2.1s (gpu1 done chunk at 916572128)
[2026-08-07 19:30:24:041] -   counting... 99.0% 956820776/988192872 roots 205.1s elapsed 9296102.7 GN/s root 108719.3 ETA   2.0s (gpu0 done chunk at 898747720)
[2026-08-07 19:30:25:502] -   counting... 99.1% 957801154/988192872 roots 206.6s elapsed 9254694.8 GN/s root 108427.4 ETA   2.0s (gpu13 done chunk at 895862393)
[2026-08-07 19:30:25:957] -   counting... 99.1% 958750895/988192872 roots 207.0s elapsed 9241108.2 GN/s root 108465.3 ETA   1.9s (gpu14 done chunk at 930844531)
[2026-08-07 19:30:26:267] -   counting... 99.1% 959670956/988192872 roots 207.4s elapsed 9237267.3 GN/s root 108567.4 ETA   1.8s (gpu4 done chunk at 927084963)
[2026-08-07 19:30:26:440] -   counting... 99.2% 960562265/988192872 roots 207.5s elapsed 9236475.1 GN/s root 108893.9 ETA   1.8s (gpu15 done chunk at 906873886)
[2026-08-07 19:30:26:818] -   counting... 99.2% 961425721/988192872 roots 207.9s elapsed 9227105.3 GN/s root 109079.0 ETA   1.7s (gpu11 done chunk at 911876909)
[2026-08-07 19:30:27:337] -   counting... 99.2% 962262194/988192872 roots 208.4s elapsed 9218895.3 GN/s root 109086.4 ETA   1.7s (gpu6 done chunk at 918810276)
[2026-08-07 19:30:27:730] -   counting... 99.2% 963072527/988192872 roots 208.8s elapsed 9211897.0 GN/s root 109141.8 ETA   1.6s (gpu12 done chunk at 928994585)
[2026-08-07 19:30:27:992] -   counting... 99.2% 963857537/988192872 roots 209.1s elapsed 9209440.9 GN/s root 109278.6 ETA   1.6s (gpu5 done chunk at 923078931)
[2026-08-07 19:30:28:066] -   counting... 99.2% 964618016/988192872 roots 209.2s elapsed 9223959.0 GN/s root 109782.3 ETA   1.6s (gpu10 done chunk at 904250693)
[2026-08-07 19:30:28:773] -   counting... 99.3% 965354730/988192872 roots 209.9s elapsed 9203770.2 GN/s root 109707.0 ETA   1.5s (gpu9 done chunk at 914261782)
[2026-08-07 19:30:28:876] -   counting... 99.3% 966068421/988192872 roots 210.0s elapsed 9207095.1 GN/s root 109879.2 ETA   1.5s (gpu2 done chunk at 932636666)
[2026-08-07 19:30:29:193] -   counting... 99.3% 966759810/988192872 roots 210.3s elapsed 9205483.8 GN/s root 110038.4 ETA   1.5s (gpu8 done chunk at 920978482)
[2026-08-07 19:30:29:484] -   counting... 99.3% 967429593/988192872 roots 210.6s elapsed 9203392.6 GN/s root 110203.1 ETA   1.5s (gpu7 done chunk at 925113741)
[2026-08-07 19:30:29:909] -   counting... 99.3% 968078445/988192872 roots 211.0s elapsed 9197064.8 GN/s root 110513.7 ETA   1.5s (gpu3 done chunk at 909415104)
[2026-08-07 19:30:32:321] -   counting... 99.3% 968707020/988192872 roots 213.4s elapsed 9102237.8 GN/s root 109455.6 ETA   1.4s (gpu14 done chunk at 946444643)
[2026-08-07 19:30:32:555] -   counting... 99.3% 969315952/988192872 roots 213.6s elapsed 9099681.1 GN/s root 109483.5 ETA   1.4s (gpu6 done chunk at 947749275)
[2026-08-07 19:30:32:966] -   counting... 99.3% 969905855/988192872 roots 214.1s elapsed 9091219.3 GN/s root 109518.0 ETA   1.4s (gpu0 done chunk at 934372797)
[2026-08-07 19:30:33:081] -   counting... 99.4% 970477324/988192872 roots 214.2s elapsed 9091166.6 GN/s root 109600.7 ETA   1.4s (gpu5 done chunk at 949013137)
[2026-08-07 19:30:33:708] -   counting... 99.4% 971030934/988192872 roots 214.8s elapsed 9071296.8 GN/s root 109563.2 ETA   1.4s (gpu1 done chunk at 943707767)
[2026-08-07 19:30:33:892] -   counting... 99.4% 971567244/988192872 roots 215.0s elapsed 9069553.7 GN/s root 109601.7 ETA   1.3s (gpu9 done chunk at 951423608)
[2026-08-07 19:30:34:030] -   counting... 99.4% 972086794/988192872 roots 215.1s elapsed 9067800.6 GN/s root 109669.2 ETA   1.2s (gpu7 done chunk at 953685779)
[2026-08-07 19:30:34:255] -   counting... 99.5% 972590108/988192872 roots 215.3s elapsed 9064602.9 GN/s root 109739.5 ETA   1.2s (gpu12 done chunk at 950237503)
[2026-08-07 19:30:34:456] -   counting... 99.5% 973077694/988192872 roots 215.5s elapsed 9064058.3 GN/s root 109896.3 ETA   1.1s (gpu13 done chunk at 936054674)
[2026-08-07 19:30:34:672] -   counting... 99.5% 973550043/988192872 roots 215.8s elapsed 9059509.6 GN/s root 109958.0 ETA   1.1s (gpu2 done chunk at 954764125)
[2026-08-07 19:30:35:202] -   counting... 99.5% 974007631/988192872 roots 216.3s elapsed 9043967.1 GN/s root 109841.2 ETA   1.1s (gpu8 done chunk at 952572647)
[2026-08-07 19:30:35:634] -   counting... 99.5% 974450919/988192872 roots 216.7s elapsed 9032564.1 GN/s root 109862.9 ETA   1.0s (gpu4 done chunk at 945097926)
[2026-08-07 19:30:35:956] -   counting... 99.5% 974880355/988192872 roots 217.0s elapsed 9024306.5 GN/s root 109952.7 ETA   1.0s (gpu11 done chunk at 942272764)
[2026-08-07 19:30:36:222] -   counting... 99.6% 975296371/988192872 roots 217.3s elapsed 9017161.6 GN/s root 110039.5 ETA   1.0s (gpu15 done chunk at 940791471)
[2026-08-07 19:30:36:896] -   counting... 99.6% 975699386/988192872 roots 218.0s elapsed 8995376.8 GN/s root 109912.3 ETA   1.0s (gpu10 done chunk at 937683992)
[2026-08-07 19:30:37:046] -   counting... 99.6% 976089807/988192872 roots 218.1s elapsed 8992137.8 GN/s root 109971.2 ETA   0.9s (gpu14 done chunk at 958750895)
[2026-08-07 19:30:37:165] -   counting... 99.6% 976468027/988192872 roots 218.3s elapsed 8989466.6 GN/s root 110046.6 ETA   0.9s (gpu6 done chunk at 962262194)
[2026-08-07 19:30:37:223] -   counting... 99.6% 976834428/988192872 roots 218.3s elapsed 8990060.1 GN/s root 110149.2 ETA   0.9s (gpu0 done chunk at 956820776)
[2026-08-07 19:30:37:497] -   counting... 99.6% 977189379/988192872 roots 218.6s elapsed 8979938.4 GN/s root 110103.0 ETA   0.9s (gpu9 done chunk at 965354730)
[2026-08-07 19:30:38:186] -   counting... 99.6% 977533238/988192872 roots 219.3s elapsed 8952937.2 GN/s root 109857.0 ETA   0.9s (gpu2 done chunk at 966068421)
[2026-08-07 19:30:38:196] -   counting... 99.6% 977866351/988192872 roots 219.3s elapsed 8954321.4 GN/s root 109958.9 ETA   0.9s (gpu7 done chunk at 967429593)
[2026-08-07 19:30:38:525] -   counting... 99.6% 978189054/988192872 roots 219.6s elapsed 8942853.8 GN/s root 109940.3 ETA   0.8s (gpu5 done chunk at 963857537)
[2026-08-07 19:30:38:862] -   counting... 99.6% 978501673/988192872 roots 220.0s elapsed 8930554.8 GN/s root 109880.4 ETA   0.8s (gpu8 done chunk at 966759810)
[2026-08-07 19:30:39:036] -   counting... 99.6% 978804522/988192872 roots 220.1s elapsed 8929386.8 GN/s root 110031.6 ETA   0.8s (gpu3 done chunk at 939262394)
[2026-08-07 19:30:39:155] -   counting... 99.7% 979097907/988192872 roots 220.2s elapsed 8926543.1 GN/s root 110003.7 ETA   0.8s (gpu9 done chunk at 971567244)
[2026-08-07 19:30:39:343] -   counting... 99.7% 979382124/988192872 roots 220.4s elapsed 8923024.0 GN/s root 110044.4 ETA   0.7s (gpu1 done chunk at 955808773)
[2026-08-07 19:30:39:635] -   counting... 99.7% 979657459/988192872 roots 220.7s elapsed 8914242.7 GN/s root 110067.5 ETA   0.7s (gpu12 done chunk at 963072527)
[2026-08-07 19:30:39:687] -   counting... 99.7% 979924190/988192872 roots 220.8s elapsed 8913528.2 GN/s root 110068.9 ETA   0.7s (gpu2 done chunk at 973550043)
[2026-08-07 19:30:39:727] -   counting... 99.7% 980182586/988192872 roots 220.8s elapsed 8912765.9 GN/s root 110130.6 ETA   0.6s (gpu6 done chunk at 969315952)
[2026-08-07 19:30:39:828] -   counting... 99.7% 980432907/988192872 roots 220.9s elapsed 8913180.9 GN/s root 110197.9 ETA   0.6s (gpu13 done chunk at 957801154)
[2026-08-07 19:30:39:841] -   counting... 99.7% 980675405/988192872 roots 220.9s elapsed 8914513.7 GN/s root 110223.1 ETA   0.6s (gpu7 done chunk at 972086794)
[2026-08-07 19:30:39:858] -   counting... 99.8% 980910325/988192872 roots 220.9s elapsed 8914658.9 GN/s root 110311.8 ETA   0.5s (gpu0 done chunk at 969905855)
[2026-08-07 19:30:40:065] -   counting... 99.8% 981137904/988192872 roots 221.2s elapsed 8907342.8 GN/s root 110277.7 ETA   0.5s (gpu14 done chunk at 968707020)
[2026-08-07 19:30:40:331] -   counting... 99.8% 981358371/988192872 roots 221.4s elapsed 8897115.3 GN/s root 110168.5 ETA   0.5s (gpu9 done chunk at 977189379)
[2026-08-07 19:30:40:386] -   counting... 99.8% 981575971/988192872 roots 221.5s elapsed 8896079.8 GN/s root 110169.5 ETA   0.5s (gpu8 done chunk at 974007631)
[2026-08-07 19:30:40:538] -   counting... 99.8% 981793571/988192872 roots 221.6s elapsed 8892801.7 GN/s root 110195.5 ETA   0.4s (gpu15 done chunk at 960562265)
[2026-08-07 19:30:40:883] -   counting... 99.8% 982011171/988192872 roots 222.0s elapsed 8881616.1 GN/s root 110164.5 ETA   0.4s (gpu11 done chunk at 961425721)
[2026-08-07 19:30:41:018] -   counting... 99.8% 982228771/988192872 roots 222.1s elapsed 8876527.6 GN/s root 110123.5 ETA   0.4s (gpu2 done chunk at 977533238)
[2026-08-07 19:30:41:139] -   counting... 99.8% 982446371/988192872 roots 222.2s elapsed 8871996.4 GN/s root 110087.4 ETA   0.4s (gpu7 done chunk at 977866351)
[2026-08-07 19:30:41:149] -   counting... 99.8% 982663971/988192872 roots 222.2s elapsed 8872029.7 GN/s root 110109.4 ETA   0.3s (gpu0 done chunk at 976834428)
[2026-08-07 19:30:41:149] -   counting... 99.9% 982881571/988192872 roots 222.2s elapsed 8873008.3 GN/s root 110128.5 ETA   0.3s (gpu9 done chunk at 979097907)
[2026-08-07 19:30:41:156] -   counting... 99.9% 983099171/988192872 roots 222.2s elapsed 8873297.7 GN/s root 110156.3 ETA   0.3s (gpu6 done chunk at 976468027)
[2026-08-07 19:30:41:189] -   counting... 99.9% 983316771/988192872 roots 222.3s elapsed 8873662.4 GN/s root 110175.4 ETA   0.3s (gpu1 done chunk at 971030934)
[2026-08-07 19:30:41:372] -   counting... 99.9% 983534371/988192872 roots 222.5s elapsed 8866926.3 GN/s root 110110.8 ETA   0.3s (gpu14 done chunk at 976089807)
[2026-08-07 19:30:41:376] -   counting... 99.9% 983751971/988192872 roots 222.5s elapsed 8870879.2 GN/s root 110257.3 ETA   0.3s (gpu4 done chunk at 959670956)
[2026-08-07 19:30:41:401] -   counting... 99.9% 983969571/988192872 roots 222.5s elapsed 8871206.3 GN/s root 110280.5 ETA   0.2s (gpu12 done chunk at 972590108)
[2026-08-07 19:30:41:504] -   counting... 99.9% 984187171/988192872 roots 222.6s elapsed 8868203.0 GN/s root 110250.4 ETA   0.2s (gpu8 done chunk at 978501673)
[2026-08-07 19:30:41:712] -   counting... 99.9% 984404771/988192872 roots 222.8s elapsed 8860389.3 GN/s root 110169.9 ETA   0.2s (gpu15 done chunk at 975296371)
[2026-08-07 19:30:41:735] -   counting... 99.9% 984622371/988192872 roots 222.8s elapsed 8860460.2 GN/s root 110193.3 ETA   0.2s (gpu13 done chunk at 973077694)
[2026-08-07 19:30:41:746] -   counting... 99.9% 984839971/988192872 roots 222.8s elapsed 8860649.3 GN/s root 110204.5 ETA   0.2s (gpu9 done chunk at 981358371)
[2026-08-07 19:30:41:780] -   counting... 99.9% 985057571/988192872 roots 222.9s elapsed 8859942.3 GN/s root 110205.0 ETA   0.2s (gpu0 done chunk at 980910325)
[2026-08-07 19:30:41:876] -   counting... 99.9% 985275171/988192872 roots 223.0s elapsed 8859539.2 GN/s root 110277.3 ETA   0.2s (gpu10 done chunk at 964618016)
[2026-08-07 19:30:41:897] -   counting... 99.9% 985492771/988192872 roots 223.0s elapsed 8859734.6 GN/s root 110284.3 ETA   0.1s (gpu2 done chunk at 979924190)
[2026-08-07 19:30:41:910] -   counting... 100.0% 985710371/988192872 roots 223.0s elapsed 8860040.0 GN/s root 110295.7 ETA   0.1s (gpu6 done chunk at 980182586)
[2026-08-07 19:30:41:926] -   counting... 100.0% 985927971/988192872 roots 223.0s elapsed 8860288.5 GN/s root 110304.5 ETA   0.1s (gpu7 done chunk at 980675405)
[2026-08-07 19:30:41:952] -   counting... 100.0% 986145571/988192872 roots 223.0s elapsed 8859936.9 GN/s root 110412.4 ETA   0.1s (gpu5 done chunk at 970477324)
[2026-08-07 19:30:42:024] -   counting... 100.0% 986363171/988192872 roots 223.1s elapsed 8857846.4 GN/s root 110392.0 ETA   0.1s (gpu14 done chunk at 981137904)
[2026-08-07 19:30:42:041] -   counting... 100.0% 986580771/988192872 roots 223.1s elapsed 8858145.8 GN/s root 110406.5 ETA   0.1s (gpu1 done chunk at 979382124)
[2026-08-07 19:30:42:267] -   counting... 100.0% 986798371/988192872 roots 223.4s elapsed 8849918.8 GN/s root 110309.8 ETA   0.1s (gpu8 done chunk at 981575971)
[2026-08-07 19:30:42:280] -   counting... 100.0% 987015971/988192872 roots 223.4s elapsed 8850377.6 GN/s root 110325.0 ETA   0.0s (gpu12 done chunk at 979657459)
[2026-08-07 19:30:42:293] -   counting... 100.0% 987233571/988192872 roots 223.4s elapsed 8851552.7 GN/s root 110390.5 ETA   0.0s (gpu3 done chunk at 968078445)
[2026-08-07 19:30:42:337] -   counting... 100.0% 987451171/988192872 roots 223.4s elapsed 8850502.7 GN/s root 110393.7 ETA   0.0s (gpu11 done chunk at 974880355)
[2026-08-07 19:30:42:502] -   counting... 100.0% 987668771/988192872 roots 223.6s elapsed 8844460.2 GN/s root 110328.9 ETA   0.0s (gpu15 done chunk at 981793571)
[2026-08-07 19:30:42:506] -   counting... 100.0% 987886371/988192872 roots 223.6s elapsed 8845048.1 GN/s root 110347.0 ETA   0.0s (gpu13 done chunk at 980432907)
[2026-08-07 19:30:42:544] -   counting... 100.0% 988103971/988192872 roots 223.6s elapsed 8843975.1 GN/s root 110346.7 ETA   0.0s (gpu9 done chunk at 982881571)
[2026-08-07 19:30:42:610] -   counting... 100.0% 988192872/988192872 roots 223.7s elapsed 8841748.6 GN/s root 110331.1 ETA   0.0s (gpu0 done chunk at 982663971)
[2026-08-07 19:30:42:635] -   counting... 100.0% 988192872/988192872 roots 223.7s elapsed 8841302.9 GN/s root 110336.4 ETA   0.0s (gpu2 done chunk at 982228771)
[2026-08-07 19:30:42:709] -   counting... 100.0% 988192872/988192872 roots 223.8s elapsed 8838871.8 GN/s root 110316.7 ETA   0.0s (gpu7 done chunk at 982446371)
[2026-08-07 19:30:42:788] -   counting... 100.0% 988192872/988192872 roots 223.9s elapsed 8836249.4 GN/s root 110293.7 ETA   0.0s (gpu14 done chunk at 983534371)
[2026-08-07 19:30:42:795] -   counting... 100.0% 988192872/988192872 roots 223.9s elapsed 8836562.5 GN/s root 110309.9 ETA   0.0s (gpu6 done chunk at 983099171)
[2026-08-07 19:30:42:962] -   counting... 100.0% 988192872/988192872 roots 224.0s elapsed 8830539.4 GN/s root 110246.6 ETA   0.0s (gpu1 done chunk at 983316771)
[2026-08-07 19:30:42:969] -   counting... 100.0% 988192872/988192872 roots 224.1s elapsed 8830690.4 GN/s root 110263.7 ETA   0.0s (gpu5 done chunk at 978189054)
[2026-08-07 19:30:43:020] -   counting... 100.0% 988192872/988192872 roots 224.1s elapsed 8829395.2 GN/s root 110268.4 ETA   0.0s (gpu4 done chunk at 974450919)
[2026-08-07 19:30:43:037] -   counting... 100.0% 988192872/988192872 roots 224.1s elapsed 8829030.2 GN/s root 110279.4 ETA   0.0s (gpu12 done chunk at 983969571)
[2026-08-07 19:30:43:045] -   counting... 100.0% 988192872/988192872 roots 224.1s elapsed 8829561.4 GN/s root 110297.1 ETA   0.0s (gpu3 done chunk at 978804522)
[2026-08-07 19:30:43:087] -   counting... 100.0% 988192872/988192872 roots 224.2s elapsed 8828552.6 GN/s root 110302.6 ETA   0.0s (gpu10 done chunk at 975699386)
[2026-08-07 19:30:43:090] -   counting... 100.0% 988192872/988192872 roots 224.2s elapsed 8828772.2 GN/s root 110325.4 ETA   0.0s (gpu8 done chunk at 984187171)
[2026-08-07 19:30:43:133] -   counting... 100.0% 988192872/988192872 roots 224.2s elapsed 8827764.3 GN/s root 110319.6 ETA   0.0s (gpu11 done chunk at 982011171)
[2026-08-07 19:30:43:190] -   counting... 100.0% 988192872/988192872 roots 224.3s elapsed 8825931.3 GN/s root 110306.4 ETA   0.0s (gpu9 done chunk at 984839971)
[2026-08-07 19:30:43:372] -   counting... 100.0% 988192872/988192872 roots 224.5s elapsed 8819401.6 GN/s root 110232.5 ETA   0.0s (gpu0 done chunk at 985057571)
[2026-08-07 19:30:43:483] -   counting... 100.0% 988192872/988192872 roots 224.6s elapsed 8815520.4 GN/s root 110196.0 ETA   0.0s (gpu15 done chunk at 984404771)
[2026-08-07 19:30:43:489] -   counting... 100.0% 988192872/988192872 roots 224.6s elapsed 8815895.1 GN/s root 110209.6 ETA   0.0s (gpu2 done chunk at 985492771)
[2026-08-07 19:30:43:518] -   counting... 100.0% 988192872/988192872 roots 224.6s elapsed 8815219.6 GN/s root 110214.2 ETA   0.0s (gpu7 done chunk at 985927971)
[2026-08-07 19:30:43:558] -   counting... 100.0% 988192872/988192872 roots 224.6s elapsed 8814179.5 GN/s root 110211.1 ETA   0.0s (gpu6 done chunk at 985710371)
[2026-08-07 19:30:43:649] -   counting... 100.0% 988192872/988192872 roots 224.7s elapsed 8811003.5 GN/s root 110185.9 ETA   0.0s (gpu13 done chunk at 984622371)
[2026-08-07 19:30:43:801] -   counting... 100.0% 988192872/988192872 roots 224.9s elapsed 8805122.4 GN/s root 110119.1 ETA   0.0s (gpu9 done chunk at 988103971)
[2026-08-07 19:30:43:880] -   counting... 100.0% 988192872/988192872 roots 225.0s elapsed 8802334.3 GN/s root 110102.0 ETA   0.0s (gpu12 done chunk at 987015971)
[2026-08-07 19:30:43:888] -   counting... 100.0% 988192872/988192872 roots 225.0s elapsed 8802257.9 GN/s root 110119.7 ETA   0.0s (gpu14 done chunk at 986363171)
[2026-08-07 19:30:43:898] -   counting... 100.0% 988192872/988192872 roots 225.0s elapsed 8802134.0 GN/s root 110136.5 ETA   0.0s (gpu11 done chunk at 987451171)
[2026-08-07 19:30:43:931] -   counting... 100.0% 988192872/988192872 roots 225.0s elapsed 8801475.3 GN/s root 110136.1 ETA   0.0s (gpu10 done chunk at 985275171)
[2026-08-07 19:30:44:041] -   counting... 100.0% 988192872/988192872 roots 225.1s elapsed 8797798.2 GN/s root 110099.1 ETA   0.0s (gpu4 done chunk at 983751971)
[2026-08-07 19:30:44:050] -   counting... 100.0% 988192872/988192872 roots 225.1s elapsed 8797771.0 GN/s root 110112.9 ETA   0.0s (gpu5 done chunk at 986145571)
[2026-08-07 19:30:44:086] -   counting... 100.0% 988192872/988192872 roots 225.2s elapsed 8796730.9 GN/s root 110119.2 ETA   0.0s (gpu3 done chunk at 987233571)
[2026-08-07 19:30:44:150] -   counting... 100.0% 988192872/988192872 roots 225.2s elapsed 8794511.7 GN/s root 110108.9 ETA   0.0s (gpu1 done chunk at 986580771)
[2026-08-07 19:30:44:215] -   counting... 100.0% 988192872/988192872 roots 225.3s elapsed 8792310.7 GN/s root 110096.1 ETA   0.0s (gpu8 done chunk at 986798371)
[2026-08-07 19:30:44:356] -   counting... 100.0% 988192872/988192872 roots 225.4s elapsed 8787177.1 GN/s root 110041.6 ETA   0.0s (gpu15 done chunk at 987668771)
[2026-08-07 19:30:44:443] -   counting... 100.0% 988192872/988192872 roots 225.5s elapsed 8783991.7 GN/s root 110016.9 ETA   0.0s (gpu13 done chunk at 987886371)
[2026-08-07 19:30:44:444] -   gpu0: 16 chunks, 64600552 roots, 208.13s
[2026-08-07 19:30:44:446] -   gpu1: 15 chunks, 61792346 roots, 208.91s
[2026-08-07 19:30:44:448] -   gpu2: 17 chunks, 65824375 roots, 208.44s
[2026-08-07 19:30:44:449] -   gpu3: 13 chunks, 62416903 roots, 209.01s
[2026-08-07 19:30:44:451] -   gpu4: 13 chunks, 59140594 roots, 208.88s
[2026-08-07 19:30:44:452] -   gpu5: 14 chunks, 60251265 roots, 209.00s
[2026-08-07 19:30:44:454] -   gpu6: 16 chunks, 61878345 roots, 208.51s
[2026-08-07 19:30:44:456] -   gpu7: 16 chunks, 59901693 roots, 208.48s
[2026-08-07 19:30:44:457] -   gpu8: 16 chunks, 62462336 roots, 209.17s
[2026-08-07 19:30:44:459] -   gpu9: 18 chunks, 64604387 roots, 208.73s
[2026-08-07 19:30:44:461] -   gpu10: 13 chunks, 62079795 roots, 208.79s
[2026-08-07 19:30:44:462] -   gpu11: 14 chunks, 61721907 roots, 208.83s
[2026-08-07 19:30:44:464] -   gpu12: 15 chunks, 59105726 roots, 208.80s
[2026-08-07 19:30:44:466] -   gpu13: 14 chunks, 59317166 roots, 209.29s
[2026-08-07 19:30:44:467] -   gpu14: 16 chunks, 61954366 roots, 208.69s
[2026-08-07 19:30:44:469] -   gpu15: 15 chunks, 61141116 roots, 209.29s
[2026-08-07 19:30:46:983] - Perft 1 20
[2026-08-07 19:30:46:983] - Perft 2 400
[2026-08-07 19:30:46:983] - Perft 3 8902
[2026-08-07 19:30:46:983] - Perft 4 197281
[2026-08-07 19:30:46:983] - Perft 5 4865609
[2026-08-07 19:30:46:983] - Perft 6 119060324
[2026-08-07 19:30:46:983] - Perft 7 3195901860
[2026-08-07 19:30:46:983] - Perft 8 84998978956
[2026-08-07 19:30:46:983] - Perft 13 1981066775000396239 247115.6ms 8016760.757 GNodes/s
[2026-08-07 19:30:46:983] - target perft(13): 247.116 s (cleared tt)
[2026-08-07 19:30:46:983] - [serve] vram free 4262 MB
[2026-08-07 19:30:46:983] - OK 1981066775000396239
True wallclock from the logs: 274.7 s - which is 7.18 Million Billion nps overall
Deduplication of the roots - extremely important: https://oeis.org/A083276
9183507426 is higher because the TT key for my perf is different on "could EP". (full legality check is expensive) might be good for larger trees tho.

GPU perf on this machine:
Root (non TT) performance: 110016.9 GN/S - 110 TN/S
With TT performance: 8016760.757 GN/s - 8.01 PN/S
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer