【发布时间】:2015-09-12 23:05:48
【问题描述】:
我正在关注我的文档中的源代码,但是当我尝试使用 Open MPI 库中的 MPI_Send() 和 MPI_Recv() 时遇到错误。
我已经在这个网站上搜索并阅读了一些主题,但我找不到解决我的错误的解决方案。
这是我的错误:
mca_oob_tcp_msg_recv: readv faled : Unknown error (108)
这是细节图:
这是我正在关注的代码:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <mpi.h>
int main(int argc, char **argv) {
int rank, size, mesg, tag = 123;
MPI_Status status;
MPI_Init(&argv, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (size < 2) {
printf("Need at least 2 processes!\n");
} else if (rank == 0) {
mesg = 11;
MPI_Send(&mesg,1,MPI_INT,1,tag,MPI_COMM_WORLD);
MPI_Recv(&mesg,1,MPI_INT,1,tag,MPI_COMM_WORLD,&status);
printf("Rank 0 received %d from rank 1\n",mesg);
} else if (rank == 1) {
MPI_Recv(&mesg,1,MPI_INT,0,tag,MPI_COMM_WORLD,&status);
printf("Rank 1 received %d from rank 0/n",mesg);
mesg = 42;
MPI_Send(&mesg,1,MPI_INT,0,tag,MPI_COMM_WORLD);
}
MPI_Finalize();
return 0;
}
我评论了所有MPI_Send() 和MPI_Recv(),我的程序运行正常。另一方面,我评论了MPI_Send() 或MPI_Recv(),但我仍然收到该错误。所以我认为问题出在MPI_Send() 和MPI_Recv() 函数上。
P.S.:我在 Windows 8.1 操作系统上使用 Open MPI v1.6。
【问题讨论】:
-
尝试禁用 UAC(用户帐户控制),看看是否能解决问题。 Windows 不再支持 Open MPI,您可能想尝试其他一些 MPI 实现,例如MPICH 或 MS-MPI。
-
您好 Hristo,我通过在注册表中更改 EnabledLUA 禁用了 UAC。然后我重新运行我的程序,我仍然得到这个错误,。