MS MPI Recv struct поврежденные данные

Я определил пользовательскую структуру и попытался сделать простой Send / Recv.

Вот моя структура:

enum RequestType {INSERT, UPDATE};
struct Request{
RequestType requestType;
char node1[MAX_CHAR];
char node2[MAX_CHAR];
char value[MAX_CHAR];
}

Затем, применяя его к MPI:

Request req;
MPI_Datatype reqTypeMPI;
MPI_Datatype reqType[4] = { MPI_INTEGER, MPI_CHAR, MPI_CHAR, MPI_CHAR };
int blocklen[4] = { 1, MAX_CHAR, MAX_CHAR, MAX_CHAR };
MPI_Aint disp[4];
MPI_Get_address(&req.requestType, &disp[0]);
MPI_Get_address(&req.node1, &disp[1]);
MPI_Get_address(&req.node2, &disp[2]);
MPI_Get_address(&req.value, &disp[3]);
disp[3] = disp[3] - disp[2];
disp[2] = disp[2] - disp[1];
disp[1] = disp[1] - disp[0];
disp[0] = 0;

MPI_Type_create_struct(4, blocklen, disp, reqType, &reqTypeMPI);
MPI_Type_commit(&reqTypeMPI);

И когда я пытаюсь сделать Send / Recv

// send
Request request;
strcpy_s(request.node1, node1.c_str());
strcpy_s(request.node2, node2.c_str());
strcpy_s(request.value, value.c_str());
request.requestType = INSERT;

MPI_Send(&request, 1, requestDatatype, 1, 1, MPI_COMM_WORLD);

// recv
Request request;
MPI_Status status;
MPI_Recv(&request, 1, requestDatatype, 0, MPI_ANY_TAG, MPI_COMM_WORLD,
&status);

Все данные проходят правильно, кроме «значения».
Например, пусть node1 = «узел», node2 = «узел2», значение = «значение», requestType = INSERT. Тогда я получаю это:
введите описание изображения здесь

Что я делаю неправильно?

-2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]