仅使用一个批处理作业提交启动ipcluster

时间:2016-07-12 09:59:42

标签: mpi slurm ipython-parallel

可以访问使用MPI和SLURM的大型计算群集。我成功地使用Slurm作业提交系统运行并行IPython ipcluster

我可以用

开头
ipcluster start -n 320  --profile=slurm

它成功提交了两个作业来启动控制器和引擎

2016-07-12 11:41:37.055 [IPClusterStart] Starting ipcluster with [daemon=False]
2016-07-12 11:41:37.057 [IPClusterStart] Creating pid file: /draco/u/USERNAME/.ipython/profile_slurm/pid/ipcluster.pid
2016-07-12 11:41:37.057 [IPClusterStart] Starting Controller with SlurmControllerLauncher
2016-07-12 11:41:37.079 [IPClusterStart] Job submitted with job id: u'9908'
2016-07-12 11:41:38.080 [IPClusterStart] Starting 320 Engines with SlurmEngineSetLauncher
2016-07-12 11:41:38.103 [IPClusterStart] Job submitted with job id: u'9909'
2016-07-12 11:42:08.129 [IPClusterStart] Engines appear to have started successfully

第一个问题我的语句Engines appear to have started successfully是不正确的,因为在很多情况下,启动引擎的作业必须在队列中等待一段时间可以运行,因为它需要更多的资源。

这让我想到了实际问题:如果我要求说2小时,那么控制器的单核心作业将立即启动,但启动引擎的作业将等待,例如1小时在队列中,然后在引擎上计算1小时后,引擎保持活动状态,但控制器被杀死。

是否存在所有这些都发生在单个作业中的方式,其中一个进程将成为控制器而另一个进程是引擎?这样他们就可以在大约同一时间开始。

我知道我可以为控制器工作申请更多时间,但这对我来说似乎不是一个干净的解决方案。

修改
我只是偶然发现了this github issue,其中有一个解决方案可以将两者放在一个提交脚本中,但是仍然可以使用ipcluster完成,不知何故告诉它只运行此脚本。有点开销,但总是有语法

会很好
ipcluster start -n N --profile=whatever

0 个答案:

没有答案