Author: Sune Fischer
Date: 17:39:01 12/31/03
Go up one level in this thread
On December 31, 2003 at 17:55:05, Ed Trice wrote: >The test I did was as follows: > >1. Clear the board. >2. Loop from a1 to j8 (80 square board.) >3. Place a knight on the square from #2. >4. Call the move generator N times (N large)and increment the nodes. >5. Place a bishop on the square from #2. >6. Call the move generator N times (N large) and increment the nodes. >7. Place a rook on the square from #2. >8. Call the move generator N times (N large)and increment the nodes. >9. Place a chancellor on the square from #2. >10. Call the move generator N times (N large)and increment the nodes. >11. Place an archbishop on the square from #2. >12. Call the move generator N times (N large)and increment the nodes. >13. stop the timer >14. compute nodes/time taken. > >Basically, all of the moves are precomputed indices into 80 bit attack arrays. >These are generated as fast as you can lookup data in a list. > >Given that was the case, I wanted to know how fast the lookup speeds were. That >number ended up being 140 million nodes per second on my test system. If you get 140 M/s you must be doing it differently, I don't know what you mean by "the moves are are precomputed...". Seems you are not doing a full move generation but only part of it. Crafty does move generation by first computing the attack board from an attack table, ie. it generates a bitboard where the set bits are pseudo legal to-squares. Then these bits are extracted and compacted to an integer which is then added to a move list. I think this would only be slower on 80-bit bitboards, every binary operation is two operations (plus perhaps a function call) and getting the bits out is also more complicated. If you have a way of using the moves without extracting the bits that might be really interesting to many programmers, but if you are just holding that off until later then it's not move generation as I call it. >>"On the minus side, an Array Move Generator is many times slower than a Bitboard >>Move Generator. A recent experiment showed that the Bitboard Move Generator in >>the Gothic Vortex program is about 30 times as fast as the Array Move Generator >>found in the Zillions-Of-Games engine." >> > >This is easy to reproduce, and it is not fiction. The Zillions program displays >its node count. Given Y different positions from different Gothic Chess >openings, and Z amount of time per position, you get a node/second average. > >As Zillions is the only other engine that plays Gothic Chess, what else could I >compare my own numbers with? > >When I took my nodes/second average and compared it to Zillions, the division >produced a number 30 point something. That means that Gothic Vortex is 30 times >as fast. Node speed is a bad metric in itself. It is common for newly written programs to be very fast, but they don't do SEE or sort the moves or have a heavy evaluation. One really has to design the move generator with these things in mind, and with all these unknown factors it is hard to say who is better. If you are really interested you should probably try and bench Gothic against chess programs, make sure the tests are comparable and if you can get close to e.g. Crafty's speed then that would be an achievement. >I think this point has been touched upon already. If you can construct some >suite of tests, I would welcome the chance to compare data. > >By the way, on the latest Archbishop endgame I tested, Gothic Vortex averages >560,235 positions per second when it solves a mate in 16. That sounds like a reasonable number, at least it is in the range of what many chess engines get. Again depends on what you do of course, if it's just a bean counter with poor move ordering it is not a good speed. -S.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.