MPI库是否可以实现分层并行?

MPI库是否可以实现分层并行?,mpi,Mpi,我正在用MPI编写一个计算代码。我有几个软件部分,每个部分计算问题的不同部分。每个部分都使用MPI编写,因此可以作为独立模块运行。现在我想把这些部分结合起来,在一个程序中一起运行,代码的所有部分并行运行,而每个部分本身也并行运行 e、 g.节点总数=10,第1部分运行6个节点,第2部分运行4个节点,两个节点同时运行 有没有方法可以在不重写整个程序的情况下,使用10个节点运行mpi_init,并使用所需的节点数对每个部分进行mpi_init?这并不简单 一种选择是使用一个外部程序,该程序与子程序一

我正在用MPI编写一个计算代码。我有几个软件部分,每个部分计算问题的不同部分。每个部分都使用MPI编写,因此可以作为独立模块运行。现在我想把这些部分结合起来,在一个程序中一起运行,代码的所有部分并行运行,而每个部分本身也并行运行

e、 g.节点总数=10,第1部分运行6个节点,第2部分运行4个节点,两个节点同时运行


有没有方法可以在不重写整个程序的情况下,使用10个节点运行mpi_init,并使用所需的节点数对每个部分进行mpi_init?

这并不简单

一种选择是使用一个外部程序,该程序与子程序一起使用
MPI\u Comm\u spawn()
(两次)。缺点是这需要一个插槽


另一个选项需要重写,因为所有任务都将在同一个
MPI\u COMM\u WORLD
中结束,所以由他们根据自己的身份来
MPI\u COMM\u split()
,并使用生成的通信器,而不是
MPI\u COMM\u WORLD

我认为MPI\u COMM\u split()是最好的方式,代码更改最少。非常感谢Gilles。您可以使用
MPI\u COMM\u WORLD
MPI\u APP\u NUM
属性来获取用于分割的颜色