I notice that many use pseudo moves when they count nodes. My pseudo moves gets counted twice per legal moves, once when the opponent move is made and once when the move side is ready. So, pseudo moves are clocking around 10 - 15 MM/second while the legal moves are about 5MM. However, I take 17 variables, 12 positional and 5 evaluation metrics per legal move. I'm trying to ensure my move generation is perfect at 20 - 24 ply before I start optimizing the evaluation functions. My 5 little evaluation metrics reduce computation time-to checkmate- by 93%, so, I understand the larger benefit of efficient evaluation. I can only take 5 metrics right now because I have only 12 bits left for evaluation in my 64-bit ulong move variable. Any more variables will require another 64-bit field to sort. I'm using deep ply checkmate puzzles with only one solution to verify and debug my C# code. I'm good to 20 ply right now, but, it's been a pain in the neck, arm, eyes, legs and head doing 22 & 24. Every time I go up 2 plys I find dozens of errors and some take 5 days to find. This is driving me bananas and I'm not sure why I keep doing it. Like the rest of you chess programming addicts, I can't stop. I haven't played an OTB game in 3 years and don't even want to play humans anymore.mvanthoor wrote: ↑Wed Feb 09, 2022 2:15 pmWhat are you comparing? In my case, Perft runs at 33M nps on an i7-6700K... but the engine:Chessnut1071 wrote: ↑Tue Feb 08, 2022 11:01 pm OMG, it took me 2 months to get the bitboards working after correcting all the known issues. This looks like a never ending task. I didn't think 5.2Mnps was any good. I'm reading some clocking 120Mnps. Are those speeds on a personal computer?
- Incrementally keeps a Zobrist Hash
- Incrementally keeps 2 sets of PSQT's
- Incrementally keeps the game phase
The two sets of PSQT's and the game phase cost about 8M nps to keep. I never measured the Zobrist key but I expect it to take another 4M. So the engine could have run at ~47M nps. (In the past it did run at 41M nps when it didn't have the PSQT's and phase yet, but it did have the Zobrist hash.)
All of this could be scrapped for Perft. Also, I could add bulk-counting to perft, and change the move generator into a full-legal move generator to increase speed even more. However, all of this has no bearing on chess playing strength. It's just Perft.
The engine searches 6 M nodes/second when running alpha/beta and evaluating positions. THAT is what counts, because there, I DO need the incremental zobrist hash, the PSQT's, and in my case, the game phase.
So if you are running at 5.2 M nps with your engine while searching positions, that is completely fine. That should be enough to build a seriously strong engine on top of. (Except if you are reaching those 5.2 M nodes/second on a supercomputer, obvioulsy. I'm talking about reaching this on a 5 year old laptop.)
Comparison check on engine performance
Moderator: Ras
-
- Posts: 313
- Joined: Tue Aug 03, 2021 2:41 pm
- Full name: Bill Beame