Code: Cray C90 c90start.f Comment: Only the "C90" comment marks need to be removed for Watfor77, Cont: "n=500" to "n=32" and "real" to "real*8" for non-timing variables. Compiler Directive "C$S" for extra CMS Watfor77 statements executed Cont: over 30000 default is C$S=300000 Compiler directive for extra CMS Watfor77 time is like "C$T=90" program cstart Change: change program name to less than 6 characters parameter(n=500,nn=6,ntime=20) implicit real (a-h,o-z) Change: implicit statement added. real cog(n),fractn(n),box(n,3),t(n),y(n) real s(n),z(n),a(n),b(n),am(n),vm(n),zm(n) real d1(n,n),d2(n,n),d3(n,n),fv(3,n,n) real t1(0:ntime) integer mm(n),kk(n),ll(n) data cutl/6./,cinc/4./,alfa/3.6/,xbar/8./ kt=0 ClockOverHead: first two successive timings are for timer overhead. t1(kt)=second() kt=kt+1 t1(kt)=second() ClockingLoops: by changing the counter, can also time eacht loop. do 5 i=1,n cog(i)=1. fractn(i)=1. t(i)=1. y(i)=1. s(i)=1. z(i)=1. a(i)=1. b(i)=1. mm(i)=1 kk(i)=1 ll(i)=1 do 5 j=1,3 5 box(i,j)=1.5*j*i/(1.+n) do 6 i=1,n do 6 j=1,n d1(i,j)=12.5 d2(i,j)=12.5 6 d3(i,j)=14.5 do 10 i=1,n 10 y(i)=t(i)+s(i) do 20 m=1,n s(m)=a(m)*m 20 t(m)=y(m)+alfa+2.7 do 30 i=1,n cog(i)=fractn(i)/6. 30 mm(i)=kk(i)*ll(i)/4 k=1 do 50 i=1,n k=k+2 cog(i)=cutl+(i-1)*cinc dev=cog(i)+alfa-xbar do 50 j=1,3 box(i,j)=box(i,j)+0.25 50 continue do 60 i=1,n do 60 j=1,n do 60 k=1,n d1(i,j)=d1(i,j)+d2(i,j)+d3(i,j) do 60 l=1,5 60 d3(i,l)=d2(i,l)*d1(i,l) nd=(n-1)/(nn-1) n2=(n+1)/2 do 70 i=1,n do 70 j=1,3 70 t(i)=t(i)-box(i,j) do 80 i=2,n a(i)=b(i)*box(i,1) z(i)=t(i)*z(i-1)+cog(i) 80 continue do 90 i=4,n-2 b(i)=s(i-3) s(i)=y(i) cog(i)=b(i)*cutl 90 cog(i+2)=y(i)*xbar l=1 100 y(l)=t(l)*s(l) l=l+2 if(l.le.n)go to 100 sm=0 do 110 i=1,n 110 sm=sm+sqrt(1.+exp(-0.24*i)) do 120 i=1,n tm=1+exp(-0.23*i**2)+sin(0.26*i+6) 120 am(i)=0.592*tm/(1+tm**2) do 130 i=1,n 130 vm(i)=fm(am(i)) do 140 i=1,3 do 140 j=1,n do 140 k=1,n fv(i,j,k)=0.03*box(j,i)*box(k,4-i)/(1+0.34*box(j,i)) 140 continue do 150 i=1,n call sub(n,am,vm,zm) 150 continue kt=kt+1 t1(kt)=second() Clock: Total Time less Overhead: tcpu=t1(kt)-t1(1)-(t1(1)-t1(0)) write(6,106) tcpu 106 format(1x,' tcpu=',e12.4,' seconds') Change: Extra output statements: write(6,66) ' a(1:nn)',(a(i),i=1,nn) write(6,66) ' am(1:nn)',(am(i),i=1,nn) write(6,66) ' b(1:nn)',(b(i),i=1,nn) write(6,66) ' b(2:n:d)',(b(i),i=2,n,nd) write(6,66) ' box(i,2)',(box(i,2),i=1,n,nd) write(6,66) ' cog(2:n)',(cog(i),i=2,n,nd) write(6,66) ' dev',dev write(6,66) ' d1(1,j)',(d1(1,j),j=1,n,nd) write(6,66) ' d1(n2,j)',(d1(n2,j),j=1,n,nd) write(6,66) ' d1(n,j)',(d1(n,j),j=1,n,nd) write(6,66) ' d1(i,1)',(d1(i,1),i=1,n,nd) write(6,66) ' d1(i,n2)',(d1(i,n2),i=1,n,nd) write(6,66) ' d1(i,n)',(d1(i,n),i=1,n,nd) write(6,66) ' d2(n2,j)',(d2(n2,j),j=1,n,nd) write(6,66) ' d3(i,1)',(d3(i,1),i=1,n,nd) write(6,66) ' d3(i,n2)',(d3(i,n2),i=1,n,nd) write(6,66) ' d3(i,n)',(d3(i,n),i=1,n,nd) write(6,66) ' d3(1,j)',(d3(1,j),j=1,n,nd) write(6,66) ' d3(n2,j)',(d3(n2,j),j=1,n,nd) write(6,66) ' d3(n,j)',(d3(n,j),j=1,n,nd) write(6,66) ' fractn(i)',(fractn(i),i=1,n,nd) write(6,66) 'fv(1,n2,k)',(fv(1,n2,k),k=1,n,nd) write(6,66) 'fv(3,n2,k)',(fv(3,n2,k),k=1,n,nd) write(6,66) 'fv(1,k,n2)',(fv(1,k,n2),k=1,n,nd) write(6,66) 'fv(3,k,n2)',(fv(3,k,n2),k=1,n,nd) write(6,67) ' k',k write(6,67) ' kk(1:nn)',(kk(i),i=1,nn) write(6,67) ' ll(1:nn)',(ll(i),i=1,nn) write(6,67) ' mm(1:nn)',(mm(i),i=1,nn) write(6,66) ' s(1:nn)',(s(i),i=1,nn) write(6,66) ' s(2:n:d)',(s(i),i=2,n,nd) write(6,66) ' sm',sm write(6,66) ' t(1:n:d)',(t(i),i=1,n,nd) write(6,66) ' tm',tm write(6,66) ' vm(1:nn)',(vm(i),i=1,nn) write(6,66) ' y(1:n:d)',(y(i),i=1,n,nd) write(6,66) ' z(1:n:d)',(z(i),i=1,n,nd) write(6,66) ' zm(1:nn)',(zm(i),i=1,nn) 66 format(1x,a,':',10e11.3) 67 format(1x,a,':',10i11) stop end function fm(x) implicit real (a-h,o-z) fm=0.592*x*(17.28-x)+48.67 return end subroutine sub(n,a,v,z) real a(n),v(n),z(n) do 1 i=1,n if(a(i).gt.v(i)) then z(i)=a(i) else z(i)=a(i)+2.55*v(i) endif 1 continue return end C90 function second() C90Change: add this timer subroutine C90Code: substitute for intrinsic second timers: second in UNICOS C90Caution: remove or comment out this subroutine for NCSA CRAYS C90 real t(3) C90 t(1)=0 C90Comment: cpsec is the IMSL timer on CMS. C90 t(1)=cpsec() C90Comment: timer gives no system time. C90 t(2)=0 C90 t(3)=t(1)+t(2) C90 second=t(1) C90 return C90 end