【发布时间】:2018-08-28 02:24:27
【问题描述】:
我正在编写一些使用 MPI 的代码,并且在使用 valgrind 运行它时一直注意到一些内存泄漏。在试图确定问题出在哪里时,我最终得到了这个简单(而且完全没用)的主要内容:
#include "/usr/include/mpi/mpi.h"
int main(int argc,char** argv)
{
MPI_Init(&argc, &argv);
MPI_Finalize();
return 0;
}
如您所见,这段代码没有做任何事情,也不应该产生任何问题。但是,当我使用 valgrind 运行代码时(在串行和并行情况下),我得到以下摘要:
==28271== 堆摘要:
==28271== 在退出时使用:2,745 个块中的 190,826 个字节
==28271== 总堆使用量:11,214 次分配,8,469 次释放,16,487,977 字节分配
==28271==
==28271== 泄漏摘要:
==28271== 肯定丢失了:55 个块中的 5,950 个字节
==28271== 间接丢失:32 个块中的 3,562 个字节
==28271== 可能丢失:0 个块中的 0 个字节
==28271== 仍可访问:2,658 个块中的 181,314 个字节
==28271== 抑制:0 个块中的 0 个字节
我不明白为什么会有这些泄漏。也许只是我无法读取 valgrind 输出或正确使用 MPI 初始化/终结...
如果有帮助的话,我在 ubuntu 下使用 OMPI 1.4.1-3 和 64 位架构。
非常感谢您的宝贵时间!
【问题讨论】:
标签: memory-leaks mpi valgrind