gpt4 book ai didi

c - MPI 程序挂起

转载 作者:太空狗 更新时间:2023-10-29 11:18:43 36 4
gpt4 key购买 nike

我使用以下命令在我的 Ubuntu 14.04 笔记本电脑上安装了 mpich2:

sudo apt-get install libcr-dev mpich2 mpich2-doc

这是我要执行的代码:

#include <mpi.h>
#include <stdio.h>

int main()
{
int myrank, size;
MPI_Init(NULL, NULL);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Comm_size(MPI_COMM_WORLD, &size);

printf("Hello world! I am %d of %d\n", myrank, size);

MPI_Finalize();
return 0;
}

将其编译为 mpicc helloworld.c 不会出现任何错误。但是当我按如下方式执行程序时: mpirun -np 5 ./a.out 没有输出,程序就一直在执行,就好像它处于无限循环中一样。在按下 Ctrl+C 时,这就是我得到的:

$ mpirun -np 5 ./a.out                                                                                                                                                        
^C[mpiexec@user] Sending Ctrl-C to processes as requested
[mpiexec@user] Press Ctrl-C again to force abort
[mpiexec@user] HYDU_sock_write (./utils/sock/sock.c:291): write error (Bad file descriptor)
[mpiexec@user] HYD_pmcd_pmiserv_send_signal (./pm/pmiserv/pmiserv_cb.c:170): unable to write data to proxy
[mpiexec@user] ui_cmd_cb (./pm/pmiserv/pmiserv_pmci.c:79): unable to send signal downstream
[mpiexec@user] HYDT_dmxu_poll_wait_for_event (./tools/demux/demux_poll.c:77): callback returned error status
[mpiexec@user] HYD_pmci_wait_for_completion (./pm/pmiserv/pmiserv_pmci.c:197): error waiting for event
[mpiexec@user] main (./ui/mpich/mpiexec.c:331): process manager error waiting for completion

我无法通过谷歌搜索获得任何解决方案。是什么导致了这个错误?

最佳答案

我在两个计算节点上遇到了同样的问题:

$ mpirun -np 10 -ppn 5 --hosts c1,c2 ./a.out  
[mpiexec@c1] Press Ctrl-C again to force abort
[mpiexec@c1] HYDU_sock_write (utils/sock/sock.c:286): write error (Bad file descriptor)
[mpiexec@c1] HYD_pmcd_pmiserv_send_signal (pm/pmiserv/pmiserv_cb.c:169): unable to write data to proxy
[mpiexec@c1] ui_cmd_cb (pm/pmiserv/pmiserv_pmci.c:79): unable to send signal downstream
[mpiexec@c1] HYDT_dmxu_poll_wait_for_event (tools/demux/demux_poll.c:76): callback returned error status
[mpiexec@c1] HYD_pmci_wait_for_completion (pm/pmiserv/pmiserv_pmci.c:198): error waiting for event
[mpiexec@c1] main (ui/mpich/mpiexec.c:344): process manager error waiting for completion

原来 c1 节点无法通过 ssh c2

如果你只使用单机,你可以尝试使用 fork 作为启动器:

mpirun -launcher fork -np 5 ./a.out

关于c - MPI 程序挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29071788/

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