【问题标题】:MPI_Free_mem fails with a segmentation fault using OpenMPIMPI_Free_mem 使用 OpenMPI 因分段错误而失败
【发布时间】:2013-02-15 14:33:22
【问题描述】:

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

MPI_Alloc_mem 调用返回 MPI_SUCCESS。调用MPI_Free_mem 时出现分段错误。 MPI_Alloc_mem 调用与MPI_INFO_NULL 一起使用。我分别在MPI_Alloc_memMPI_Free_mem 中显式地转换了void**void* 参数。

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

【问题讨论】:

  • 您的代码包含错误。可能在第 42 行。

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


【解决方案1】:

首先,除非你打算使用 MPI-2 单向通信,否则绝对没有必要将 C++ 内存管理运算符替换为 MPI 调用。

二、MPI_ALLOC_MEMMPI_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

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 2018-08-14
    • 2018-09-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多