Perft

Archive of the old Parsimony forum. Some messages couldn't be restored. Limitations: Search for authors does not work, Parsimony specific formats do not work, threaded view does not work properly. Posting is disabled.

Perft

Postby Andreas Herrmann » 18 Feb 2003, 20:55

Geschrieben von: / Posted by: Andreas Herrmann at 18 February 2003 20:55:10:

I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Yace 0.99.56 0,116 2,937 70,646
Pepito 1.59 profile 0,230 5,200 127,530
Sjeng 12.13 0,210 4,950 136,470
Dragon 4.4.3 0,260 7,650 136,870
Queen 2.37 0,260 6,529 145,339
Pepito 1.59 vc7 0,260 5,940 146,860
Crafty 19.2 0,290 5,960 149,530
Pepito 1.59 noProf 0,220 7,040 177,090
Beowulf 2.2 0,270 7,590 159,040
Chispa 1.54 0,270 6,490 161,400
Holmes 0.8.19a* 0,310 7,820 187,970
Chezzz 1.0.2 0,341 7,952 202,411
Beaches 1.5 0,511 13,119 291,079
Holmes 0.8.19b 0,500 12,408 297,998
Holmes 0.8.19a2 0,510 12,578 305,458
Aldebaran 0.7.0 0,510 10,560 306,890
Greko 2.05a 0,600 13,400 324,000
Frenzee 140 0,680 16,280 433,590
Gaviota 0.32 1,090 25,600 645,340

results on AMD K6/2-450

Andreas
Andreas Herrmann
 

Re: Perft

Postby Dann Corbit » 18 Feb 2003, 21:10

Geschrieben von: / Posted by: Dann Corbit at 18 February 2003 21:10:36:
Als Antwort auf: / In reply to: Perft geschrieben von: / posted by: Andreas Herrmann at 18 February 2003 20:55:10:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Yace 0.99.56 0,116 2,937 70,646
Pepito 1.59 profile 0,230 5,200 127,530
Sjeng 12.13 0,210 4,950 136,470
Dragon 4.4.3 0,260 7,650 136,870
Queen 2.37 0,260 6,529 145,339
Pepito 1.59 vc7 0,260 5,940 146,860
Crafty 19.2 0,290 5,960 149,530
Pepito 1.59 noProf 0,220 7,040 177,090
Beowulf 2.2 0,270 7,590 159,040
Chispa 1.54 0,270 6,490 161,400
Holmes 0.8.19a* 0,310 7,820 187,970
Chezzz 1.0.2 0,341 7,952 202,411
Beaches 1.5 0,511 13,119 291,079
Holmes 0.8.19b 0,500 12,408 297,998
Holmes 0.8.19a2 0,510 12,578 305,458
Aldebaran 0.7.0 0,510 10,560 306,890
Greko 2.05a 0,600 13,400 324,000
Frenzee 140 0,680 16,280 433,590
Gaviota 0.32 1,090 25,600 645,340

results on AMD K6/2-450

Andreas
Both of these results are positively stupendous. Is 32 bit math used so that deeper perft runs will overflow, or can node counts beyond 4 billion be generated?



my ftp site
Dann Corbit
 

Re: Perft

Postby Uri Blass » 18 Feb 2003, 21:13

Geschrieben von: / Posted by: Uri Blass at 18 February 2003 21:13:38:
Als Antwort auf: / In reply to: Perft geschrieben von: / posted by: Andreas Herrmann at 18 February 2003 20:55:10:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.
It is possible to improve the speed of the move generator of Movei.
I never rewrite the program from scratch but you can be sure that I often change things on my move genrator to improve it's speed.
I believe that I can get bigger advantage by implementing knowledge about endgames but at least in the next days I prefer to try to continue to do it faster.
My next function to implement is generating captures and counting legal moves(Movei of today still has no function to generate only captures and it simply generates the list of the legal moves and after it go through them to look for captures).
After doing it it should be easy to improve the speed of my perft because I expect the function of generating captures to be faster than the function of generating moves so I will be able to use that function in perft.
I need also to write another function to generate captures and checks and it may save me even more time but this function is also harder to write.
Uri
Uri Blass
 

Re: Perft

Postby Uri Blass » 18 Feb 2003, 21:16

Geschrieben von: / Posted by: Uri Blass at 18 February 2003 21:16:03:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Dann Corbit at 18 February 2003 21:10:36:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Both of these results are positively stupendous. Is 32 bit math used so that deeper perft runs will overflow, or can node counts beyond 4 billion be generated?
Movei does not use 32 bit math in perft.
It is using 32 bit math only in counting nodes in regular search.
Uri
Uri Blass
 

perft and analysis - Questions about Movei

Postby Stefan Helders » 18 Feb 2003, 21:40

Geschrieben von: / Posted by: Stefan Helders at 18 February 2003 21:40:36:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Uri Blass at 18 February 2003 21:13:38:

Sorry for that question (coz I'm just a beginner):
Do i see it right that perft just generates the moves, without evaluating?
As I saw in Andreas' table Movei is almost 4 times faster than Crafty.
When doing analyses on whatever position Movei calculates about 200000 nodes per second on my machine while Crafty generates about 450000. Is Movei's evaluation so slow that in effect Crafty's calculation is more than twice faster than Movei? How much time (in percent of total time) does Movei spend on move generation?
I remember you mentioned quite some time ago that your engine does not use hash tables. I think that with using hash tables you could improve Movei's speed on calculating evaluations, and besides avoid some situations that would be easy to handle with hash tables..
How is your priority on this point?
Stefan
Stefan Helders
 

Re: Perft

Postby Sune Fischer » 18 Feb 2003, 21:45

Geschrieben von: / Posted by: Sune Fischer at 18 February 2003 21:45:57:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Dann Corbit at 18 February 2003 21:10:36:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Yace 0.99.56 0,116 2,937 70,646
Pepito 1.59 profile 0,230 5,200 127,530
Sjeng 12.13 0,210 4,950 136,470
Dragon 4.4.3 0,260 7,650 136,870
Queen 2.37 0,260 6,529 145,339
Pepito 1.59 vc7 0,260 5,940 146,860
Crafty 19.2 0,290 5,960 149,530
Pepito 1.59 noProf 0,220 7,040 177,090
Beowulf 2.2 0,270 7,590 159,040
Chispa 1.54 0,270 6,490 161,400
Holmes 0.8.19a* 0,310 7,820 187,970
Chezzz 1.0.2 0,341 7,952 202,411
Beaches 1.5 0,511 13,119 291,079
Holmes 0.8.19b 0,500 12,408 297,998
Holmes 0.8.19a2 0,510 12,578 305,458
Aldebaran 0.7.0 0,510 10,560 306,890
Greko 2.05a 0,600 13,400 324,000
Frenzee 140 0,680 16,280 433,590
Gaviota 0.32 1,090 25,600 645,340

results on AMD K6/2-450

Andreas
Both of these results are positively stupendous.
Is 32 bit math used so that deeper perft runs will overflow, or can node counts beyond 4 billion be generated?
It depends on what Delfi is doing. If Delfi is really making and unmaking moves at the last ply then that is truly fast.
There are a number of tricks you can do, so unless one also defines the manner in which the perft is calculated it doesn't make a whole lot of sense to compare.
I will try and run the same tests on my XP2400 to see if it handles bitboards better, I suspect the K6 is dead slow on 64 bit ops.
-S.
Sune Fischer
 

Re: Perft

Postby Fabio Cavicchio » 18 Feb 2003, 21:49

Geschrieben von: / Posted by: Fabio Cavicchio at 18 February 2003 21:49:41:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Dann Corbit at 18 February 2003 21:10:36:
perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Is 32 bit math used so that deeper perft runs will overflow, or
can node counts beyond 4 billion be generated?
32 bit, so Delfi cannot be used for deep perft studies. But I will
change it to 64 bit to allow them in the next release.
Hello,
Fabio.
Fabio Cavicchio
 

Re: perft and analysis - Questions about Movei

Postby Dann Corbit » 18 Feb 2003, 21:59

Geschrieben von: / Posted by: Dann Corbit at 18 February 2003 21:59:33:
Als Antwort auf: / In reply to: perft and analysis - Questions about Movei geschrieben von: / posted by: Stefan Helders at 18 February 2003 21:40:36:
Sorry for that question (coz I'm just a beginner):
Do i see it right that perft just generates the moves, without evaluating?
As I saw in Andreas' table Movei is almost 4 times faster than Crafty.
When doing analyses on whatever position Movei calculates about 200000 nodes per second on my machine while Crafty generates about 450000. Is Movei's evaluation so slow that in effect Crafty's calculation is more than twice faster than Movei? How much time (in percent of total time) does Movei spend on move generation?
I remember you mentioned quite some time ago that your engine does not use hash tables.
I think that with using hash tables you could improve Movei's speed on calculating evaluations, and besides avoid some situations that would be easy to handle with hash tables..
How is your priority on this point?
He uses hash tables, but not for transpositions. Only for move ordering. Actually, that is the most important application of them.
Hash tables almost always decrease NPS calculations, because many calculations (typically 1/3 or so) are simply skipped.
I think he is approaching the problem in an ideal way. Make the foundation stones robust and excellent, while carefully planning the building.



my ftp site
Dann Corbit
 

Re: Perft

Postby Andreas Herrmann » 18 Feb 2003, 22:03

Geschrieben von: / Posted by: Andreas Herrmann at 18 February 2003 22:03:46:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Fabio Cavicchio at 18 February 2003 21:49:41:
perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Is 32 bit math used so that deeper perft runs will overflow, or
can node counts beyond 4 billion be generated?
32 bit, so Delfi cannot be used for deep perft studies. But I will
change it to 64 bit to allow them in the next release.
Hello,
Fabio.
Hello Fabio,
do you use inline assember in your move generator? What a board presentation do you use (bitboard,8x8,10x12 or something like Uri)?
Andreas
Andreas Herrmann
 

Re: perft and analysis - Questions about Movei

Postby Uri Blass » 18 Feb 2003, 22:07

Geschrieben von: / Posted by: Uri Blass at 18 February 2003 22:07:45:
Als Antwort auf: / In reply to: perft and analysis - Questions about Movei geschrieben von: / posted by: Stefan Helders at 18 February 2003 21:40:36:
Sorry for that question (coz I'm just a beginner):
Do i see it right that perft just generates the moves, without evaluating?
As I saw in Andreas' table Movei is almost 4 times faster than Crafty.
When doing analyses on whatever position Movei calculates about 200000 nodes per second on my machine while Crafty generates about 450000. Is Movei's evaluation so slow that in effect Crafty's calculation is more than twice faster than Movei? How much time (in percent of total time) does Movei spend on move generation?
I remember you mentioned quite some time ago that your engine does not use hash tables.
I think that with using hash tables you could improve Movei's speed on >calculating evaluations, and besides avoid some situations that would be easy >to handle with hash tables..
How is your priority on this point?
Stefan

I did not check the latest Movei but Movei use a lot of time on Move generation.
The point is that Movei generate the list of the legal moves for it's evaluation
in every node(Movei evaluates every position like Rebel because it needs the exact evaluation for it's search decisions) so if it makes 200,000 nodes per second then it means that it generates some million nodes per second.
Movei also has slow function to find checks in the first plies of the qsearch
and it is another thing that should be improved.
It does not use hash tables for pruning.
It is using hash tables for order of moves.
My priority is today first to do other things because it seems easier for me to do them.
Today I store in the hash tables only number for the position,bound and depth.
I believe that I can improve the speed of movei by storing more information like number of legal moves and more information but the problem with these ideas that it also mean that I will have less positions in the hash tables.
I believe that it can be still a significant improvement but I prefer to do things that only make it faster without disadvantages.
I also have some problem in using hash tables for pruning because I have 2 varaibles when one of them is partial extensions and Movei does not store the partial extensions in the hash.
Again it may be better to store the partial extensions in the hash and to spend more space but it is not a trivial change for me and I am afraid from bugs in the process.
Uri
Uri Blass
 

Re: Perft

Postby Sune Fischer » 18 Feb 2003, 22:17

Geschrieben von: / Posted by: Sune Fischer at 18 February 2003 22:17:33:
Als Antwort auf: / In reply to: Perft geschrieben von: / posted by: Andreas Herrmann at 18 February 2003 20:55:10:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Yace 0.99.56 0,116 2,937 70,646
Pepito 1.59 profile 0,230 5,200 127,530
Sjeng 12.13 0,210 4,950 136,470
Dragon 4.4.3 0,260 7,650 136,870
Queen 2.37 0,260 6,529 145,339
Pepito 1.59 vc7 0,260 5,940 146,860
Crafty 19.2 0,290 5,960 149,530
Pepito 1.59 noProf 0,220 7,040 177,090
Beowulf 2.2 0,270 7,590 159,040
Chispa 1.54 0,270 6,490 161,400
Holmes 0.8.19a* 0,310 7,820 187,970
Chezzz 1.0.2 0,341 7,952 202,411
Beaches 1.5 0,511 13,119 291,079
Holmes 0.8.19b 0,500 12,408 297,998
Holmes 0.8.19a2 0,510 12,578 305,458
Aldebaran 0.7.0 0,510 10,560 306,890
Greko 2.05a 0,600 13,400 324,000
Frenzee 140 0,680 16,280 433,590
Gaviota 0.32 1,090 25,600 645,340

results on AMD K6/2-450

Andreas
I just re-ran some of the faster ones on my system.
Apparently bitboards don't do much better here, actually a bit worse!
But Delfi really is fast, faster than Movei the normal chess engine version!

program perft 4 perft 5 perft 6
movei *perft* 0.01 0.24 5.90
delfi 0.0 0.23 5.97
movei 0.02 0.26 6.72
yace 0.02 0.59 13.45
pepito 0.05 0.93 22.22
sjeng 0.04 0.98 24.23
Greko 0.1 2.5 63.8
frenzee *hash* 0.09 1.20 17.90
frenzee 140 0.13 3.05 79.14

I would like to see Yace with hash, so if you read this Dieter, could you give us the numbers for Yace compared to Movei or Delfi? :)
-S.
Sune Fischer
 

Re: Perft

Postby Uri Blass » 18 Feb 2003, 22:22

Geschrieben von: / Posted by: Uri Blass at 18 February 2003 22:22:20:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Sune Fischer at 18 February 2003 22:17:33:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.
I just re-ran some of the faster ones on my system.
Apparently bitboards don't do much better here, actually a bit worse!
But Delfi really is fast, faster than Movei the normal chess engine version!

program perft 4 perft 5 perft 6
movei *perft* 0.01 0.24 5.90
Did you use the public perft of Movei or the faster version that I sent you some days ago?
Uri
Uri Blass
 

Re: Perft

Postby Andreas Herrmann » 18 Feb 2003, 22:28

Geschrieben von: / Posted by: Andreas Herrmann at 18 February 2003 22:28:11:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Sune Fischer at 18 February 2003 22:17:33:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.
I just re-ran some of the faster ones on my system.
Apparently bitboards don't do much better here, actually a bit worse!
But Delfi really is fast, faster than Movei the normal chess engine version!

program perft 4 perft 5 perft 6
movei *perft* 0.01 0.24 5.90
delfi 0.0 0.23 5.97
movei 0.02 0.26 6.72
yace 0.02 0.59 13.45
pepito 0.05 0.93 22.22
sjeng 0.04 0.98 24.23
Greko 0.1 2.5 63.8
frenzee *hash* 0.09 1.20 17.90
frenzee 140 0.13 3.05 79.14

I would like to see Yace with hash, so if you read this Dieter, could you give us the numbers for Yace compared to Movei or Delfi? :)
Hi Sune,
Dieter is tomorrow also participating in Paderborn at the IPCCC. So i think he can't read it before Sunday evening. If i don't forget it, i will ask him tomorrow.
Andreas
Andreas Herrmann
 

Re: Perft

Postby Sune Fischer » 18 Feb 2003, 22:28

Geschrieben von: / Posted by: Sune Fischer at 18 February 2003 22:28:51:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Uri Blass at 18 February 2003 22:22:20:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.
I just re-ran some of the faster ones on my system.
Apparently bitboards don't do much better here, actually a bit worse!
But Delfi really is fast, faster than Movei the normal chess engine version!

program perft 4 perft 5 perft 6
movei *perft* 0.01 0.24 5.90
Did you use the public perft of Movei or the faster version that I sent you some days ago?
Uri
The public version. I didn't receive one from you, did you send it to ruleren@yahoo.com?
It has been my temporary adress since I experience a crash on my old system. I had to reinstall everything, buy new hardware etc., it was just before CCT-5. In the process I lost the password to my mail server and I haven't been around to contact the system operators.
Please resend it :)
-S.
Sune Fischer
 

Re: Perft

Postby Sune Fischer » 18 Feb 2003, 22:33

Geschrieben von: / Posted by: Sune Fischer at 18 February 2003 22:33:20:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Andreas Herrmann at 18 February 2003 22:28:11:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.
I just re-ran some of the faster ones on my system.
Apparently bitboards don't do much better here, actually a bit worse!
But Delfi really is fast, faster than Movei the normal chess engine version!

program perft 4 perft 5 perft 6
movei *perft* 0.01 0.24 5.90
delfi 0.0 0.23 5.97
movei 0.02 0.26 6.72
yace 0.02 0.59 13.45
pepito 0.05 0.93 22.22
sjeng 0.04 0.98 24.23
Greko 0.1 2.5 63.8
frenzee *hash* 0.09 1.20 17.90
frenzee 140 0.13 3.05 79.14

I would like to see Yace with hash, so if you read this Dieter, could you give us the numbers for Yace compared to Movei or Delfi? :)
Hi Sune,
Dieter is tomorrow also participating in Paderborn at the IPCCC. So i think he can't read it before Sunday evening. If i don't forget it, i will ask him tomorrow.
Andreas
Okay, no hurry :)
wish him luck! :)
-S.
Sune Fischer
 

Re: Perft

Postby Claudio Della Corte » 18 Feb 2003, 22:38

Geschrieben von: / Posted by: Claudio Della Corte at 18 February 2003 22:38:10:
Als Antwort auf: / In reply to: Perft geschrieben von: / posted by: Andreas Herrmann at 18 February 2003 20:55:10:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Frenzee 140 0,680 16,280 433,590
Gaviota 0.32 1,090 25,600 645,340
[...]
I don't think these results are that important. Many engines use pseudomoves and later check the legality ONLY of the moves to be actually played. These engines are penalized in the perft because ALL the moves have to be checked. Many other engines, instead, just generate the legal moves and so their relative perft performance is swelled.
OTOH, I of course agree on the fact that the perft is important to check the correctness of the generator.
Regards,
Claudio
Claudio Della Corte
 

Re: Perft

Postby Uri Blass » 18 Feb 2003, 22:42

Geschrieben von: / Posted by: Uri Blass at 18 February 2003 22:42:38:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Sune Fischer at 18 February 2003 22:28:51:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.
I just re-ran some of the faster ones on my system.
Apparently bitboards don't do much better here, actually a bit worse!
But Delfi really is fast, faster than Movei the normal chess engine version!

program perft 4 perft 5 perft 6
movei *perft* 0.01 0.24 5.90
Did you use the public perft of Movei or the faster version that I sent you some days ago?
Uri
The public version. I didn't receive one from you, did you send it to ruleren@yahoo.com?
It has been my temporary adress since I experience a crash on my old system. I had to reinstall everything, buy new hardware etc., it was just before CCT-5. In the process I lost the password to my mail server and I haven't been around to contact the system operators.
Please resend it :)
-S.
I sent it to another address that I sent you a previous email.
I will resend it to the email that you give here.
Uri
Uri Blass
 

Re: Perft

Postby Fabio Cavicchio » 18 Feb 2003, 22:57

Geschrieben von: / Posted by: Fabio Cavicchio at 18 February 2003 22:57:38:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Andreas Herrmann at 18 February 2003 22:03:46:
Hello Fabio,
do you use inline assember in your move generator? What a
board presentation do you use (bitboard,8x8,10x12 or
something like Uri)?
Andreas
Hello, I use a 8x8 *and* a 12x12 at the same time. Since many bitboarders use 4 rotated bitboards at a time why cannot I use two array of bytes ?!
The move generator is written in Pascal except the King and Knights moves, which are written in assembly, but only for joy..
Here is the code, please note that it analyzes a 12x12 board but produces 8x8 moves (eg: 12 bit moves, yyyyyyxxxxxxb)


function GenerateKnight12(pos12,color:integer&#59; pcurrmove:pointer):pointer&#59;
asm
  push esi
  mov esi, eax
  push edi
  mov edi, ecx
  push ebx
  mov eax, [edi]
  xor ebx, ebx
  mov ecx, eax
  test byte ptr [esi+10], dl
  setz bl
  add ecx, 6
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi-10], dl
  setz bl
  sub ecx, 6
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi+14], dl
  setz bl
  add ecx, 10
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi-14], dl
  setz bl
  sub ecx, 10
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi+23], dl
  setz bl
  add ecx, 15
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi-23], dl
  setz bl
  sub ecx, 15
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi+25], dl
  setz bl
  add ecx, 17
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  mov ecx, eax
  test byte ptr [esi-25], dl
  setz bl
  sub ecx, 17
  mov dword ptr [edi], ecx
  lea edi, [edi + ebx*4]
  pop ebx
  mov eax, edi
  pop edi
  pop esi
end&#59;


The king is almost identical.
Hi,
Fabio.
Fabio Cavicchio
 

Re: Perft

Postby Andreas Herrmann » 18 Feb 2003, 23:01

Geschrieben von: / Posted by: Andreas Herrmann at 18 February 2003 23:01:37:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Claudio Della Corte at 18 February 2003 22:38:10:
I have found a few more engines, which have perft implemented.
Very impressive is also Delfi 4.0 (written in Delphi). So it must be possible to write a fast move generator in Delphi too. I'm now thinking of rewriting Holmes completely from the scratch after the IPCCC. And i will do much more work on the move generator.

perft 4 perft 5 perft 6
Movei 0.07.99 0,080 1,763 40,809
Delfi 4.0 0,091 1,903 48,139
Frenzee 140 0,680 16,280 433,590
Gaviota 0.32 1,090 25,600 645,340
[...]
I don't think these results are that important. Many engines use pseudomoves and later check the legality ONLY of the moves to be actually played. These engines are penalized in the perft because ALL the moves have to be checked. Many other engines, instead, just generate the legal moves and so their relative perft performance is swelled.
OTOH, I of course agree on the fact that the perft is important to check the correctness of the generator.
Regards,
Claudio
yes i know. Holmes has also a pseudolegal move generator (10x12 board presentation). I know only Movei and RDChess whith legal move generator implemented. Perhaps there are some more engines with a legal move generator.
Andreas
Andreas Herrmann
 

Re: Perft

Postby Andreas Herrmann » 18 Feb 2003, 23:14

Geschrieben von: / Posted by: Andreas Herrmann at 18 February 2003 23:14:44:
Als Antwort auf: / In reply to: Re: Perft geschrieben von: / posted by: Fabio Cavicchio at 18 February 2003 22:57:38:
Hello Fabio,
do you use inline assember in your move generator? What a
board presentation do you use (bitboard,8x8,10x12 or
something like Uri)?
Andreas
Hello, I use a 8x8 *and* a 12x12 at the same time. Since many bitboarders use 4 rotated bitboards at a time why cannot I use two array of bytes ?!
The move generator is written in Pascal except the King and Knights moves, which are written in assembly, but only for joy..
Here is the code, please note that it analyzes a 12x12 board but produces 8x8 moves (eg: 12 bit moves, yyyyyyxxxxxxb)
[snip]

Hi Fabio,
thanks for your answer. Another question: Are you generating only legal moves or also the pseudolegal moves. If you generate only legal moves, this would explain me your second array board. Or has the second (8x8) array, another reason?
Andreas
Andreas Herrmann
 

Next

Return to Archive (Old Parsimony Forum)

Who is online

Users browsing this forum: No registered users and 5 guests

cron