使用MPI支持编译Valgrind

时间:2013-02-12 01:54:24

标签: c mpi valgrind

我正在尝试在Linux下完全支持Valgrind安装MPI。根据Valgrind documentation。我应该在已安装MPI的情况下进行编译,但根据MPICHOpenMPI文档,我应该已经安装了Valgrind进行编译。这很令人困惑,我应该先安装哪个?

2 个答案:

答案 0 :(得分:2)

这里没有循环依赖。相反,您将面临两种将Valgrind客户端请求放在不同位置的不同方法。

可以使用特定于OMPI的Valgrind支持构建Open MPI。这不同于构建具有MPI支持的Memchecker,因为它还允许检查OMPI内部(这就是为什么它还要求您在OMPI中启用调试)。 Memchecker客户端请求以特定于OMPI的方式成为库代码的一部分。这不需要更改Valgrind代码,即它应该适用于任何Valgrind安装(假设满足最低版本要求)

另一方面,Open MPI以及任何其他MPI实现提供了PMPI分析界面。 Memchecker可以使用它来提供通用MPI支持。如文档中所述,Memchecker构建了一个替换(并包装)原始MPI调用的函数库(这就是PMPI机制的工作方式 - 所有MPI_*调用都是弱符号,可以被覆盖在同名的其他符号中,真正的MPI调用实际上是PMPI_*,而MPI_*被定义为ELF系统上的弱别名)。这不需要更改MPI库代码。它应该适用于任何MPI实现,但只能正确调试用户内存,即可能在MPI库代码中检测到误报(尽管那些不必是误报,可能意味着库本身就是错误的)。

同样适用于MPICH的Valgrind支持。

答案 1 :(得分:1)

你说你打算用MPI支持安装valgrind。这意味着你可以使用mpicc或其他一些mpi编译器。 valgrind要求的是,使用相同的编译器构建。如果您打算使用valgrind本身调试任何这些mpi编译器,则需要按照Valgrind Integration部分下的说明进行操作。

没有关于您使用哪种发行版的信息。在Debian系统上,valgrind-mpi可能是您正在寻找的软件包。