我正在使用SLURM资源管理软件在集群上使用 OpenMPI 运行我的可执行文件。我想找到一种方法来指定应该为每个节点分配多少进程和哪些进程,其中每个节点的进程数可能不同。
澄清我正在寻找的示例:假设我想在 3 个节点上运行 7 个进程。然后我想说:节点 1 应该运行秩为 n 的进程,节点 2 和 3 应该分别运行剩余进程中的 3 个。
我不在乎哪个物理节点是节点 1,因为我使用的集群上的所有节点都是相等的。此外,我不知道 SLURM 将分配哪些节点,因此我无法在主机文件中硬编码节点的名称。我发现的 OpenMPI 文档中的一个示例将为我的示例定义这样的主机文件:
aa slots=1
bb slots=3
cc slots=3
但我对这种方法有两个问题:
- 我不知道节点的名称 aa、bb、cc。
- 即使我认识他们,节点 aa 上的进程也不一定具有正确的等级。