主题:有什么测试工具能获得OpenMP并行区运行时间么?
yesshi06
[专家分:0] 发布于 2011-06-07 15:10:00
做OpenMP并行后,想知道该段程序的并行效果。当前在用GNU的gprof,能获得每个程序的运行时间,不过gprof获得的OpenMP并行后的时间似乎和实际运行时间有差别,无法知道精确的程序运行时间。有人用过比较好用的测试工具么?能直接获得并行后的各线程时间
回复列表 (共12个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-06-07 15:45:00
AQTime可以,Amplifier也可以。
板凳
yesshi06 [专家分:0] 发布于 2011-06-07 16:23:00
这两个似乎是在windows环境下的软件,我的程序是跑在linux下的,有在linux下使用的性能分析软件么?
3 楼
cgl_lgs [专家分:21040] 发布于 2011-06-07 17:34:00
好像都有Linux版本,只是贵~~~~
4 楼
bshine1225 [专家分:720] 发布于 2011-06-07 17:37:00
可以使用SECNDS()函数,用法是:
real *8 s
s = secnds(0.0)
…
block
…
s = secnds(s)
PRINT *, 'Time elapsed = ',
& s, ' seconds'
也可以使用OpenMP自带的函数OMP_get_wtime
start = OMP_get_wtime()
... !work to be timed
end = OMP_get_wtime()
time = end - start
5 楼
yeg001 [专家分:14390] 发布于 2011-06-07 21:48:00
翻了一下<the fortran 2003 handbook> secnds真的不是内部函数, 可能是ivf或某些编译器提供的函数而已. 用omp提供的函数对于并行块不是太多的话是个不错选择.
我个人是windows, linux两边调, 主要是linux下的工具不会用-_-'
6 楼
cgl_lgs [专家分:21040] 发布于 2011-06-07 22:39:00
[quote]翻了一下<the fortran 2003 handbook> secnds真的不是内部函数, 可能是ivf或某些编译器提供的函数而已. 用omp提供的函数对于并行块不是太多的话是个不错选择.
我个人是windows, linux两边调, 主要是linux下的工具不会用-_-'[/quote]董兄大怒,曰:吾之器NB之极,尔等竟然不识耍~~~~唉~~~也罢,神马皆为浮云~~~
7 楼
dongyuanxun [专家分:7180] 发布于 2011-06-07 22:50:00
其实那个我知道,我也不用……
也算事实上的标准吧,主流编译器都提供这个扩展
8 楼
bshine1225 [专家分:720] 发布于 2011-06-08 09:21:00
[quote]翻了一下<the fortran 2003 handbook> secnds真的不是内部函数, 可能是ivf或某些编译器提供的函数而已. 用omp提供的函数对于并行块不是太多的话是个不错选择.
我个人是windows, linux两边调, 主要是linux下的工具不会用-_-'[/quote]
是吗,我去查查,但是OMP_get_wtime 肯定是可以用的
9 楼
yeg001 [专家分:14390] 发布于 2011-06-08 09:22:00
linux还要多向两位学习. 偶是用到什么学什么的投机主义者, 呵呵.
10 楼
yesshi06 [专家分:0] 发布于 2011-06-09 11:26:00
那在linux下用啥呢?最好是开源的....
我来回复