[gambit-list] High-performance compiler options
Bradley Lucier
lucier at math.purdue.edu
Wed Oct 7 14:15:30 EDT 2009
Marc:
At this point, gcc 4.5.0 promises to be able to compile most
Gambit-generated C files at high optimization levels in a "reasonable"
amount of CPU time and memory. So I configured Gambit with
./configure CC='/pkgs/gcc-mainline/bin/gcc -march=core2 -msse4 -O3 -fschedule-insns' --enable-multiple-versions --enable-single-host"
and then I removed by hand the "-O1" compilation options inserted into
the makefiles by the configure script. The version of gcc I used was
heine:~/programs/gambc-v4_5_2-devel> /pkgs/gcc-mainline/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/pkgs/gcc-mainline/bin/gcc
COLLECT_LTO_WRAPPER=/pkgs/gcc-mainline/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../../mainline/configure --enable-checking=release --prefix=/pkgs/gcc-mainline --enable-languages=c --disable-multilib
Thread model: posix
gcc version 4.5.0 20091005 (experimental) [trunk revision 152459] (GCC)
With my quickie benchmark program:
gsi/gsi -e '(define a (time (expt 3 10000000)))(define b (time (* a a)))'
the routine (direct-fft-recursive-4 a table) computed the final direct
(forward) FFT with 2097152 complex elements in 156 ms. This means that
we were getting
> (/ (* 5 2097152 21) .156)
1411544615.3846154
FLOPS (because it takes $5 N \log_2 N$ floating-point operations for an
FFT of size N). So that's 1411 MFLOPS with a 2.33 GHz Core 2 Duo; FFTW
reports about 2200 MFLOPS on a 3.0 GHz Xeon Core Duo using the Intel
compiler icc here:
http://www.fftw.org/speed/CoreDuo-3.0GHz-icc64/
The Xeon has a faster memory bus and is generally faster than the Core 2
Duo clock-per-clock; but just the ratio of CPU speeds would give a rate
of
> (* 1411 (/ 3.0 2.33))
1816.7381974248929
predicted MFLOPS for Gambit.
I'm not going to get into a slanging match about gcc versus icc, but
overall this looks pretty damn good.
Brad
More information about the Gambit-list
mailing list