考虑以下代码,该代码在具有挂载时间(#BSUB -W 10:00)的群集上运行:
pdf("myPlots.pdf")
for(i in 1:300){
# a lot of data processing, unfortunately no data is being saved...
# ...
# then plot output
plot(1)
}
dev.off()
以上代码在竞争for循环之前退出(由于walltime)并且PDF不完整。 然后,我使用this website来恢复,因此绘图数据在文件中,它只是不完整。
还有其他方法可以恢复吗?也许在PDF文件中添加一些文字(使用文本编辑器)以便PDF文件完整?
答案 0 :(得分:0)
我建议升高桥梁或降低河流。
也就是说,我会考虑对您的算法进行两种可能的修改之一,具体取决于您正在做什么(这里没有详细说明,所以我' m winging it):要么让你的循环的每次迭代都成为一个完整的任务,以防它是你的挂钟时间到期之前的最后一个循环,或调整你的循环计数或wallclock限制让工作更频繁地完成。
如果你不能改变你的循环次数或壁垒时间,看看你是否可以修改你的循环过程,以便每次迭代都附加到前一个循环,这样任何循环都以完整的输出结束,因此它并不重要是否会有另一个迭代。
否则,要么将循环限制降低到可靠地完成的某个计数(例如200或250),要么将壁垒时间限制延长到某个值,以使任务在正常系统负载下完成。现在你把自己放在一块岩石和一块坚硬的地方之间;一个或另一个将不得不移动。