Computer Chess Club Archives


Search

Terms

Messages

Subject: some compiler experiments

Author: Jon Dart

Date: 21:52:34 07/09/04


I've done some recent testing of Arasan with various
compilers and compile flags, on a couple of different
hardware platforms. The 3 compilers I have access to are
Visual C++ 6.0 with SP5, Visual C++ .NET (via Microsoft's
Visual C++ Toolkit download) and the Intel C++ 8.0 compiler.
I used these two test positions,one in the middle game
and one in the endgame, at 60 seconds per position, 64MB hash:

[D] r3r1k1/pb1n1p2/1p1p1n1p/q1pPpN2/2P4p/2PBPP2/P1Q3PP/1R3RK1 w - -
[D] 4R3/1k4p1/8/pp4P1/8/3K4/1b5P/8 w - - bm Re2

I tested with and without /DUSE_ASM, which selects some inline
assembly routines - mostly these use bit scan instructions
instead of table lookups to find next bit set, etc.

These were the compile flags used:

VC++ 6.0: /G6 /Gr /GX /O2 /Op /Ob2
VC++ .NET: /G7 /EHs /EHc /Ox /Gr /Oy /Ob2
Intel 8.0: /G7 /Qvc6 /Ox /Gr /Oy /Ob2

Note that a few parts of the program are not optimized or
are built with different flags - in particular the tablebase
code is compiled with /Os (optimize for space). But I did
this consistently.

<pre>
AMD 2500+ (Barton) system.

compiler                          middlegame  endgame
Intel C++ 8.0 USE_ASM             403 knps    619 knps
Intel C++ 8.0 no ASM              430 knps    624 knps
Visual C++ 6.0 SP5 USE_ASM        469 knps    680 knps
Visual C++ 6.0 SP5 no ASM         495 knps    752 knps
Visual C++ .NET USE_ASM           487 knps    728 knps
Visual C++ .NET no ASM            571 knps    795 knps

P4 3.06GHz system.
compiler                          middlegame  endgame
Intel C++ 8.0 USE_ASM             500 knps    793 knps
Intel C++ 8.0 no ASM              484 knps    777 knps
Visual C++ 6.0 SP5 USE_ASM        513 knps    803 knps
Visual C++ 6.0 SP5 no ASM         517 knps    816 knps
Visual C++ .NET USE_ASM           581 knps    875 knps
Visual C++ .NET no ASM            575 knps    874 knps
</pre>

Generally it was surprising to me that the Intel compiler
gave the worst results, even on Intel hardware. Caveat here:
I may not have found the best optimizations flags for this
compiler, and haven't yet tried the profile-based optimization
or multi-module optimizations this compiler supports. Also note
that inline assembly sometimse gives slightly better results
on the Intel platform but is a great deal worse on the AMD
2500+ (comparing on a AMD64 would be interesting but I don't
have access to that architecture). I don't mean to draw general
conclusions here - these are just the results for my program.

Another puzzle: the Intel compiler .exe files are about 1/2 the
size of the Microsoft C++ .exe files. I have no idea why. I'd
like to get the size of the Microsoft .exes down, so any hints
would be appreciated.

--Jon




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