Я установил MPICH2 на два компьютера («suaddell» и «o01») с операционной системой Windows 7. Я использую VC ++ Express Edition 2008 для компиляции. Все хорошо. Я могу запускать простые приложения MPI "Hello World" на обоих хостах. Но когда я пытаюсь запустить простые приложения MPI_Send и MPI_Recv, программа не заканчивается, она зависает. Я вижу, что он работает без конца на моем компьютере и удаленном хосте с помощью Resource Monitor. Если я нажимаю "Ctrl + C", он заканчивается и отображается под сообщением, он делает вид, что все работает нормально.
Команда mpiexec и сообщение после Ctrl + C
C:\>mpiexec.exe -hosts 2 suaddell o01 -noprompt mesajlasma.exe
mpiexec aborting job...
Received Message :Hello World
_OK!_
job aborted:
rank: node: exit code[: error message]
0: suaddell: 123: mpiexec aborting job
1: o01: 123
код здесь:
#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);
if(rank == 1)
{
strcpy_s(mesaj, "Hello World");
if (MPI_SUCCESS==MPI_Send(mesaj, strlen(mesaj)+1, MPI_CHAR, 0, 7, MPI_COMM_WORLD)) printf("_OK!_\n");
}
if(rank == 0)
{
MPI_Recv(mesaj, 20, MPI_CHAR, 1, 7, MPI_COMM_WORLD, &status);
printf("Received Message :%s\n", mesaj);
}
MPI_Finalize();
return 0;
}
Когда программа запускается с использованием "-verbose", я вижу, что система ждет здесь, пока не нажмет "Ctrl + C":
.
(Здесь много строк)
.
......command written to left: "cmd=result src=0 dest=2 tag=5 cmd_tag=0 ctx_key=
0 result=SUCCESS "
......\smpd_free_command
.......\smpd_init_command
......./smpd_init_command
....../smpd_free_command
...../smpd_state_writing_cmd
..../smpd_handle_op_write
....sock_waiting for the next event.
....\SMPDU_Sock_wait
(это последняя строка, пока я не нажму "Ctrl + C")
Как я могу решить эту проблему.
Заранее спасибо