Fortran Mex文件中的计时(通过使用自动并行化)

时间:2012-08-13 14:09:01

标签: fortran timing mex

我目前正在尝试比较运行时两个Fortran子例程。因此,我编写了Matlab MEX文件,以便于从那里访问代码。我做的第一件事是测量每个例程(在MEX文件中)的单独调用的时间:

   CALL DTIME( TARRAY, TIME )

   CALL MY_PROGRAM1( ... )
   CALL DTIME( TARRAY, TIME )

   CALL DTIME( TARRAY, TIME )
   CALL MY_PROGRAM2( ... )
   CALL DTIME( TARRAY, TIME )

为程序1提供1.53s,为程序2提供0.93s。

现在,为了对DTIME分辨率不够好的小问题进行计时,我把上面的调用放到循环中解决问题,比如10次:

   CALL DTIME( TARRAY, TIME )
   DO 10 K = 1, 10
      CALL MY_PROGRAM1/2( ... )
10 CONTINUE
   CALL DTIME( TARRAY, TIME )

然而,现在我得到程序1的9.23(现在应该是15.3s)和程序2的9.16s,所以时间的关系与上面的两次调用完全不同。

我有一个64位ubuntu机器,有4个内核,所以我想在程序1的DO循环中可能会有一些自动并行化。但似乎这不是为程序2做的,尽管我使用相同的选项mexing。有没有人知道上面的问题是什么以及如何解决它(可能阻止自动并行化只是在上面的循环?)?非常感谢提前!

的Matthias

0 个答案:

没有答案