我試圖在Linux下安裝Valgrind
,並且完全支持MPI
。根據Valgrind documentation。我應該編譯已安裝的MPI
,但根據MPICH和OpenMPI文檔,我應該編譯已安裝的Valgrind
。這很混亂,我應該先安裝哪一個?用MPI支持編譯Valgrind
2
A
回答
1
你說你打算安裝帶MPI支持的valgrind。這意味着你可以使用mpicc或其他mpi編譯器。 Valgrind所要求的是,用相同的編譯器來構建。如果您打算使用valgrind本身調試任何這些mpi編譯器,則需要遵循Valgrind Integration部分下的說明。
沒有關於您使用哪種分配的信息。在Debian系統上,valgrind-mpi可能是您正在尋找的軟件包。
2
這裏沒有循環依賴。相反,您正面臨將Valgrind客戶端請求置於不同位置的兩種不同方法。
開放式MPI可以使用OMPI特有的Valgrind支持來構建。這與構建支持MPI支持的Memchecker不同,它還允許檢查OMPI內部(這也是爲什麼它還要求您在OMPI中啓用調試)。 Memchecker客戶端請求以OMPI特定的方式成爲庫代碼的一部分。這不需要修改Valgrind代碼,也就是說它應該可以與任何Valgrind安裝一起工作(假定滿足最低版本要求)
另一方面,Open MPI以及任何其他MPI實現提供了PMPI
分析界面。這可以被Memchecker用來提供通用MPI支持。如文檔中所述,Memchecker構建了一個函數庫,用於替換(幷包裝)原始MPI調用(這是PMPI
機制的工作方式 - 所有MPI_*
調用都是弱符號,並且可以被其他具有相同名稱的符號覆蓋,真正的MPI調用實際上是PMPI_*
和MPI_*
被定義爲ELF系統上的弱別名)。這不需要更改MPI庫代碼。它應該適用於任何MPI實現,但只有用戶內存才能被正確調試,即在MPI庫代碼中可能檢測到誤報(儘管這些不一定是誤報,並且可能意味着庫本身很麻煩)。
對於MPICH中的Valgrind支持也是如此。
相關問題
- 1. ios編譯ffmpeg不支持ac3支持
- 2. valgrind memcheck支持檢查mmap
- 3. Erlang編譯器UTF32支持
- 4. 編譯器支持C11
- 5. 編譯POCO與支持UTF8
- 6. 用flascc編譯ffmpeg與網絡支持
- 7. 如何用rm/rmvb支持編譯ffmpeg?
- 8. 使用-fPIC支持編譯ghc
- 9. 編譯MPI時出錯
- 10. 編譯哈斯克爾-MPI
- 11. 使用MPI和python編譯boost
- 12. 使用mingw64編譯mpi項目
- 13. 編譯使用mpi的庫(AGMG)
- 14. Rust編譯器支持中斷
- 15. PHP與readline支持編譯爲Windows
- 16. Gradle連續編譯支持SpringBoot嗎?
- 17. Node.js的編譯與OpenSSL的支持
- 18. Pyscopg2 SSL Anaconda支持未編譯
- 19. icarus(iverilog編譯器)的SystemVerilog支持
- 20. 編譯器支持枚舉值
- 21. PCRE編譯時沒有UTF支持
- 22. emacs自定義C++編譯支持
- 23. 編譯3.0可選支持3.1 API
- 24. Erlang erlIDE:支持哪些編譯選項?
- 25. 編譯沒有TLS支持的glibc
- 26. 反編譯器支持Java 8?
- 27. 什麼編譯器支持CUDA
- 28. 編譯R(隨着mulithreads支持)
- 29. MacRuby是否支持靜態編譯?
- 30. 編譯OpenCV的3.3:C++ 11不支持
對不起,如果我原來的帖子不夠清楚。我打算用Valgrind調試我自己的MPI應用程序,而不是實際的MPI編譯器。 Valgrind文檔說用--with-mpicc =/path/to/mpicc進行配置,所以這裏假定你有一個安裝了MPI發行版的版本。但是,例如,在OpenMPI文檔中,它說使用--enable-debug --enable-memchecker --with-valgrind =/path/to/valgrind進行配置 - 在安裝Valgrind之前,我無法做到這一點。 – user787267 2013-02-12 02:31:38
我原來的理解看起來沒問題。你應該沒問題,如果你安裝mpi編譯器,然後用'--with-mpicc =/path/to/mpicc'構建valgrind。這樣很難繼續下去。如果你有任何問題或錯誤的形式,這將是非常有益的。 – vpit3833 2013-02-12 03:31:59