我正在使用 Condor 运行几次模拟,并对程序进行编码,以便它在控制台中输出进度状态。这是在循环结束时完成的,它只是打印当前时间(也可以是百分比或经过的时间)。代码看起来像这样:
printf("START");
while (programNeedsToRum) {
// Run code repetitive code...
// Print program status update
printf("[%i:%i:%i]\r\n", hours, minutes, seconds);
}
printf("FINISH");
正常执行时(即在终端/cmd/bash 中),这工作正常,但 condor 节点似乎不printf()
状态。仅当模拟完成后,所有状态更新都已输出到文件中,但随后就不再使用。我提交给Condor 的 *.sub 文件如下所示:
universe = vanilla
executable = program
output = out/out-$(Process)
error = out/err-$(Process)
queue 100
提交后,程序将执行(这在condor_q
)并且输出文件包含以下内容:
START
仅当程序完成运行后,其相应的输出文件才会显示(示例):
START
[0:3:4]
[0:8:13]
[0:12:57]
[0:18:44]
FINISH
当程序执行时,输出文件仅包含START
文本。所以我得出的结论是,如果节点执行程序繁忙,则文件不会更新。所以我的问题是,有没有办法手动更新输出文件或以更好的方式收集有关程序进度的任何信息?
已经谢谢了
Max
您想要做的是使用流输出选项。请参阅stream_error
and stream_output
您可以传递给的选项condor_submit
如此处所述:http://research.cs.wisc.edu/htcondor/manual/current/condor_submit.html http://research.cs.wisc.edu/htcondor/manual/current/condor_submit.html
默认情况下,HTCondor 将 stdout 和 stderr 本地存储在执行节点上,并在作业完成时将它们传输回提交节点。环境stream_output
to TRUE
将要求 HTCondor 在输出发生时将其流式传输回提交节点。然后您可以在发生时检查它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)