C****************************************************************************** C FILE: arraypad.f C DESCRIPTION: C Demonstrates array padding C****************************************************************************** PROGRAM PAD IMPLICIT NONE INTEGER N PARAMETER (N=256) REAL*8 A(N,N), AA(N+1,N) INTEGER I,J,K integer(8) T1, T2, IRTC C***************************************************************************** C* Initialize Data * C***************************************************************************** DO J=1,N DO I=1,N A(I,J)=1.23 AA(I,J)=A(I,J) END DO END DO C***************************************************************************** C* Untuned * C***************************************************************************** T1 = IRTC() DO I=1,N DO J=1,N DO K=1,N A(I,J)=A(I,J)+A(J,K)-A(K,I) END DO END DO END DO T2 = IRTC() write(*,*)'Untuned version took', (T2-T1)/1000000, 'msec' C***************************************************************************** C* Tuned * C***************************************************************************** T1 = IRTC() DO I=1,N DO J=1,N DO K=1,N AA(I,J)=AA(I,J)+AA(J,K)-AA(K,I) END DO END DO END DO T2 = IRTC() write(*,*)'Tuned version took', (T2-T1)/1000000, 'msec' C Need to actually use the results of the calculations or else the C optimizing compiler may just skip doing them...so we'll just C print them. This will force the optimizer to actually do the work. print *, ' ' print *, 'Ignore this next line of output' PRINT *, A(1,1),A(128,128),A(256,256) PRINT *, AA(1,1),AA(128,128),AA(256,256) END