我有一个幼稚的问题:我编译版本1.4.4的openmpi的。 用Valgrind的:
./configure --prefix=/opt/openmpi-1.4.4/ --enable-debug --enable-memchecker --with-valgrind=/usr....
我想要做的内存检查。
通常对于debuggin(和运行)我的openmpi编译它在Ubuntu含分布
CC = mpic++
CCFLAGS = -g
现在的问题是,我可以编译我的代码只是Ubuntu的发行版MPI 1.4.3,然后用这个运行modified
(Valgrind的)的mpirun版本:
mpirun -np 8 valgrind ....
?
你总是可以做到mpirun -np 8 valgrind ...
位与任何MPI实现任何的valgrind。 但是你不能将(当然)获得内置到的openmpi安装memchecker你启用MEMCHECK和指向你的valgrind内置的全部好处。
还要注意的是,如果你这样做,你可能会得到很多从MPI程序的valgrind误报; 你可以通过建立Valgrind的MPI包装为你的股票的Ubuntu的openmpi,如所描述的改善这种Valgrind的手册 。
但至于编译代码与一个MPI分布和另一运行它,那只能导致问题,无论是整体搭配/无Valgrind的事情。 在实践中,1.4.3的openmpi和1.4.4非常相似,以至于它可能会工作,但我不会推荐它,因为它只是引入了不确定性 - 为什么你的valgrind反正运行的原因是为了追查问题,对? 有一个在这里引入可能发生的问题一个新的地方没有任何意义。