测量在每条线上花费的时间,fortran

时间:2013-11-07 21:44:57

标签: performance fortran gfortran gprof

我写了一个Fortran 95代码并用gfortran编译它。我使用gprof并发现它给出的时间远远小于CPU时间。 gprof告诉我所有函数使用的时间是15.77s。然而,经过的CPU时间是1分28秒。下面显示了个人资料结果的一瞥:

    Each sample counts as 0.01 seconds.
    %   cumulative   self              self     total           
    time   seconds   seconds    calls   s/call   s/call  name    
    76.67     12.09    12.09        1    12.09    12.82  __bem_mod_MOD_rradwbem
    15.60     14.55     2.46        1     2.46    15.77  MAIN__
    3.36     15.08     0.53      736     0.00     0.00  __bem_mod_MOD_dbesselh_3d
    3.11     15.57     0.49      140     0.00     0.00  __fem_mod_MOD_feasmbl
    0.70     15.68     0.11    30912     0.00     0.00  __bem_mod_MOD_bdrdn
    0.38     15.74     0.06    30915     0.00     0.00  __bem_mod_MOD_bq1n3
    0.13     15.76     0.02        2     0.01     0.01  __bem_mod_MOD_bdrdn_3d
    0.06     15.77     0.01    30912     0.00     0.00  __bem_mod_MOD_dbesselh_1d

其他功能几乎没有时间。该代码包含许多复杂的* 16类型矩阵运算。这些操作主要包含在__bem_mod_MOD_rradwbem。

我没有在代码中使用I / O操作。

我不清楚为什么gprof告诉我这么少的时间与CPU时间比较?有什么方法我可以知道花费的时间在哪里?我是否有可能将代码的速度提高到与gprof上显示的水平相差不远的水平?目前我只让(外部)循环运行一次,gprof显示这方面的分析结果。但是我将来需要数以千计的循环。

由于

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用 tcov

tcov 进行逐行分析,非常老式但在某些环境中仍然很有价值。

在这里观看:http://www.amath.unc.edu/sysadmin/DOC4.0/fortran/prog_guide/8_profiling.doc.html 和手册页。

PS:对不起,这可能更像评论,但我没有必要的50个代表。而且我认为正是你所寻找的。