當運行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安裝。 –