lsf群集上的mpi作业提交

lsf群集上的mpi作业提交,mpi,cluster-computing,lsf,Mpi,Cluster Computing,Lsf,我通常处理大学集群上的数据。以前完成的大多数作业都基于并行批处理shell(将作业划分为多个批,然后并行提交)。该外壳的示例如下所示: #! /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

我通常处理大学集群上的数据。以前完成的大多数作业都基于并行批处理shell(将作业划分为多个批,然后并行提交)。该外壳的示例如下所示:

#! /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个)作业(1个任务使用8个处理器运行)。我的设计是这样的:准备30个类似的shell文件。每个shell填充中的命令都是我的mpi命令(类似于“mpiexec-n8 mycode.py args”)。每个外壳保留8个处理器

我提交了工作。但我不确定我做的是否正确。它正在运行,但我不确定它是否基于mpi运行。我怎么查?这里还有两个问题:

1) 对于正常的并行作业,通常我可以为单个任务保留一个限制数——16。16岁以上,我从未成功过。如果我使用mpi,我可以预订更多吗?因为mpi是不同的。基本上我不需要连续的记忆

2) 我认为集群上有一个优先级规则。对于正常的并行作业,通常当我为一个任务保留更多的处理器时(比如10个任务,每个任务16个处理器),队列中的等待时间要比为单个任务保留更少的处理器(比如将每个任务划分为8个子任务(总共80个子任务)和每个子任务2个处理器)长得多。如果我能为mpi保留更多处理器。它会影响这个规则吗?我担心我会永远等待

嗯,增加“#BSUB-n”正是你需要做的。该选项告诉您保留了多少执行“插槽”。因此,如果要运行具有20个列组的MPI作业,则需要

#BSUB -n 20

IIRC执行时隙不需要在同一节点上分配,LSF将从满足请求所需的多个节点分配时隙。但是,我已经有一段时间没有使用LSF了,而且我目前无法访问使用它的系统,因此我可能会错(这可能取决于本地群集LSF配置)。

这肯定是群集管理员的问题吗?确切的解决方案完全取决于集群运行的中间件,这里没有人知道它是什么。问题标题中的“lsf”和“lsf”标记表明所述中间件是平台lsf;-)你是对的。我刚刚发现这里比大学的IT支持更有用。对于大学来说,如果问题更多地与我自己的编码知识有关,通常缺乏有用的回答。也许他们每天都有那么多票。这就是为什么我首先尝试在这里查看使用mpi是否有任何明显的编码错误。或者大学之间的集群有点相似?无论如何,你的评论是对的。我会联系他们的,谢谢。我可以试试。但我的经验是,我最多只能为单个任务保留16个处理器。这是基于我简单的并行批处理经验。它也会影响mpi吗?我试过“-n8”,它可以工作。然后我切换到20。正如我所说的,它似乎永远在等待。这让我感到困惑,因为我不需要连续内存,对于单处理器作业,我至少可以同时运行512,为什么mpi不能保留20…可以使用
-R“span[ptile=#slots]”
选项指定插槽的分组。非常感谢。用-R解决!