ошибки сегментации в MPI-2 - PullRequest
       23

ошибки сегментации в MPI-2

0 голосов
/ 15 ноября 2011

есть идеи, почему следующее даст мне ошибку?

buf_int = new int[12];
buf_int[0] = stx1.min;
buf_int[1] = stx1.max;
buf_int[2] = stx2.min;
buf_int[3] = stx2.max;
buf_int[4] = sty1.min;
buf_int[6] = sty2.max;

MPI_Bcast(&buf_int, 12, MPI_INT, 0, MPI_COMM_WORLD);

stx1.min = buf_int[0];

если я закомментирую заключительную строку, я не получу ошибку, но если я оставлю ее, я получу

=====================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   EXIT CODE: 11
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
=====================================================================================

ошибка, которая оказывается ошибкой сегментации. если ошибка не может быть выведена из приведенного кода, я могу включить больше.

buf_int объявлен как

int* buf_int;

1 Ответ

1 голос
/ 15 ноября 2011

Поскольку подпись MPI_Bcast такова:

int MPI_Bcast(
  void *buffer,
  int count,
  MPI_Datatype datatype,
  int root,
  MPI_Comm comm
);

, взятая из документации , вы должны вызывать функцию как:

MPI_Bcast(buf_int, 12, MPI_INT, 0, MPI_COMM_WORLD);

То есть передайте buf_int в качестве первого аргумента вместо &bug_int.

Вы можете увидеть пример кода, прокрутив страницу и сравнив ее использование.

...