我通常处理大学集群上的数据。之前完成的大多数作业都是基于并行批处理外壳(将作业分成几个批处理,然后并行提交)。该外壳的示例如下所示:
#! /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 保留更多处理器。它会影响这个规则吗?我担心我会永远等待......