Я следую исходному коду в своих документах, но при попытке использовать и MPI_Recv()
из библиотеки Open MPI я сталкиваюсь с ошибкой. У меня есть googled и читать некоторые темы на этом сайте, но я не могу найти решение для решения моей ошибки. Это моя ошибка:Ошибка при использовании MPI_SEND и MPI_RECV в Windows
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 .: Я использую Open MPI v1.6 для ОС Windows 8.1.
Попробуйте отключить UAC (контроль учетных записей пользователей) и проверьте, не устраняет проблему. Открытый MPI больше не поддерживается в Windows, и вы можете попробовать другую реализацию MPI, например. MPICH или MS-MPI. –
Hi Hristo, я отключил UAC, изменив EnabledLUA в реестре. Затем я заново запускаю свою программу, и я все еще получаю эту ошибку. –