为什么非并行Fortran会测量太长的CPU时间?

时间:2016-08-01 16:17:10

标签: fortran gfortran condor cpu-time

我的程序显示CPU运行时间比程序实际运行的时间长,没有在代码中写入并行化。

代码主要是在Fortran 90中编写的(后来我添加了一两个Fortran的东西)并使用我的Linux机器的本地gfortran编译器编译({{1} }信息:GNU Fortran(GCC)4.4.7 20120313(Red Hat 4.4.7-17))。据我所知,--version编译为后来的标准而不是90。

当程序启动时,它会调用gfortran,在它结束之前调用call cpu_time(time_start)。在这种情况下,call cpu_time(time_end)以秒为单位给出经过的CPU时间。

所以这里有一个奇怪的事情:我使用HTCondor提交我的代码,以便在本地网络中有可用CPU的任何机器上运行。我的HTCondor日志文件显示作业已提交07/24 14:17:46,15秒后开始运行,然后在同一台机器上运行完成,结束时间为07/30 11:01:52,时钟时间不到六天。但是,time_end - time_start表示 CPU时间为993535秒,或超过11天。我的代码根本没有并行化,所以我不明白这是怎么回事。 这怎么可能?

我之前已经运行过这个代码数百次,从未注意到这种现象,但是我从来没有仔细检查过。

编辑:我想再次注意我的代码并行化,至少没有明确说明。我用time_end - time_start标志编译,但我不认为这引入了并行化。如果关于并行Fortran的链接问题/答案确实回答了我关于序列过程的问题,请帮助我理解如何,因为我没有看到连接。

我的HTCondor提交脚本如下。我-O3这个脚本以及我运行代码的方式。

condor_submit

0 个答案:

没有答案