A Gothic tale....part I

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.

Re: A Gothic incident.

Postby Sune Fischer » 19 Apr 2004, 10:54

Geschrieben von:/Posted by: Sune Fischer at 19 April 2004 11:54:29:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 19 April 2004 10:11:13:
Should Eugene ever find the time to convert them to bitbases they
might contribute a bit more to strength. In that case you could be "forced" to
use them, just to even the playing field?
It's a nobrainer for me, I would always take the Elo! :)
C'mon, C is just lame when you can do C plus plus so much more!
;)
Hehe, my perft.o is 69 kb, game.o is 105 kb and xboard.o is 110 kb.
Possibly, but I would be reluctant to do so. You might be right that bitbases
would contribute more to playing strength than tablebases, but I still think
it is unwise to use them before your engine is able to play near-perfectly
in basic endgames on its own. Writing accurate evaluation functions for
basic endgames is tricky and time-consuming, but I think it is worth the
effort because it could help you learn principles which are useful even in
more complicated endgames.
So would I, if my engine were a few hundred Elo points stronger. But down
at Gothmog's level, a 10 Elo increase simply isn't that much, and can be
easily achieved without bloating the binary.
Yeah, C is definitely lame. But what can a poor man with an allergy against
C++ do if he wants his engine to be easily portable over a wide range of
platforms?
I really don't understand how your perft.o could be that big. Does it contain
only the perft() function, or lots of other code as well? I don't have perft
in Gothmog, but in Glaurung (my new engine), perft.o is 1084 bytes. The
code looks like this:

#include "glaurung.h"
int perft(int depth) {
move_t m;
int result = 0;
if(depth==0) return 1;

for(m=pick_move(); m; m=pick_move()) {
make_move(m);
if(!in_check(XSide)) result += perft(depth-1);
unmake_move(m);
}
return result;
}
There is no conflict between using TBs and developing endgame code,
I actually use the TBs to verify some of my recognizers.
You also need good knowledge all the way to the leaves and probing TBs out
there is too expensive.
Well perhaps you are lucky.
I do not easily find 10 Elo, it's more than a months work.
What platform is C++ not portable to?
Aside perhaps from cell phones and pocket pcs.
I have many versions, some use a hash and some are full of tables for
fast debugging.
Here is the one equivalent to yours:

void Board::PerftDeep(uint d) {
int nm = GenLegalMoves(ply);
Save();
if (d == 1) NodeCount[ply+1] += nm;
else {
Move *pml = t->pml[ply];
int i = -1;
while (++iTord
Sune Fischer
 

Re: A Gothic incident.

Postby Fabien Letouzey » 19 Apr 2004, 11:13

Geschrieben von:/Posted by: Fabien Letouzey at 19 April 2004 12:13:38:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 17:02:11:

Maybe there are some compiler switches to decrease its size, perhaps I'm inlining too aggressively?
Eugene uses templates. That's the main reason why the code is so large.
Fabien.
Fabien Letouzey
 

Re: A Gothic incident.

Postby Tord Romstad » 19 Apr 2004, 11:18

Geschrieben von:/Posted by: Tord Romstad at 19 April 2004 12:18:26:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 19 April 2004 11:54:29:
There is no conflict between using TBs and developing endgame code,
I actually use the TBs to verify some of my recognizers.
You also need good knowledge all the way to the leaves and probing TBs out
there is too expensive.
It's a nobrainer for me, I would always take the Elo! :)
C'mon, C is just lame when you can do C plus plus so much more!
;)
So would I, if my engine were a few hundred Elo points stronger. But down
at Gothmog's level, a 10 Elo increase simply isn't that much, and can be
easily achieved without bloating the binary.
Yeah, C is definitely lame. But what can a poor man with an allergy against
C++ do if he wants his engine to be easily portable over a wide range of
platforms?
Well perhaps you are lucky.
I do not easily find 10 Elo, it's more than a months work.
What platform is C++ not portable to?
Aside perhaps from cell phones and pocket pcs.
Not in theory, but in practice I find that it is too easy to be lazy and
avoid all the hard work when it is possible to just use TBs.
Yes, this is not a bad idea.
I currently probe only when the remaining depth is at least 4 plies.
Yes, it takes a lot of time, but most of it is just testing.
You are right that C++ should be portable to most platforms, but as mentioned
I have a very strong allergy against this language. Besides, I think cell
phones and handheld computers will soon be the most interesting platforms to
develop for (in my eyes, of course).
Tord
Tord Romstad
 

Re: A Gothic tale....part I

Postby Dann Corbit » 19 Apr 2004, 20:26

Geschrieben von:/Posted by: Dann Corbit at 19 April 2004 21:26:31:
Als Antwort auf:/In reply to: A Gothic tale....part I geschrieben von:/posted by: Roger Brown at 18 April 2004 07:54:46:
Hello all (particularly Tord)
Analysis from C:\Program Files\Arena\Tactics\Engine Tests\wacnew.epd
Analyzing engine: Gothmog
255 of 300 matching moves
4/16/2004 6:58:09 AM, Total time: 12:45:52 AM Rated time: 11:10 = 670 Seconds
Analyzing engine: Gothmog 0.48
256 of 300 matching moves
4/16/2004 7:44:16 AM, Total time: 1:32:00 AM Rated time: 14:10 = 850 Seconds
[snip]
You have something setup wrong here. 255/300 is catastrophically bad. That is what you would expect from a below average engine on a 300 MHz machine at 5 seconds per position.



my ftp site {remove http:// unless you like error messages}
Dann Corbit
 

Re: A Gothic tale....part I

Postby Roger Brown » 20 Apr 2004, 02:24

Geschrieben von:/Posted by: Roger Brown at 20 April 2004 03:24:40:
Als Antwort auf:/In reply to: Re: A Gothic tale....part I geschrieben von:/posted by: Dann Corbit at 19 April 2004 21:26:31:
You have something setup wrong here. 255/300 is catastrophically bad. That is what you would expect from a below average engine on a 300 MHz machine at 5 seconds per position.

Hello Dann,
I will have a look at the machine later. First Dieter (Yace) then you. I am using Arena because of its ability to use several engines to process EPD. I am going to try Yace using Yace's on-board epd processor and re-test Gothmog.
I am careful about other processes using the CPU but since I usually run these tests overnight then competing programs are not usually an issue.
I am always willing to learn though.
Later.
Roger Brown
 

Previous

Return to Archive (Old Parsimony Forum)

Who is online

Users browsing this forum: No registered users and 33 guests