Page 1 of 1

Which compiler to use?

PostPosted: 27 Mar 2008, 17:12
by Volker Pittlik
Re-installing all the engines on my computer I started to compile them with gcc, usually with -O3 optimization. It is well known that the Intel compiler makes faster executables. I have tested it with Fruit, Scorpio and Glaurung and found that the executables are ~25% faster (in nps) than those made with gcc.

It can be expected that the faster executables perform better and I a short test I found:

Code: Select all
Rank Name                  Elo    +    - games score oppo. draws
   1 Spike 1.2 Turin       179   90   85    40   66%    64   23%
   2 Fruit 05/11/03        166   86   82    40   65%    64   30%
   3 Glaurung 2.0.1        138   84   81    40   61%    64   33%
   4 Scorpio 2.0 Intel      82   39   39   200   62%   -13   30%
   5 Ruffian 2.1.0          74   83   82    40   53%    64   30%
   6 Scorpio 2.0 gcc        46   40   40   200   57%   -13   22%
   7 Yace Paderborn          3   84   87    40   41%    64   23%
   8 Sloppy020-0.2.0       -10   81   84    40   39%    64   33%
   9 Arasan 10.3 (1 cpu)   -28   83   87    40   36%    64   28%
  10 Crafty-22.0           -83   79   85    40   26%    64   43%
  11 Phalanx XXII Reborn  -259  101  129    40   11%    64   13%
  12 Xpdnt 080209         -309  110  151    40    9%    64    8%


Most of the engines have been compiled with gcc. Scorpio has been compiled with both compilers. And I don't know how Spike, Yace and Ruffian have been made.

Spike seems to be too far ahead here (compared to older tests and compared with other lists). Making the profiled Intel executables is time consuming. OTOH faster chess engines are better for obvious reasons.
OTOOH the rating list is possibly "unfair" because older engines have been compiled with older compiler version and are therefore possibly slower.

I guess I will make them as fast as possible. Any opinions?


Volker

Re: Which compiler to use?

PostPosted: 31 Mar 2008, 22:26
by Pradu
Volker Pittlik wrote:...It can be expected that the faster executables perform better...
How many ELO points are the engines better on average with the faster compiles?

Re: Which compiler to use?

PostPosted: 01 Apr 2008, 16:40
by Ron Murawski
Pradu wrote:
Volker Pittlik wrote:...It can be expected that the faster executables perform better...
How many ELO points are the engines better on average with the faster compiles?


The usual estimate is an increase of 60-70 Elo per doubling of speed. Volker's 25% faster compiles should be about 15-17.5 points stronger.

Ron

Re: Which compiler to use?

PostPosted: 01 Apr 2008, 20:55
by Dann Corbit
Volker Pittlik wrote:Re-installing all the engines on my computer I started to compile them with gcc, usually with -O3 optimization. It is well known that the Intel compiler makes faster executables. I have tested it with Fruit, Scorpio and Glaurung and found that the executables are ~25% faster (in nps) than those made with gcc.

It can be expected that the faster executables perform better and I a short test I found:

Code: Select all
Rank Name                  Elo    +    - games score oppo. draws
   1 Spike 1.2 Turin       179   90   85    40   66%    64   23%
   2 Fruit 05/11/03        166   86   82    40   65%    64   30%
   3 Glaurung 2.0.1        138   84   81    40   61%    64   33%
   4 Scorpio 2.0 Intel      82   39   39   200   62%   -13   30%
   5 Ruffian 2.1.0          74   83   82    40   53%    64   30%
   6 Scorpio 2.0 gcc        46   40   40   200   57%   -13   22%
   7 Yace Paderborn          3   84   87    40   41%    64   23%
   8 Sloppy020-0.2.0       -10   81   84    40   39%    64   33%
   9 Arasan 10.3 (1 cpu)   -28   83   87    40   36%    64   28%
  10 Crafty-22.0           -83   79   85    40   26%    64   43%
  11 Phalanx XXII Reborn  -259  101  129    40   11%    64   13%
  12 Xpdnt 080209         -309  110  151    40    9%    64    8%


Most of the engines have been compiled with gcc. Scorpio has been compiled with both compilers. And I don't know how Spike, Yace and Ruffian have been made.

Spike seems to be too far ahead here (compared to older tests and compared with other lists). Making the profiled Intel executables is time consuming. OTOH faster chess engines are better for obvious reasons.
OTOOH the rating list is possibly "unfair" because older engines have been compiled with older compiler version and are therefore possibly slower.

I guess I will make them as fast as possible. Any opinions?


Volker


For engines with open source, I see no problem with recompilation to make them faster. It's an age old tradition with Winboard engines that started over a decade ago.

I remember a few chess engine authors that were using really bad compilers and I made builds for them that were 2-3x faster than their originals and their eyes popped out of their heads.

I guess that a faster build can only make them happy. For those older engines -- one of the costs of closed source is that the engine is frozen in time unless the author maintains it.

Re: Thanks

PostPosted: 03 Apr 2008, 14:11
by Volker Pittlik
Thanks to all for replying. After pondering about it and some more tests I think now the difference in terms of nodes per second is much bigger than in terms of rating points.

Because I do not plan to establish another "official" rating list I can even live with a mix of both compilations. If I had plans to participate in a tournament with money to win I would try to get the fastest thing I could get. To buy faster hardware would have a bigger effect :-).

I guess I will make both version of all the programs and use them depending on the purpose. To beat me a debug version of an average engine on ancient hardware is enough.

Volker