下面是一个用于计时 DFT 代码的 Fortran 驱动器程序。
program main interface subroutine dft(x,a,phi,n) real*8 x(n),a(n),phi(n) integer n end subroutine subroutine init(a,n) real*8 a(n) integer n end subroutine subroutine consume(a,b,c) real*8 a(*),b(*),c(*) end subroutine end interface ! Parameters: ! nmax is the problem size. ! nrep is the number of repetitions of the ! problem. This should be chosen so that ! the elapsed time is long enough to give ! sufficient timing resolution. ! cyc is the clock frequency in Hz for the ! processor that the program is to be run on. ! (Can be found from AIX command pmcycles.) integer, parameter :: nmax=1000 integer, parameter :: nrep=100 real*8, parameter :: cyc=4704000000.d0 real*8 x(nmax), a(nmax), phi(nmax) real*8 tx, ty, accum, del(4) intrinsic sin, sqrt real*8 rtc del(4)=0.d0 acc = 0.d0 do k=1,nrep tx=rtc() call init(x,nmax) call dft(x,a,phi,nmax) ty=rtc() call consume(x,a,phi) do j=1,nmax acc = acc + a(j) + phi(j) end do del(4) = del(4) + (ty-tx) end do del(1) = del(4)/real(nmax,8) del(2) = del(1)/real(nrep,8) del(3) = cyc*del(2) print *,'acc=',acc/real(nrep,8),' n=',nmax, & ' r=',nrep, ' a=',del(1),' b=',del(2), & ' c=',del(3),' w=',del(4) end program |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16896827/viewspace-1036479/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16896827/viewspace-1036479/