计算化学公社
标题:
请教并行计算关于延迟提交任务的技巧
[打印本页]
作者Author:
qinjiu
时间:
2021-5-5 13:35
标题:
请教并行计算关于延迟提交任务的技巧
本帖最后由 qinjiu 于 2021-5-5 13:39 编辑
算势能面经常遇到某几个点出错的问题,然后我就写了一个脚本同时并行算n个点,这样每个点都是独立的,相互之间不影响
但是带来了一些新的问题,就是服务器的闪存经常就存满了,导致提交的任务不能读写,I/O 出错
解决办法要么手动清闪存,要么过一会等服务器自己清,由于不清楚闪存区到底完成什么运算,只能等算完了服务器自己清,这带来了一个新的问题
我一开始的脚本是一次提交400个点,现在变成了一次只能提交20个任务,还要等20分钟才能继续提交
需要完成的效果大致如下:
一个脚本,提交20个点上去,再等20分钟再提交下20个,一共提交20次,分400分钟完成,一共提交400个点。
脚本小白,我查询了一下,有sleep,at, cronta等命令,但是我只能实现我自己手动分20个文件出来,再批量延迟提交的功能。
如何在一个脚本下完成以上操作呢?感激不尽
作者Author:
abin
时间:
2021-5-5 17:28
本帖最后由 abin 于 2021-5-5 17:40 编辑
来一个counter
能否被20整除为判据,
sleep 做延时
自己动手吧。
补充,如果这所有的计算任务,前后没有相互依赖关系的话,
那就很好处理。
for 循环一下就行了。
然后没了。
作者Author:
qinjiu
时间:
2021-5-5 21:13
abin 发表于 2021-5-5 17:28
来一个counter
能否被20整除为判据,
sleep 做延时
非常感谢您的这个思路
作者Author:
k64_cc
时间:
2021-5-5 23:20
你用GNU parallel啊……
作者Author:
qinjiu
时间:
2021-5-6 10:46
本帖最后由 qinjiu 于 2021-5-6 15:13 编辑
具体的解决方法:
做两个循环,第二个循环是 j 的循环,j从0做到20,第一个循环是 i 的循环, i从 j*20 做到 j*20+20
这样实际就是做20次j 的循环,每个循环间 sleep 20 min, 每个 j 循环包含20个 i 循环
for((j=0;j<20;j++))
do
for((i=j*20;i<j*20+20;i++))
do
……
done
sleep 20m
done
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3