C 在群集节点上显式分发MPI进程

C 在群集节点上显式分发MPI进程,c,mpi,distributed-computing,openmpi,mpich,C,Mpi,Distributed Computing,Openmpi,Mpich,我的MPI程序由一个主进程组成,主进程将消息发送给工作进程,然后工作进程进行实际计算。主进程是单线程的,而工作进程是多线程的,并且使用节点的所有CPU核心 为了使所有群集节点上的所有CPU核心都有助于计算,我想指定在一个群集节点上应有两个进程,即主进程(proc_id=0)和另一个工作进程。在所有其他集群节点上,应该只有一个工作进程 我怎样才能做到这一点 谢谢。如果在OpenMPI中使用--map by node运行mpiexec,它将执行您描述的操作: 每个节点启动一个进程,以循环方式逐节点

我的MPI程序由一个主进程组成,主进程将消息发送给工作进程,然后工作进程进行实际计算。主进程是单线程的,而工作进程是多线程的,并且使用节点的所有CPU核心

为了使所有群集节点上的所有CPU核心都有助于计算,我想指定在一个群集节点上应有两个进程,即主进程(proc_id=0)和另一个工作进程。在所有其他集群节点上,应该只有一个工作进程

我怎样才能做到这一点


谢谢。

如果在OpenMPI中使用
--map by node
运行
mpiexec
,它将执行您描述的操作:

每个节点启动一个进程,以循环方式逐节点循环。这将在节点之间均匀分布进程,并以循环“按节点”的方式分配MPI_COMM_WORLD排名


您是否使用资源管理器/批处理系统?如果是,哪一个。您真的需要一个同时适用于openmpi和mpich的解决方案吗?如果集群有100个节点,我将使用
mpiexec-n 100./my_execute
运行我的程序。理想情况下,我现在希望执行
mpiexec-n 101./my_execute
如果集群有100个节点,并且如一个节点上所述,应该有两个进程,即主进程流程和一个工人流程。谢谢,这正是我想要的!欢迎使用Stack Overflow,很高兴提供帮助。如果答案帮助你,请考虑通过点击左边的检查标记来接受它。