Computer Chess Club Archives


Search

Terms

Messages

Subject: computer chess tidbits: arena, crafty, intel compiler and pocket pc

Author: Mike Byrne

Date: 15:05:36 05/19/02


I have been away from computer chess for a while and was glad there is still a
large interest in computerchess.  Many thanks to those who wrote the "Arena"
software --  it's nice work and has room for many more improvements.

It is good to see Crafty is  alive and well - the latest version 18.14 is very
solid.  I am able to get 1,000,000 nodes per second using MVC++ 6.0 and the
Intel "plug in" compiler.  However my intel license is the of the demo variety
and will expire in 30 days or so.   The intel compiler does have a nifty option
that uses the
a Profile-guided Optimizations - here's a brief overview:

"
Profile-guided optimizations (PGO) tell the compiler which areas of an
application are most frequently executed. By knowing these areas, the compiler
is able to be more selective in optimizing the application. For example, the use
of PGO often enables the compiler to make better decisions about function
inlining, thereby increasing the effectiveness of interprocedural optimizations.

Instrumented Program
Profile-guided optimization creates an instrumented program from your source
code and special code from the compiler. Each time this instrumented code is
executed, the instrumented program generates a dynamic information file. When
you compile a second time, the dynamic information files are merged into a
summary file. Using the profile information in this file, the compiler attempts
to optimize the execution of the most heavily travelled paths in the program.

Unlike other optimizations, such as those used strictly for size or speed, the
results of IPO and PGO vary. This is due to each program having a different
profile and different opportunities for optimizations. The guidelines provided
here help you determine if you can benefit by using IPO and PGO.

In this version of the IntelĀ® C++ Compiler, PGO is improved in the following
ways:

Register allocation uses the profile information to optimize the location of
spill code.

For indirect function calls, branch prediction is improved by identifying the
most likely targets. With the PentiumĀ® 4 processor's longer pipeline, improved
branch prediction translates to higher performance gains.

The compiler detects and does not vectorize loops that execute only a small
number of iterations, reducing the run time overhead that vectorization might
otherwise add.
"


My fastest compiler options using the Intel were as follows:

CFLAGS   =  /G7 /Gr /O3 /Ob2 /Ot /Oi /Oa /GA /Zm200 /QxW /Qip  /Qprof_gen

G7 & QxW is for Pentium 4, /03 is an aggressive use of optimazitions,

You must then run the program and play a few games then repeat the compliation
process using

CFLAGS   =  /G7 /Gr /O3 /Ob2 /Ot /Oi /Oa /GA /Zm200 /QxW /Qip  /Qprof_use

I gained roughly 10% more nodes with the Intel compiler over MSVC 6- although I
have heard Visual.net is also faster than MSVC 6.

There are now multiple hundreds of free chess programsthat run the winboard or
UCI protocols - that is also very good for computer chessn enthusiasts.

Later this year - Pocket Pc's will be running 400 Mhz CPU's - that will make for
very a solid portable chess machine.

Best wishes to all.

Mike Byrne



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.