2014-10-06 78 views
0

我通常在大学的集群上处理数据。以前完成的大部分作业都基于并行批处理外壳(将作业分成几个批次,然后并行提交)。这个外壳的一个例子如下所示:在lsf集群上提交mpi作业

#! /bin/bash 
#BSUB -J model_0001 
#BSUB -o z_output_model_0001.o 
#BSUB -n 8 
#BSUB -e z_output_model_0001.e 
#BSUB -q general 
#BSUB -W 5:00 
#BSUB -B 
#BSUB -N 
some command 

这一次,我测试了一些MPI作业(基于mpi4py)。该代码已经在我的笔记本电脑上进行了单个任务的测试(1个任务使用4个处理器运行)。现在我需要在集群上提交多任务(30)作业(使用8个处理器运行1个任务)。我的设计是这样的:准备上面30个类似的shell文件。每个shell填充命令是我的mpi命令(如“mpiexec -n 8 mycode.py args”)。并且每个外壳保留8个处理器。

我提交的作业。但我不确定自己的行为是否正确。它正在运行,但我不确定它是否基于mpi运行。我该如何检查?这里有2个问题:

1)对于普通的并行作业,通常是有极限的号码,我可以保留单任务 - 16上方16,我从来没有成功过。如果我使用mpi,我可以保留更多吗?因为mpi不同。基本上我不需要连续记忆。

2)我觉得这是在集群中的优先级规则。对于正常的并行作业,通常当我为一个任务(比如说10个任务和每个任务16个处理器)预留更多的处理器时,它需要比为单个任务保留更少的处理器少得多的等待时间(比如说将每个任务分成8个子任务任务(总共80个子任务)和每个子任务2个处理器)。如果我可以为mpi保留更多的处理器。它会影响这个规则吗?我担心,我会永远等待...

+1

当然,这是您的集群管理员的问题吗?确切的解决方案完全依赖于你的集群运行的中间件,而这里没有人知道这是什么。 – talonmies 2014-10-06 07:41:31

+0

好吧,问题标题中的“lsf”和“lsf”标签表明所述中间件是Platform LSF。 ;-) – janneb 2014-10-06 07:51:47

+0

你是对的。我刚刚在这里发现比大学的IT支持更有用。对于大学来说,如果问题与我自己的编码知识更相关,通常缺乏有用的回应。也许他们每天都得到这么多票。这就是为什么我先在这里尝试看看我是否有使用mpi的任何明显的编码错误。或者,也许大学之间的集群有点类似?无论如何,你的评论是正确的。我会联系他们。 – Kenny 2014-10-06 07:52:38

回答

0

那么,增加“#BSUB -n”是你需要做什么。该选项告诉您保留多少执行“插槽”。所以,如果你想与20级运行MPI工作,你需要

#BSUB -n 20 

IIRC所必需的请求的执行槽不需要在同一节点上进行分配,LSF将分配从尽可能多的节点插槽得到满足。但是自从我使用LSF以来,我已经有一段时间了,而且我目前无法访问使用它的系统,所以我可能会错误(并且可能取决于本地群集LSF配置)。

+0

谢谢。我可以试试。但我的经验是,我最多只能保留16个处理器来完成单个任务。这是基于我简单的并行批处理体验。它是否也影响mpi? – Kenny 2014-10-06 07:58:17

+0

我试过“-n 8”,它工作。然后我切换到20.正如我所说,似乎永远都在等待。这让我感到困惑,因为我不需要连续内存,并且对于单处理器工作,我至少可以同时运行512个,为什么mpi不能保留20 ... – Kenny 2014-10-06 08:07:41

+0

'-R'范围[ptile =#slots]“'选项可以用来指定插槽的分组。 – 2014-10-06 08:08:12