大数据程序,如何断点恢复

m
miked
楼主 (北美华人网)

一个程序,在High performance computer上运行。但是每48小时,就被管理员中断。 这个程序需要运行7天左右。 请问,如何断点恢复?就是每次程序从上次的运行断点处接着运行。
程序是下面这样的。实际程序是并行的。下面的是串行的。
for (i in 1:1450818000 ) {   out[i, ] = f(i) }
n
nedwed2004
回复 1楼miked的帖子
给的信息太少,但至少你可以自己估算一下时间分几批,比如先跑个1:100000
p
perch88
不能分批的话,保存结果,后面再算的话,前面算完的结果就已知 程序最前面加一个check结果就行,有了就不用重新算
m
miked
回复 1楼miked的帖子
给的信息太少,但至少你可以自己估算一下时间分几批,比如先跑个1:100000
nedwed2004 发表于 2022-02-22 11:47

主要是如何保存1:100000这个批次的运行结果呢? 存在硬盘的文件里?
但是我的循环是在并行上的。如何在好几个并行运行的cores上对同一个文件进行写操作呢?
m
miked
不能分批的话,保存结果,后面再算的话,前面算完的结果就已知 程序最前面加一个check结果就行,有了就不用重新算
perch88 发表于 2022-02-22 11:56

谢谢。
关键是保存已经算好的结果。
这些已经算好的结果来自于不同的处理器,怎么才能做到,不同的处理器,对同一个文件进行写操作?
c
coalpilerd
主要是如何保存1:100000这个批次的运行结果呢? 存在硬盘的文件里?
但是我的循环是在并行上的。如何在好几个并行运行的cores上对同一个文件进行写操作呢?
miked 发表于 2022-02-22 12:26

分几个文件存,回头再合并就是了。
i
iammaja
48小时?我们允许最久的run 30天😅
p
plmoer
给的信息有点少,用checkpoint试一试,把断点前到i也记录下,下次从这个i开始运行, 就不用start over了
H
High.eee
信息太少了,没法给建议。 分段分批运行。如果只这一次,跟管理员商量一下,等几天。 如果是长期的,就要考虑如何优化。
伪猴王
你肯定有个最后一步的输出文件。重新开始的时候,用那个文件来开始就行了。 不用扯什么大数据。 以前做并行运算的流体力学模拟,都有可能断了,重新开始的。
a
arizaq
criu
https://access.redhat.com/articles/2455211
i
ismajia
HPC 48小时就被管理员中断难道不是找管理员么? 为什么中断? HPC suppose是长时间运行的.
a
arizaq
和criu类似的还有dmtcp. 关于dmtcp在 HPC 环境下应用的介绍可以看看论文 Checkpointing SPAdes for Metagenome Assembly: Transparency versus Performance in Production
https://arxiv.org/abs/2103.03311