используя время с открытым MPI - PullRequest
0 голосов
/ 01 февраля 2019

я пытаюсь сделать несколько посылок / получателей в c ++ с открытым mpi, но это не работает, сначала я просто пытаюсь отправить значение из процессора 0 в процессор 1, процессор 1 должен выполнить некоторые вычисления, а после, процессор 1 отправляетрезультат к cp0, cpu0 проверяет, является ли он концом или нет, если его конец завершается, иначе он отправляет новое значение в cpu1, пока не закончится.Извините за мой плохой английский.

int main(int argc, char **argv)
{MPI_Init(NULL, NULL);
MPI_Status status; //////////////////////
MPI_Request request;/////////////////////
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size); // Get the rank of the process
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
int i=0,s=10, max=10,d;
int *ss=&s;
int done=0;
if (world_rank== 0)
{while (i<max)
{MPI_Isend(&ss , 0 , MPI_INT, 1, i, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
i=i+1;
MPI_Irecv(&ss , 0 , MPI_INT, 1, i+100, MPI_COMM_WORLD, &request);
}
}
if (world_rank==1)
{while (true)
{MPI_Irecv(&ss , 0 , MPI_INT, 0, i, MPI_COMM_WORLD, &request);
d=*ss+1;
ss=&(d);
MPI_Isend(&ss , 0 , MPI_INT, 0, i+100, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
if (status.MPI_TAG >= 110) {printf("Process %d exiting work loop.\n",     world_rank);break;}
}}
MPI_Finalize(); 
cout << "fin du programme !!!" << endl;
cout<< "s=   " << *ss << "    from world_rank  =  " << world_rank <<  endl;
return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...