启用valgrind的MPI支持

TL;DR

sudo apt install valgrind-mpi

内存泄漏和越界问题,是C/C++程序常见问题。有一些工具提供了检测内存泄漏的功能,如 valgrind 的 memchecker。
其工作原理大致是这样的:通过替换掉可能分配内存的函数,来追踪内存使用情况,典型如重载 malloc/free。当然,这也就意味着,栈上分配的静态数组越界是无法检测到的。
valgrind最早用于单进程内存检测,但是后续也提供了多进程支持,如MPI。
对于启用valgrind的MPI支持,网上给出的大多是手动编译,添加链接库的方式,比较麻烦,这里提供一种简单方案。

我们使用包管理器提供的预编译好的版本。
安装valgrind:

sudo apt install valgrind

然后查看系统中此时是否提供了mpiwrapper:

ompi_info | grep mpi

输出为空,默认没有提供mpiwrapper,通过以下命令安装:

sudo apt install valgrind-mpi

再次执行命令查看,可以看到:

libmpiwrap-amd64-linux.so

mpi支持库已经安装。

ps:
常见问题测试样例和检测命令,可参考@Madcola Linux下内存问题检测神器:Valgrind

系统环境:

  • Ubuntu 18.04 LTS
  • Open MPI v4.0.4
posted @ 2020-08-24 22:45  与MPI做斗争  阅读(650)  评论(0编辑  收藏  举报