openmpi和valgrind(我可以在Ubuntu发行版中用MPI编译吗?)

openmpi和valgrind(我可以在Ubuntu发行版中用MPI编译吗?),mpi,valgrind,openmpi,Mpi,Valgrind,Openmpi,我有一个天真的问题: 我编译了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发行版

我有一个天真的问题: 我编译了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编译代码,然后使用此
修改的
(valgrind)MPI运行版本运行:

mpirun -np 8 valgrind ....

您始终可以对任何MPI实现和任何valgrind执行
mpirun-np 8 valgrind…
位。但是,您(当然)无法充分利用OpenMPI安装中内置的memchecker,而您是在启用memcheck并指向valgrind的情况下构建的

还要注意的是,如果您这样做,您可能会在MPI例程中从valgrind获得大量误报;您可以通过为您的股票Ubuntu OpenMPI构建valgrind MPI包装来改进这一点,如中所述


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

您总是可以对任何MPI实现和任何valgrind执行
mpirun-np 8 valgrind…
位。但是,您(当然)无法充分利用OpenMPI安装中内置的memchecker,而您是在启用memcheck并指向valgrind的情况下构建的

还要注意的是,如果您这样做,您可能会在MPI例程中从valgrind获得大量误报;您可以通过为您的股票Ubuntu OpenMPI构建valgrind MPI包装来改进这一点,如中所述

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