0

我有一个天真的问题:我编译了一个版本的 Openmpi 1.4.4。与 Valgrind :

./configure --prefix=/opt/openmpi-1.4.4/ --enable-debug --enable-memchecker --with-valgrind=/usr....

我想做内存检查。

通常用于调试(和运行),我在 Ubuntu 分发版中使用 OpenMPI 编译它

CC =            mpic++
CCFLAGS =   -g

问题是,我可以只用 Ubuntu 发行版 MPI 1.4.3 编译我的代码,然后用这个modified(valgrind)mpirun 版本运行:

mpirun -np 8 valgrind ....

?

4

1 回答 1

3

你总是可以mpirun -np 8 valgrind ...用任何 MPI 实现和任何 valgrind 来做这件事。但是您(当然)不会获得内置于 OpenMPI 安装中的 memchecker 的全部好处,您在启用 memcheck 并指向您的 valgrind 的情况下构建。

还要注意,如果你这样做,你可能会在 MPI 例程中从 valgrind 得到很多误报;您可以通过为您的库存 Ubuntu OpenMPI 构建 valgrind MPI 包装器来改进它,如Valgrind 手册中所述。

但是,对于使用一个 MPI 发行版编译代码并使用另一个发行版运行它,这只会导致问题,而不管整个有/没有 valgrind 的事情。在实践中,OpenMPI 1.4.3 和 1.4.4 非常相似,它可能会工作,但我不推荐它,因为它只会引入不确定性——而且你运行 valgrind 的原因是为了追踪问题,对?引入一个可能出现问题的新地方是没有意义的。

于 2012-06-18T13:27:21.977 回答