啟用valgrind的MPI支援
TL;DR
sudo apt install valgrind-mpi
記憶體泄漏和越界問題,是C/C++程式常見問題。有一些工具提供了檢測記憶體泄漏的功能,如 valgrind 的 memchecker。
其工作原理大致是這樣的:通過替換掉可能分配記憶體的函數,來追蹤記憶體使用情況,典型如重載 malloc/free。當然,這也就意味著,棧上分配的靜態數組越界是無法檢測到的。
valgrind最早用於單進程記憶體檢測,但是後續也提供了多進程支援,如MPI。手工編譯安裝valgrind比較麻煩,這裡我們使用包管理器提供的預編譯好的版本。
安裝valgrind:
sudo apt install valgrind
然後查看系統中此時是否提供了mpiwrapper:
ompi_info | grep mpi
輸出為空,默認沒有提供mpiwrapper,通過以下命令安裝:
sudo apt install valgrind-mpi
再次執行命令查看,可以看到:
libmpiwrap-amd64-linux.so
mpi支援庫已經安裝。
ps:
常見問題測試樣例和檢測命令,可參考@Madcola Linux下記憶體問題檢測神器:Valgrind。
系統環境:
- Ubuntu 18.04 LTS
- Open MPI v4.0.4