【发布时间】:2011-11-05 03:45:48
【问题描述】:
我在 MPICH2 中使用了一个简单的通信程序。当我使用
执行程序时mpiexec.exe -hosts 2 o00 o01 -noprompt mesajlasma.exe
程序开始但没有结束。通过使用资源监控程序,我可以看到它仍在主机“o01”上运行。当我按下 CTRL + c 时,它就结束了。然后我可以看到我的程序运行正常
为什么我的程序没有结束。它卡在哪里了?为什么我使用 MPI_Send 和 MPI_Recv 时程序会挂起?
提前致谢
// mesajlasma.cpp
#include "stdafx.h"
#include "string.h"
#include "mpi.h"
int main(int argc, char* argv[])
{
int nTasks, rank;
char mesaj[20];
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&nTasks);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
//printf ("\nNumber of threads = %d, My rank = %d\n", nTasks, rank);
if(rank == 1)
{
strcpy_s(mesaj, "Hello World");
if (MPI_SUCCESS==MPI_Send(mesaj, strlen(mesaj)+1, MPI_CHAR, 0, 99, MPI_COMM_WORLD)) printf("_OK!_\n");
}
if(rank == 0)
{
MPI_Recv(mesaj, 20, MPI_CHAR, 1, 99, MPI_COMM_WORLD, &status);
printf("Received Message:%s\n", mesaj);
}
MPI_Finalize();
return 0;
}
【问题讨论】:
-
你的 MPI 库是什么?它是 openmpi 还是 MPICH 还是 MPICH2?什么是精确版本? Unix 还是 Windows?
-
我的库是 MPICH2。在两台计算机中,Windows 7 都是操作系统。实际上,我安装了 MPICH2 的 41 台计算机,它们在简单的 «hello world» 中正常工作。应用程序。但是如果我使用 MPI_Send 和 MPI_Receive 函数,它就会挂起。因此,我将问题简单化到两台计算机(o00和o01)上,并在这个论坛上写了。
标签: parallel-processing mpi mpich