Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Who is the champion in calculating perft?

Author: Uri Blass

Date: 12:20:16 11/25/01

Go up one level in this thread


On November 23, 2001 at 15:43:24, Michel Langeveld wrote:

>On November 22, 2001 at 15:52:22, Uri Blass wrote:
>
>>The times of my program in calculating perft(number of legal games of fixed
>>number of plies) are not bad.
>>
>>I get on p800 33 seconds for finding perft 6=119060324 in the initial position
>>and also 33 seconds for finding perft 5=193690690 in another known position
>>
>>this is not a mistake and my program needs similiar time because it generates
>>only legal moves so it needs less nodes to calculate perft 5.
>>
>>
>>[D]r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1
>>
>>
>>I am interested to know what is the speed of the best free or commercial program
>>in calculating perft.
>>
>>Yace is the fastest free program that I know.
>>I do not know about a commercial programs with this function.
>>
>>
>>My move generator is not 100% correct because it has some probelms with the en
>>passant rule that I did not care to fix but it finds the right numbers and it is
>>clear that fixing the errors is not going to change significantly the speed of
>>the program.
>>
>>
>>yace is slightly faster than my program in caculating perft 6 in the initial
>>position(32 seconds) but has no chance in the second position and I plan to
>>improve the algorithm(there wer important things that I did not do because of
>>more important things).
>>
>>The main improvement that I worked about in the last days was improvement in
>>generating moves(my previous version generated only piece go to square when I
>>started from the target square and now I start from the piece except checks).
>>
>>second improvement that I found was a mistake of generating move twice when I
>>did not need to do it.
>>
>>I calculate perft 4 in the following ways:
>>1)generate all legal moves
>>2)make a3
>>3)generate all legal moves
>>4)make a6
>>5)generate all the legal moves
>>6)make a4
>>7)generate all the legal moves and add their number into perft
>>8)undo a4
>>9)generate all the legal moves
>>10)make b3
>>11)generate all the legal moves and add their number to perft
>>12)undo b3
>>13)generate all the legalmoves
>>14)make b4
>>
>>I understood that I can save time by not doing 9,13,... because it was exactly
>>the same job that I did in 5 and it saved me almost half of the job of
>>generating moves(it was not close to 50% improvement because my program also
>>make moves and not only generates them but it was a big improvement).
>>
>>Uri
>
>I needed 36 hours for this:
>http://www.it.ro/ccc_search/ccc.php?art_id=57423

My stupid program needed more than 6 hours on p800 to verify that 84,998,978,956
is the right number for perft 8

I say stupid because of some reasons:

1)my programs has known bugs and it is surprising that inspite of these bugs
it calculate perft 8 correctly or at least does exactly the same mistake as your
program.

2)I always discovers that when I go one ply deeper it does not calculate perft
correctly because of new bugs that I did not consider and I still suspect that
there are bugs that I did not consider.

3)my program does not use hash tables in order to calculate perft faster(it is
impossible to use them in the way that chess programs use them but it is
possible to use hash tables).

4)it is possible to improve the speed of the program by updating the pin arrays
in a faster way and my algorithm does it in a stupid way.

5)I used only plain C(no assembler and I do not understand much about tricks to
do the same thing faster with the same algorithm)

Uri



This page took 0.01 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.