Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: preliminary results round 437: rybka fritz9 fruit2.2.1 togaII.1 spike

Author: Stephen A. Boak

Date: 16:25:22 02/05/06

Go up one level in this thread


On February 05, 2006 at 16:31:22, Joseph Ciarrochi wrote:

>Is it possible for engines to improve their relative strength on faster hardware

Of course (generally speaking).

In general, chess program strength contributed by the hardware comes from speed
of software execution, and any program optimized for speed on specific faster
hardware will thus benefit accordingly (relatively, i.e. better than other
programs not thus optimized), when moved between hardware platforms.

From a programming perspective (chess or other application) there are always
multiple competing resource or application considerations (i.e. design goals or
user measures of success).  For example:

1. Speed (loading and/or execution, RAM, use of cache & registers)
2. Size (permanent storage and/or temporary RAM storage, space required in cache
& registers)
3. Understandability & Maintainability (clear program structures, understandable
variable names, embedded comments).

It is possible to pursue optimization of coding for any one or two of the above,
but always at the cost of one or two of the other measures of success.

EXAMPLES

Seeking to write the fastest executing code will help with Goal#1, but may or
may not help with Goal#2 and will not help with Goal#3.  The fastest possible
codings are usually the most unintelligable, least easily maintainable--since so
many programming tricks are used to achieve optimization for speed that the
likelihood of a human programmer to glance at the code and understand it is
heavily impaired.  The lack of Understandability & Maintainability means it will
be very difficult to make fixes or improvements to the speed optimized code.

Seeking to write the smallest possible code size that can execute a given set of
program instructions will better achieve Goal#2, but it may or may not help with
Goal#1, and will definitely not help with Goal#3.

Seeking to write the most understandable and maintainable program code (Goal #3)
will be adverse to Goal#1 and Goal#2--because clarity to the human programmer
requires a certain amount of unnecessary size (length of code or duplication of
coding portions, or long variable names which are self explanatory at a glance)
to make the code easier to understand and hence maintain--for purpose of fixing
bugs or developing a stronger program.

Also note that programming (coding) is is normally performed in a higher level
language, but is then transformed to a hardware executable code version via use
of a compiler.

Compilers have their strengths and weaknesses (including efficiencies,
deficiencies, even outright bugs).

Coding may be optimized for compilation by a certain compiler.

Compilers may be chosen for how well they optimize their output for performance
on a given hardware platform.

BOTTOM LINE--it is impossible to optimize a given program simultaneously across
all desirable Goals.  Compromises are always made, of necessity.

It is possible to relatively optimize a program for a specific subset
(intentionally chosen or accidentally favored) of those goals.

This means that anytime a user asks for a specific optimization (fastest
possible code for running on XYZ hardware chip), there is theoretically a way to
provide that.  Doesn't mean it is practical to achieve that, doesn't mean it is
cost effective to pursue that, but theoretically there is indeed a way to
optimize the program to accomplish that specific subset of possible goals deemed
most desirable by a specific customer, for that customer's specific hardware (or
target hardware of choice).

Professional programmers may be better able to explain or refine the above
explanation, but that's my top-of-the-head answer, in a nutshell, to your
question.

--Steve






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.