当运行Valgrind的检测MPI应用程序中的错误,我得到以下错误:为MPICH配置的valgrind:错误libmpi * .so文件使用
libmpi.so.0: cannot open shared object file: No such file or directory
我发现了以下工作: Valgrind documentation(第4.9节.1)指出:“MPI被包装的函数被假定为在与soname匹配的ELF共享对象libmpi.so *中,至少对Open MPI和Quadrics MPI来说这是正确的,并且可以很容易地被改变需要。”
因此,因为我使用mpich2,它实际上应该使用libmpich.so.1.0。
这可以看出,在libmpiwrap.c:
#include "mpi.h"
/* Where are API symbols?
Open MPI lib/libmpi.so, soname = libmpi.so.0
Quadrics MPI lib/libmpi.so, soname = libmpi.so.0
MPICH libmpich.so.1.0, soname = libmpich.so.1.0
A suitable soname to match with is therefore "libmpi*.so*".
我的问题是:在哪里以及如何配置呢?
你是如何配置/安装Valgrind的? MPICH2怎么样?IIRC它只是在你正确指定'--with-mpicc =/path/to/mpicc'到Valgrind的'configure'时起作用。还要确保您的MPICH2安装配置了“--enable-shared”。 –
根据valgrind文档,会自动检测mpi安装。我在哪里可以看到哪些mpi安装valgrind使用?配置只是告诉我,mpicc已被发现。 – mort
然后只要确保检测到正确的MPI安装。 '--with-mpicc ='选项只是帮助Valgrind找到正确的MPI安装。 –