Я пытаюсь отправить некоторые данные в другие процессы, используя MPI_Bcast
, У меня есть несколько значений, которые я пытаюсь отправить как строку (используя sprintf
а также sscanf
писать и читать их), но после вызова широковещательные значения не изменятся. Согласно ответу в этот вопрос он должен работать и устанавливать одинаковые значения во всех процессах. Или я что-то упустил?
Вот код:
char send[128];
int pointSize;
double *x = new double;
double *sigma = new double;
double f_value;
memset(send, 0, sizeof(send));
sprintf_s(send, "%d %p %p %lf", points.front().getSize(), points.front().getX(), points.front().getSigma(), points.front().getValue());
printf("[%d]:Before bcast: %s \n", rank, send);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Bcast(&send, sizeof(send), MPI_CHAR, rank, MPI_COMM_WORLD);
sscanf_s(send, "%d %p %p %lf", &pointSize, &x, &sigma, &f_value);
printf("[%d]:After bcast: %d %p %p %lf \n", rank, pointSize, x, sigma, f_value);
И вывод на 2 процесса:
[1]:Before bcast: 10 0000007DAF2D1620 0000007DAF2D0D20 0.000015
[0]:Before bcast: 10 000000482E545A20 000000482E546560 0.000020
[0]:After bcast: 10 000000482E545A20 000000482E546560 0.000020
[1]:After bcast: 10 0000007DAF2D1620 0000007DAF2D0D20 0.000015
Задача ещё не решена.
Других решений пока нет …