MPI_Free_mem使用OpenMPI失败并出现分段错误

时间:2013-03-01 06:25:37

标签: c++ segmentation-fault mpi intel openmpi

我在Intel Ubuntu系统上使用OpenMPI和Intel C ++编译器。每当我尝试分别使用new[]delete[]来电替换MPI_Alloc_memMPI_Free_mem来电时,我总会遇到分段错误。

MPI_Alloc_mem次来电回复MPI_SUCCESS。在调用MPI_Free_mem时发生分段错误。 MPI_Alloc_mem来电是MPI_INFO_NULL。我明确地分别在void**void*中对MPI_Alloc_memMPI_Free_mem个参数进行了类型转换。

我不知道为什么会这样。我很感激任何建议。

1 个答案:

答案 0 :(得分:0)

首先,除非您打算使用MPI-2单向通信,否则绝对不需要用MPI调用替换C ++内存管理运算符。

其次,在C / C ++中正确使用MPI_ALLOC_MEMMPI_FREE_MEM如下:

int *arr;

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