wine-compatible engines

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: wine-compatible engines

Post by michiguel »

cyberfish wrote:Tried some more engines -

(I am avoiding UCI engines for now)

RattateChess is too weak (at my time control, it's almost 300 elo weaker than my engine), but seems to work fine.
I found a bug on RattateChess. Try changing this line (//MAB etc) in engine.cpp:

Code: Select all

void Engine::calc_best_time()
{
    if(time_fixed)
        time_best_csec = time_fixed * 100;
    else
    {
        int nummoves = (time_mps == 0) ? 30 :
                1+MIN((time_mps - (board.num_moves % time_mps)), 30); // MAB; Changed MAX to MIN, and added 1 
        time_best_csec = time_clock_csec / nummoves + time_inc * 100;
    }
}
I forgot to mention Chispa as Linux engine in this range. Very solid and stable too.

Phalanx is great!
I needed to change the code to improve time management at fast speed. I basically removed some zeros. Search for /*0*/ in this piece of code from levels.c

Code: Select all

															/* MAB: commented out a zero in the next lines */

		if( Flag.ponder ) T2 += T2/8;

		if( Flag.increment==0 && Flag.level==timecontrol )
		{
			if( Time<150/*0*/ ) T2 -= T2/2;
			else if( Time<600/*0*/ ) T2 -= T2/4;
		}

		if( Flag.post && Flag.xboard<2 )
		printf( "    -> soft time limit %g s\n",
			((float)T2) / (float)100 );

		/*** Now, set up the hard limit ***/
		     if( Time < 150/*0*/) Flag.centiseconds = Time/(moves+1)*3;
		else if( Time < 300/*0*/) Flag.centiseconds = Time/(moves+1)*6;
		else if( Time < 600/*0*/) Flag.centiseconds = Time/(moves+1)*12;
		else                  Flag.centiseconds = Time/(moves+1)*18;


As you can see, I struggled to get enough engines at this level that can play fast. I needed to go and deal with the source code of a couple of engines, which I certainly do not like to do.

Miguel

OliThink 5 is too strong, and 4 gives me illegal moves.

Beowolf hangs.

Resp doesn't compile with GCC 4 (too many errors to fix).

gnuchess refuses to make moves this fast...

Witz I decided to skip since I already have Pradu's Buzz and Dirty.

Amundsen runs fine, but is a little weak (~120 elo weaker).



My engine is wayyy stronger than it really is at my testing condition for some reason (Bob's opening positions, 10 secs per 40 moves). Eats Crafty for breakfast :) (probably because Crafty always only uses ~0.5 seconds for some reason).
cyberfish

Re: wine-compatible engines

Post by cyberfish »

Thanks, got it.
cyberfish

Re: wine-compatible engines

Post by cyberfish »

I forgot to mention Chispa as Linux engine in this range. Very solid and stable too.
Thanks. Trying it out right now. So far so good.

I also tried out Gaviota, and it doesn't really work at 4s/40moves. It always only uses ~0.5s (and plays poorly of course).
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: wine-compatible engines

Post by michiguel »

cyberfish wrote:
I forgot to mention Chispa as Linux engine in this range. Very solid and stable too.
Thanks. Trying it out right now. So far so good.

I also tried out Gaviota, and it doesn't really work at 4s/40moves. It always only uses ~0.5s (and plays poorly of course).
You are right, the last version I released it has a huge time "safety net". So, it is no good for super fast games. I forgot that. The version I will release very soon won't have that problem.

Miguel
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: wine-compatible engines

Post by Don »

How strong does it need to be? I have a weak 64 bit linux engine. At 1+1 (1 minute + 1 second) it is about the same strength as Spike 1.2 on linux. I can give you a copy to play with if you want. It doesn't run so hot on 32 bit linux though, it is almost twice as slow and weaker than Spike.

I think you have several options though. Most windows engines run with wine and pretty much at full speed.

cyberfish wrote:I am trying to find engines that I can use to test my engine against, with the main constraint being that they have to run on Linux. Windows is not an option because I don't have a dedicated computer for testing, and so I always run tests in background while I use the computer for other things, and I don't want to be stuck with Windows.

Native Linux engines are few and far between, especially ones that are similar to mine's level, so I thought I would run Windows engines under wine.

The first one I tried was ZCT, and it was perfect. The NPS is similar to what I get on Windows, too. Since it's open source... I guess there is a chance that a native Linux build can be made, but I haven't looked into that, yet.

No such luck since then -

EveAnn kind of runs, but it terribly slow for some reason (takes a few seconds to reach ply 3)

Atak crashes

Neurosis crashes after the first move

Brutus freezes after the first move

Buzz was good (the Buzz_UNIX_x86 version segfaults for some reason, maybe he really meant UNIX not Linux :))

(I got excited by Buzz's success, and thought Dirty might work, too, but it's nowhere to be found online...)

Deuterium seems to be fine, but is very weak at my testing time control (10 seconds / 40 moves)

Any other suggestions? (engines of similar strength, and must support some kind of board setup, since I'm using Bob's openings.epd)

Thanks
cyberfish

Re: wine-compatible engines

Post by cyberfish »

If you are talking about the 2850 ELO spike... that's certainly way too strong :).

My engine is about 2200, or 2300 at 4 seconds (its speciality I guess?....)
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: wine-compatible engines

Post by Don »

cyberfish wrote:If you are talking about the 2850 ELO spike... that's certainly way too strong :).

My engine is about 2200, or 2300 at 4 seconds (its speciality I guess?....)
I guess everything is relative. In my 60+1 tests spike is almost 100 ELO weaker than Toga2 which is roughly the same strength as Glaurung, depending on which version. And of course all these programs are significantly weaker than Rybka, so I consider my program pretty weak.

These are all compiled on on a 64 bit machine except Spike which is a 32 bit program. Fruit is version 2.1 d-791 is version 791 of my program.

Code: Select all

Rank	Player        ELO     +/-	Tme/Gme	Games
1 	Toga2-60-1 	2193.4 	18.4 	118.0 	1517
2 	Fruit-60-1 	2102.4 	17.8 	121.6 	1517
3 	spike-60-1 	2100.0 	17.8 	102.7 	1520
4 	d-791-60-1 	2084.3 	17.8 	117.1 	1517
cyberfish

Re: wine-compatible engines

Post by cyberfish »

I have selected 4 engines (for now) and will test them more thoroughly at my time control (2s/40moves now :D).

I am using ZCT, Xpdnt, Prophet, and Chispa.

I am also using my custom-hacked version of xboard that doesn't print the board (blind alone is not enough), the clocks, doesn't change the taskbar icon (that apparently helped quite a bit), and has no between-game delays (the version I modified didn't have the matchPause option). It also uses almost 0 CPU, meaning I can run 2 ponder-off matches simultaneously on my dual core machine. The regular xboard (from HGM) would take almost 100% of the other core. Games are finished faster, too. 3m19s vs 5m39s for 50 games.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: wine-compatible engines

Post by Don »

cyberfish wrote:I have selected 4 engines (for now) and will test them more thoroughly at my time control (2s/40moves now :D).

I am using ZCT, Xpdnt, Prophet, and Chispa.

I am also using my custom-hacked version of xboard that doesn't print the board (blind alone is not enough), the clocks, doesn't change the taskbar icon (that apparently helped quite a bit), and has no between-game delays (the version I modified didn't have the matchPause option). It also uses almost 0 CPU, meaning I can run 2 ponder-off matches simultaneously on my dual core machine. The regular xboard (from HGM) would take almost 100% of the other core. Games are finished faster, too. 3m19s vs 5m39s for 50 games.
I designed my own tester written in C and it uses libevent and is extremely fast. I can play 3 or 4 games per second at a fast level even on 1 processor. It plays round robins with any number of players and you set how many simultaneous games to play. For instance on a quad processor I set it to 3 or 4. It rates the games and produces error bars too. I produces html output so the results can easily be posted to a web page. It produces pgn files and you can add and remove programs very easily. It's a linux program but probably could be ported to windows without too much trouble. It's configured via a simple configuration file.

I needed something that just worked and then gets out of the way. It is desgined to test UCI programs but I plan to make it also recognize xboard protocol. But it appears you are more interested in xboard programs?
zamar
Posts: 613
Joined: Sun Jan 18, 2009 7:03 am

Re: wine-compatible engines

Post by zamar »

Don wrote:
I designed my own tester written in C and it uses libevent and is extremely fast. I can play 3 or 4 games per second at a fast level even on 1 processor. It plays round robins with any number of players and you set how many simultaneous games to play. For instance on a quad processor I set it to 3 or 4. It rates the games and produces error bars too. I produces html output so the results can easily be posted to a web page. It produces pgn files and you can add and remove programs very easily. It's a linux program but probably could be ported to windows without too much trouble. It's configured via a simple configuration file.

I needed something that just worked and then gets out of the way. It is desgined to test UCI programs but I plan to make it also recognize xboard protocol. But it appears you are more interested in xboard programs?
This looks very interesting... are you planning to publish your work at some point? (I've already my own engine manager in perl, because I also needed something that just works. But it only plays engine-engine matches and doesn't have support for many simultaneous games, and of course has nothing like HTML output :) ).
Joona Kiiski