1

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

#! /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 -n 8 mycode.py args”)。每个shell预留8个处理器。

我提交了工作。但我不确定我是否做得正确。它正在运行,但我不确定它是否基于 mpi 运行。我该如何检查?这里还有2个问题:

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

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

4

1 回答 1

0

好吧,增加“#BSUB -n”正是您需要做的。该选项告诉您要保留多少个执行“槽”。所以如果你想运行一个有 20 个等级的 MPI 作业,你需要

#BSUB -n 20

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

于 2014-10-06T07:50:49.620 回答