| 查看: 796 | 回复: 8 | ||||
| 当前主题已经存档。 | ||||
dellus木虫 (职业作家)
|
[交流]
【求助】Fortran中有什么好方法计算CPU时间?【已完结】
|
|||
|
Fortran中SECOND子程序(or function)是怎么用的? 大家有什么好的办法计算CPU时间? 我试过secnds和CPU_Time,好象都有BUG 比如把一个运算放在一个do循环里运行,分别在循环前和循环后记录时间,最后写出时间 如果最后的write语句中加上循环中运行的结果,需要7、8秒,如果只输出时间,只有10(-5)秒 [ Last edited by 余泽成 on 2010-1-27 at 22:20 ] |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有27人回复
所感
已经有3人回复
要不要辞职读博?
已经有7人回复
不自信的我
已经有11人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复

nono2009
超级版主 (文学泰斗)
No gains, no pains.
-

专家经验: +21105 - 应助: 28684 (院士)
- 贵宾: 513.911
- 金币: 2555220
- 散金: 27828
- 红花: 2147
- 沙发: 66666
- 帖子: 1602255
- 在线: 65200.9小时
- 虫号: 827383
- 注册: 2009-08-13
- 性别: GG
- 专业: 工程热物理与能源利用
- 管辖: 科研家筹备委员会
2楼2009-12-17 17:25:03
nono2009
超级版主 (文学泰斗)
No gains, no pains.
-

专家经验: +21105 - 应助: 28684 (院士)
- 贵宾: 513.911
- 金币: 2555220
- 散金: 27828
- 红花: 2147
- 沙发: 66666
- 帖子: 1602255
- 在线: 65200.9小时
- 虫号: 827383
- 注册: 2009-08-13
- 性别: GG
- 专业: 工程热物理与能源利用
- 管辖: 科研家筹备委员会
3楼2009-12-17 18:14:36
nono2009
超级版主 (文学泰斗)
No gains, no pains.
-

专家经验: +21105 - 应助: 28684 (院士)
- 贵宾: 513.911
- 金币: 2555220
- 散金: 27828
- 红花: 2147
- 沙发: 66666
- 帖子: 1602255
- 在线: 65200.9小时
- 虫号: 827383
- 注册: 2009-08-13
- 性别: GG
- 专业: 工程热物理与能源利用
- 管辖: 科研家筹备委员会
从我N年以前的程序中摘了点给你看,也不知行不行
★ ★ ★ ★ ★ ★ ★ ★ ★
波不动(金币+2,VIP+0):感谢应助! 12-17 19:30
dellus(金币+3,VIP+0):谢谢!很热心的版主 12-18 06:16
dellus(金币+4,VIP+0): 12-23 14:05
波不动(金币+2,VIP+0):感谢应助! 12-17 19:30
dellus(金币+3,VIP+0):谢谢!很热心的版主 12-18 06:16
dellus(金币+4,VIP+0): 12-23 14:05
|
... INTEGER(4) int_time0,int_time1 character*8 char_time ! show the starting time of this calculation call TIME(char_time) print *, 'Starting time on the PC is ', char_time ... int_time0=TIME( ) ... int_time1=TIME( ) print *, 'This calculation lasts ',int_time1-int_time0,'(s)' |
4楼2009-12-17 18:19:10
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★ ★ ★ ★ ★ ★
jjdg(金币+2,VIP+0):感谢应助!欢迎新虫! 12-17 18:59
dellus(金币+3,VIP+0):谢谢!试过了,也有BUG 12-18 06:18
dellus(金币+1,VIP+0):3 12-23 14:06
dellus(金币+2,VIP+0): 12-23 14:07
jjdg(金币+2,VIP+0):感谢应助!欢迎新虫! 12-17 18:59
dellus(金币+3,VIP+0):谢谢!试过了,也有BUG 12-18 06:18
dellus(金币+1,VIP+0):3 12-23 14:06
dellus(金币+2,VIP+0): 12-23 14:07
|
http://www.programfan.com/club/showtxt.asp?id=305205 从上面这个地方看到一种方法,用的是system_clock函数 call system_clock(t1) call system_clock(t2) t=t2-t1 单位是微秒。 |
5楼2009-12-17 18:41:46
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
6楼2009-12-17 18:44:17
dellus
木虫 (职业作家)
- 应助: 0 (幼儿园)
- 贵宾: 0.08
- 金币: 5305.6
- 散金: 35
- 红花: 1
- 沙发: 2
- 帖子: 3469
- 在线: 285.9小时
- 虫号: 92581
- 注册: 2005-09-10
- 性别: GG
senlia(金币+0,VIP+0):我算出来都是5.156左右 每次运行时间都不完全一样 但都差不过十几毫秒 12-18 08:43
|
两段程序几乎一样,除了输出语句略有差别,但t1的运行结果一个是1.999999767576810E-006,一个是7.15873999999985。有谁知道怎么回事吗?还是只有我用的系统有这样的问题? program main integer :: i double precision :: f0, f1, t0, t1 f0 = 0 f1 = 0 t0 = secnds (0.0d0) do i = 1, 100000000 f1 = f1 + dcos(f1) end do t1 = secnds(t0) write(*,*) t1 end program main program main integer :: i double precision :: f0, f1, t0, t1 f0 = 0 f1 = 0 t0 = secnds (0.0d0) do i = 1, 100000000 f1 = f1 + dcos(f1) end do t1 = secnds(t0) write(*,*) t1, f1 end program main |

7楼2009-12-18 06:27:24
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★ ★ ★ ★ ★ ★ ★ ★
senlia(金币+2,VIP+0):感谢应助 12-18 15:38
dellus(金币+5,VIP+0):谢谢!我用的是Linux,gcc。我试过real的精度,结果和双精度是一样的。我同一个程序不同次运行之间的差距也不止百分之一秒。 12-18 22:02
dellus(金币+3,VIP+0): 12-23 14:06
senlia(金币+2,VIP+0):感谢应助 12-18 15:38
dellus(金币+5,VIP+0):谢谢!我用的是Linux,gcc。我试过real的精度,结果和双精度是一样的。我同一个程序不同次运行之间的差距也不止百分之一秒。 12-18 22:02
dellus(金币+3,VIP+0): 12-23 14:06
|
首先,不知道你用的什么编译器,什么系统。 我在winxp下,用gfortran 4.4.2编译了这两段程序。有如下问题 1、seconds的参数必须是kind 4的。而你的是double,也就是kind 8的。这个我改了一下,然后编译通过。 2、我的运行时间是:13.218750和13.171875,不知道为什么第二个会快百分之一秒。 另弱的问一下nono老大,write和print在输出到console的时候有什么区别吗? |
8楼2009-12-18 15:27:26
15890734984
木虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 2057.3
- 散金: 101
- 帖子: 263
- 在线: 60.4小时
- 虫号: 903027
- 注册: 2009-11-14
- 专业: 应用有机化学
★ ★ ★ ★
jjdg(金币+2,VIP+0):辛苦了!感谢参与! 12-20 02:33
dellus(金币+2,VIP+0):这个程序是做什么的? 12-20 15:01
jjdg(金币+2,VIP+0):辛苦了!感谢参与! 12-20 02:33
dellus(金币+2,VIP+0):这个程序是做什么的? 12-20 15:01
|
real K(1:8922,1:8922),a(1:89103,1:3) open(unit=1,file='filestiffness.txt',status='old') open(unit=2,file='kk.txt',status='new') read(1,*)((a(i,j),j=1,3),i=1,89103) do 10 i=1,8922 do 20 j=1,8922 do 30 n=1,89103 if (a(n,1).eq.i.and.a(n,2).eq.j) then K(i,j)=a(n,3) end if 30 continue 20 continue 10 continue !100 format(1x,8922(e19.12,1x)) write(2,*) ((K(i,j),j=1,8922),i=1,8922) end 这个程序的功能是将数组a的第一列和第二列作为行号和列号给第三列在k中定位. filestiffness.txt内容如下: 10 9 2558 6 4 5285 3 3 5582 ………… …………… |
9楼2009-12-19 22:13:25












回复此楼