0

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

代码大部分是用 Fortran 90 编写的(我添加了一两个后来的 Fortran 东西),并用我的 Linux 机器的本机gfortran编译器编译(--version信息:GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17) )。我知道gfortran编译到比 90 更高的标准。

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

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

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

编辑:我想再次指出我的代码没有并行化,至少没有明确地并行化。我确实使用-O3标志编译,但我认为这不会引入并行化。如果链接的关于并行 Fortran 的问题/答案确实回答了我关于串行进程的问题,请帮助我理解如何,因为我没有看到连接。

我的 HTCondor 提交脚本如下。我condor_submit是这个脚本,这就是我运行代码的方式。

executable     = /path/to/executable
universe       = standard
log            = condorlog.log
output         = condorstdout.out
error          = condorerror.out
should_transfer_files = IF_NEEDED
when_to_transfer_output = ON_EXIT
queue
4

0 回答 0