Получение MPI не возвращается - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь отправлять и получать данные с помощью MPI в Linux. Я проверил предыдущие решения и внес соответствующие изменения, но мой код приема по-прежнему блокируется. Если я просто запускаю MPI_Send (...), нет проблем. Но если я запускаю MPI_Send (...), а затем MPI_Recv (...), моя программа переходит в спящий режим.

#include <iostream>
#include <fstream>
#include <cmath>
#include <mpi.h>
#include <ctime>
#include <vector>

//using namespace std;





int rank, size;
int tag = 99;
int main(int argc, char * argv[])
{
double sTime, eTime, rTime;
std::ifstream inFile;
int num_rows = 3200;
int num_cols = 3200;
int cur_control = 0;
double * send_buffer = NULL;
double * recv_buffer = NULL;
double ** data = NULL;
double determinant;
MPI_Status stat;
std::vector<double> file_buffer;


// Just get the initialization of the program going.
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);



send_buffer = new double[num_rows];
// Broadcasts p2p the number of rows to each processor.
//MPI_Bcast (&num_rows, 1, MPI_INT, 0, MPI_COMM_WORLD);

if(! rank) { 
for(int i=1; i<size; ++i) {

 MPI_Send(&num_rows, 1, MPI_INT, i, tag, MPI_COMM_WORLD);
}
}
for(int i=1; i<size; ++i) {

 MPI_Recv(&num_rows, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &stat);
}
num_cols = num_rows / size;

delete [] send_buffer;
MPI_Finalize();
return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...