gpt4 book ai didi

c++ - 在多个主机之间分配进程时,打开 MPI 程序不起作用

转载 作者:太空狗 更新时间:2023-10-29 23:09:02 24 4
gpt4 key购买 nike

当我在一台机器上运行多个进程时,我的测试程序工作正常。

$ ./mpirun -np 2 ./mpi-test
Hi I'm A:0
Hi I'm A:1
A:1 sending 11...
A:1 sent 11
A:0 received 11 from 1
all workers checked in!

当我在多台主机上运行同一个程序时,进程会在每台主机上生成,但 MPI_Send 永远不会返回。

$ ./mpirun -np 2 -host A,B ./mpi-test
Hi I'm A:0
Hi I'm B:1
B:1 sending 11...

我已经尝试了几个我发现的其他示例 MPI 程序,但我遇到了同样的问题。知道出了什么问题吗?

编辑:如果所有进程都在该机器上产生,这也会在远程机器上运行。

代码:

#include <mpi.h>

int main(int argc, char** argv)
{
MPI::Init();
int rank = MPI::COMM_WORLD.Get_rank();
int size = MPI::COMM_WORLD.Get_size();
char name[256];
int len;
MPI::Get_processor_name(name, len);

printf("Hi I'm %s:%d\n", name, rank);

if (rank == 0) {
while (size > 1) {
int val;
MPI::Status status;
MPI::COMM_WORLD.Recv(&val, 1, MPI::INT, MPI::ANY_SOURCE, MPI::ANY_TAG, status);
int source = status.Get_source();
printf("%s:0 received %d from %d\n", name, val, source);
size--;
}
printf("all workers checked in!\n");
}
else {
int val = rank + 10;
printf("%s:%d sending %d...\n", name, rank, val);
MPI::COMM_WORLD.Send(&val, 1, MPI::INT, 0, 0);
printf("%s:%d sent %d\n", name, rank, val);
}
MPI::Finalize();

return 0;
}

编辑:ompi_info

$ ./mpirun --bynode -host A,B --tag-output ompi_info -v ompi full --parsable
[1,0]<stdout>:package:Open MPI user@A Distribution
[1,0]<stdout>:ompi:version:full:1.4.3
[1,0]<stdout>:ompi:version:svn:r23834
[1,0]<stdout>:ompi:version:release_date:Oct 05, 2010
[1,0]<stdout>:orte:version:full:1.4.3
[1,0]<stdout>:orte:version:svn:r23834
[1,0]<stdout>:orte:version:release_date:Oct 05, 2010
[1,0]<stdout>:opal:version:full:1.4.3
[1,0]<stdout>:opal:version:svn:r23834
[1,0]<stdout>:opal:version:release_date:Oct 05, 2010
[1,0]<stdout>:ident:1.4.3
[1,1]<stdout>:package:Open MPI user@B Distribution
[1,1]<stdout>:ompi:version:full:1.4.3
[1,1]<stdout>:ompi:version:svn:r23834
[1,1]<stdout>:ompi:version:release_date:Oct 05, 2010
[1,1]<stdout>:orte:version:full:1.4.3
[1,1]<stdout>:orte:version:svn:r23834
[1,1]<stdout>:orte:version:release_date:Oct 05, 2010
[1,1]<stdout>:opal:version:full:1.4.3
[1,1]<stdout>:opal:version:svn:r23834
[1,1]<stdout>:opal:version:release_date:Oct 05, 2010
[1,1]<stdout>:ident:1.4.3

最佳答案

我最终在 A 上升级到 1.5.3 并在 C 上安装 1.5.3。我不确定是升级问题还是 B 问题,但现在一切正常。

供引用:

  • 原始设置:节点 A(arch linux,Open MPI 1.4.3),节点 B(ubuntu,Open MPI1.4.3)
  • 工作设置:节点 A(arch linux,Open MPI 1.5.3),节点 C(arch linux,打开 MPI 1.5.3)

关于c++ - 在多个主机之间分配进程时,打开 MPI 程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com