如何解决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 实现的工作方式类似。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。