Hi,
I have found another interesting thing compilers can do to your
new test code and a simple workaround for it.
For some reason (I need to figure out what the compiler did) our
(FPS) compiler interchanged the 60 loop and invalidated the
timings generated. I saw megabytes beyond what the machine is
capable of achieving. So I modified the code to look like this
DO 60 k = 1,ntimes
call dummy2(a,b,c)
t = second(t0)
DO 20 j = 1,n
c(j) = a(j)
20 CONTINUE
t = second(t0) - t
times(1,k) = t
call dummy2(a,b,c)
t = second(t0)
DO 30 j = 1,n
c(j) = 3.0D0*a(j)
30 CONTINUE
t = second(t0) - t
times(2,k) = t
call dummy2(a,b,c)
t = second(t0)
DO 40 j = 1,n
c(j) = a(j) + b(j)
40 CONTINUE
t = second(t0) - t
times(3,k) = t
call dummy2(a,b,c)
t = second(t0)
DO 50 j = 1,n
c(j) = a(j) + 3.0D0*b(j)
50 CONTINUE
t = second(t0) - t
times(4,k) = t
60 CONTINUE
where dummy2 is
SUBROUTINE dummy2(q,r,s)
C .. Scalar Arguments ..
DOUBLE PRECISION q,r,s
C ..
RETURN
END
This caused the compiler to assume I messed with a, b, c before each
call and allowed proper execution.
I am still gather data. I am running on about 10 different types of
machines, so I want to make sure the data is reasonable. (And I am
doing this "on my own", while waiting for compiles.)
Brian Whitney
FPS Computing
This archive was generated by hypermail 2b29 : Tue Apr 18 2000 - 05:23:01 CDT