MPI_Free_mem завершается с ошибкой сегментации с использованием OpenMPI

Я использую OpenMPI с компилятором Intel C ++ в системе Intel Ubuntu. Всякий раз, когда я пытаюсь заменить new[] а также delete[] звонки с MPI_Alloc_mem а также MPI_Free_mem звонки, соответственно, я всегда получаю ошибку сегментации.

MPI_Alloc_mem возврат звонков MPI_SUCCESS, Ошибка сегментации возникает при вызове MPI_Free_mem, MPI_Alloc_mem звонки с MPI_INFO_NULL, Я явно приведу void** а также void* аргументы в MPI_Alloc_mem а также MPI_Free_memсоответственно.

Я понятия не имею, почему это происходит. Буду признателен за любой совет.

0

Решение

Прежде всего, если вы не собираетесь использовать одностороннюю связь MPI-2, совершенно не нужно заменять операторы управления памятью C ++ вызовами MPI.

Во-вторых, правильное использование MPI_ALLOC_MEM а также MPI_FREE_MEM в C / C ++ выглядит следующим образом:

int *arr;

MPI_Alloc_mem(sizeof(int)*1000, MPI_INFO_NULL, &arr); // <-- here arr by address
...
MPI_Free_mem(arr);                                    // <-- here arr by value
0

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

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

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