More memory bandwidth testing

From: Brian Whitney (UCSD.EDU!celit!fpssun.fps.com!keeper.fps.COM!keeper)
Date: Wed Oct 02 1991 - 11:39:10 CDT


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

keeper@fps.com



This archive was generated by hypermail 2b29 : Tue Apr 18 2000 - 05:23:01 CDT