mpirun 需要指定 -np 吗?

问题描述

我以前喜欢跑步

mpirun -np N ./c_or_python_script 

但是,在具有 PBS 作业提交队列(我不知道这种类型的提交称为什么)的集群上,示例脚本不要求此 -np N 参数!我还是给了。有什么区别?我正在从下面的集群中指定一个模拟示例脚本。

#!/bin/sh
#PBS -V
#PBS -N mpi_job
#PBS -q normal
#PBS -A etc
#PBS -l select=4:ncpus=64:mpiprocs=64
#PBS -l walltime=04:00:00

cd $PBS_O_WORKDIR

mpirun ./test_mpi.exe

如果我更改为 mpirun -np 256 ./test_mpi.exe 会发生什么变化?

谢谢。我不是这个领域的专家。

附言在 bsub 提交系统中,我理解其中的区别。

解决方法

这取决于您使用的 MPI 实现以及它与资源管理器的集成程度。例如,Open MPI 与许多此类资源管理器紧密集成,包括 PBS、LSF、SLURM 等。当在批处理作业中运行时,它会自动发现分配的详细信息并启动与分配的 CPU 插槽数量一样多的进程,除非您使用 -np 另有说明。在您的情况下,您要求 4 个节点每个有 64 个 CPU 插槽,总共有 256 个 CPU 插槽,因此通过 -np 256 不会改变任何内容。如果您要求 MPI 启动较少的进程,例如使用 -np 128,那么一些 CPU 插槽将保持未使用状态。如果您要求更多进程,例如使用 -np 300,那么 Open MPI 通常会抱怨并拒绝运行程序,除非您使用 -oversubscribe 显式启用超额订阅,这可能不符合资源的喜好管理员或集群管理员。其他 MPI 实现的工作方式类似。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...