[英]MPI_Free_mem fails with a segmentation fault using OpenMPI
我在Intel Ubuntu系统上将OpenMPI与Intel C ++编译器一起使用。 每当我尝试分别用MPI_Alloc_mem
和MPI_Free_mem
调用替换new[]
和delete[]
调用时,总是会遇到分段错误。
MPI_Alloc_mem
调用返回MPI_SUCCESS
。 在调用MPI_Free_mem
时发生分段错误。 MPI_Alloc_mem
调用带有MPI_INFO_NULL
。 我分别在MPI_Alloc_mem
和MPI_Free_mem
显式转换了void**
和void*
参数。
我不知道为什么会这样。 我将不胜感激任何建议。
首先,除非您要使用MPI-2单面通信,否则绝对不需要用MPI调用替换C ++内存管理运算符。
其次,在C / C ++中MPI_ALLOC_MEM
和MPI_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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.