Picking the wrong options
Jul. 19th, 2007 05:35 pm
itanic> efc check.f90 ; time ./a.out
check.f90(23) : (col. 0) remark: LOOP WAS SOFTWARE-PIPELINED.
check.f90(23) : (col. 0) remark: LOOP WAS SOFTWARE-PIPELINED.
real 0m2.042s
user 0m2.032s
sys 0m0.009s
itanic> efc -check bounds check.f90 ; time ./a.out
real 0m19.830s
user 0m19.049s
sys 0m0.010s
itanic> efc -O0 check.f90 ; time ./a.out
real 1m3.465s
user 1m3.364s
sys 0m0.008s
itanic>
For comparison, here are the results of the same set of tests on a modern 3.5GHz Xeon using a very similar compiler and set of compiler options:
xeon> ifort check.f90 ; time ./a.out
real 0m1.476s
user 0m1.474s
sys 0m0.001s
xeon> ifort -check bounds check.f90 ; time ./a.out
real 0m1.681s
user 0m1.676s
sys 0m0.003s
xeon> ifort -O0 check.f90 ; time ./a.out
real 0m5.016s
user 0m4.962s
sys 0m0.004s
xeon>
Just goes to show how heavily the Itanium, with its deep pipelines and oh-so-clever EPIC instruction set, depends on the compiler to do the Right Thing and just how painful life can be if you accidentally leave bounds checking enabled in a production binary.
no subject
Date: 2007-07-19 09:25 pm (UTC)Welcome to my world.
( But Opterons need good compilers too ).