2 回答
TA贡献1845条经验 获得超8个赞
解决方案1
我建议您以较小的步骤分解管道,然后可以在bash脚本等中将其自动化。首先,您需要生成所有需要通过slurm运行的命令。如果将它们提交为Slurm作业数组(请参见此处),则可以同时提交用于解析所有这些命令输出的脚本。使用slurm依赖项,您可以使作业仅在作业阵列完成后才开始。
解决方案2
您可以在python脚本中执行while循环并检查作业的状态:
import time
t = time.time()
while True:
# Break if this takes more than some_limit
if time.time() - t > some_limit:
break
# Check if the jobs are done. This could be done by
# grep'ing squeue for your username and some tags
# that you name your jobs
check_for_completion()
# Sleep for a while depending on the estimated completion time of the jobs
time.sleep(some_time)
解决方案3
在slurm上保留N个节点,然后在其中运行脚本。这样可以避免前端混乱。我建议使用gnu parallel在节点上分配您的作业。
添加回答
举报