加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Fortran中的dtime 和etime 库函数

(2014-05-18 13:44:32)
标签:

fortran

dtime

etime

分类: Fortran

1.4.8 dtime 和 etime:已用的执行时间

这两个函数的返回值都是已用时间(如果为 -1.0,表示出现错误)。返回的时间以秒数表示。

缺省情况下,Fortran 95 使用的 dtime 和 etime 版本使用系统的低精度时钟。该精度是百分之一秒。但是,如果在 Sun OSTM 操作系统实用程序 ptime(1) (/usr/proc/bin/ptime) 下运行程序,则使用高精度时钟。

1.4.8.1 dtime:自上次调用 dtime 后已用时间

对于 dtime,已用时间为:

  • 第一次调用:自开始执行后已用时间

  • 后来调用:自上次调用 dtime 后已用时间

  • 单处理器:CPU 占用的时间

  • 多处理器:所有 CPU 占用时间总和,该数据没有什么用,这时可改用 etime


    注 –

    在并行循环中调用 dtime 会得到不确定的结果,这是因为参与循环的所有线程都共用已用时间计数器。


该函数的调用方式如下所示:

e = dtime( tarray )

tarray

real(2)

输出 

e= -1.0:错误:tarray 值未定义

e≠ -1.0:没有错误,tarray(1) 中存储的是用户时间,tarray(2) 中存储的是系统时间

返回值 

real

输出 

e= -1.0:错误

e≠ -1.0:tarray(1) 与 tarray(2) 之和

 

 

示例:dtime(),单处理器:



demo% cat tdtime.f
       real e, dtime, t(2)
       print *, ’elapsed:’, e, ’, user:’, t(1), ’, sys:’, t(2)
       do i = 1, 10000
        k=k+1
       end do
       e = dtime( t )
       print *, ’elapsed:’, e, ’, user:’, t(1), ’, sys:’, t(2)
       end
demo% f95 tdtime.f
demo% a.out
elapsed: 0.0E+0 , user: 0.0E+0 , sys: 0.0E+0
 elapsed: 0.03 , user: 0.01 , sys: 0.02
demo%

1.4.8.2 etime:自开始执行后已用时间

对于 etime,已用时间为:

  • 单处理器执行调用进程的 CPU 时间

  • 多处理器执行-处理程序时的挂钟时间

如果环境变量 PARALLEL 或 OMP_NUM_THREADS 定义为大于 1 的某个整数值,运行时库就确定程序是在多处理器模式下执行。

该函数的调用方式如下所示:

e = etime( tarray )

tarray

real(2)

输出 

e= -1.0:错误:tarray 值未定义

e≠ -1.0:单处理器:tarray(1) 中存储的是用户时间,tarray(2) 中存储的是系统时间

多处理器:tarray(1) 中存储的是挂钟时间,tarray(2) 中存储的是 0.0

返回值 

real

输出 

e= -1.0:错误

e≠ -1.0:tarray(1) 与 tarray(2) 之和

 

 

请注意,初次调用 etime 时所得结果不准确。它只是使系统时钟开始运转。请勿使用初次调用 etime 返回的值。

示例:etime(),单处理器:



demo% cat tetime.f
       real e, etime, t(2)
       e = etime(t)         !  Startup etime - do not use result
       do i = 1, 10000
        k=k+1
       end do
       e = etime( t )
       print *, ’elapsed:’, e, ’, user:’, t(1), ’, sys:’, t(2)
       end
demo% f95 tetime.f
demo% a.out
elapsed: 0.02 , user: 0.01 , sys: 0.01
demo%

另请参见 times(2) 和《Fortran 编程指南》。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有