Author: Matthew Hull
Date: 20:26:15 03/18/03
Go up one level in this thread
On March 18, 2003 at 22:47:12, Brian Richardson wrote:
>On March 18, 2003 at 20:27:12, Matthew Hull wrote:
>
>>On March 18, 2003 at 18:14:02, Brian Richardson wrote:
>>
>>>On March 18, 2003 at 18:09:52, Robert Hyatt wrote:
>>>
>>>>On March 18, 2003 at 17:47:49, Tom Kerrigan wrote:
>>>>
>>>>>On March 18, 2003 at 16:57:17, Brian Richardson wrote:
>>>>>
>>>>>>I have a dual Itanium2 1GHz system. Perhaps you forgot my earlier post.
>>>>>>With the optimizing compilers (tried both Intel and Microsoft), it runs
>>>>>>Tinker at about 2GHz Pentium speed (x86 binary code at only 30%).
>>>>>>
>>>>>>Has anyone been able to reproduce your (Eugene's?) results showing MUCH faster
>>>>>>Itanium2 performance?
>>>>>
>>>>>*sigh* Like I've always said, Crafty is not your typical chess program.
>>>>>
>>>>>-Tom
>>>>
>>>>
>>>>There we agree. Itanium is all about moving data around in large quantities.
>>>>32 bit programs won't necessarily benefit at all, and may well be a lot slower
>>>>in fact...
>>>>
>>>>However, this is also true of many other machines. Many folks drop their
>>>>favorite
>>>>program on a Cray expecting blinding performance and don't get it, because they
>>>>can't
>>>>use the vector hardware.
>>>
>>>Of course, I ran both Crafty and Tinker (also bitboard based).
>>>The results were the same. I even tried a small hash table size
>>>to fit all of Tinker in the 3MB cache...it sped things up about 10%,
>>>but still way below fast 32bit Intel and AMD CPUs.
>>
>>
>>Did you tweak the "defines" in Makefile and chess.h and utility.c? You must
>>tell the code that the machine can do real 64 bits, not just longlong.
>>
>>Matt
>
>No, I think that should be up to the compiler.
>"__int64" is "real" 64 bits. How it is implemented is up to the compiler.
Somewhere you must define "HAS_64BITS". Otherwise the 32 bit workarounds get
included instead of the 64 bit stuff.
If you look at the Alpha target in Makefile (Alpha is a true 64 bit machine), it
sets "target=ALPHA". Then in chess.h you find the following:
#if defined(ALPHA)
# define HAS_64BITS /* machine has 64-bit integers / operators */
# undef HAS_LONGLONG /* machine has 32-bit/64-bit integers */
# define UNIX /* system is unix-based */
#endif
The Makefile sets all this up with specific targets. There is no target in
Makefile for Itanium. You could start by cloning the "Generic" target in and
adding a "target=ITANIUM" to that section. Make sure the Itanium target
directive is inserted _before_ the generic target. It might look like this:
[I'm assuming linux, but you can make it whatever you want]
linux-itanium:
$(MAKE) target=ITANIUM \
CC=gcc CXX=g++ \
CXFLAGS=$(CFLAGS) \
LDFLAGS=$(LDFLAGS) \
crafty-make
Then you would need to modify chess.h to include the following
#if defined(ITANIUM)
# define HAS_64BITS /* machine has 64-bit integers / operators */
# undef HAS_LONGLONG /* machine has 32-bit/64-bit integers */
# define UNIX /* system is unix-based */
#endif
Assuming of course that it's Linux (define UNIX).
Also some logic in utility.c probably needs to be changed. There is a section
that looks like this:
# if !defined(LINUX) && !defined(ALPHA) && !defined(HP) && !defined(CRAY1) && !
defined(FreeBSD) && !defined(NetBSD) && !defined(__EMX__)
You would tack on the ITANIUM check so it would look like this:
# if !defined(LINUX) && !defined(ALPHA) && !defined(HP) && !defined(CRAY1) && !
defined(FreeBSD) && !defined(NetBSD) && !defined(__EMX__) && !defined(ITANIUM)
This prevents some bogus includes that would break the compile under Linux.
Now you are ready for a bargain basement compile.
make linux-itanium
If that works, then run "bench".
Next try adding some of the optimizations that the other targets use like
-DCOMPACT_ATTACKS or CFLAGS like -O2, etc. and run bench again.
The bottom line is that HAS_64BITS needs to be defined, otherwise the
made-for-32-bit-machine code segements will get compiled instead of the 64 bit
ones.
Hope that helps,
Matt
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.