之前開發mpi程序的時候,編譯測試都在服務器上,通過vscode remote來遠程開發。但是vscode的cpptools插件存在嚴重的性能問題,且至今都看不到改善的希望,導致性能測試的時候經常出現劇烈的波動。由於本地有一個8核32G內存的機器,開發編譯mpi程序完全夠用,打算把開發環境放回本地,服務器只用來性能測試,告別vscode remote的影響。
因為本地機器還有office處理、即時通信等需求,所以我們不直接使用Linux,而是在Win10的WSL內開發mpi程序。步驟如下:
本地用的Ubuntu的WSL環境,默認的openmpi是2.x版本,比較老舊,我們手動安裝stable的3.4.2版本。
下載源碼並解壓:
cd
wget http://www.mpich.org/static/downloads/3.4.2/mpich-3.4.2.tar.gz
tar -xvzf mpich-3.4.2.tar.gz
創建安裝文件夾:
mkdir mpich-install
配置和編譯:
cd mpich-3.4.2
./configure -prefix=$HOME/mpich-install --with-device=ch3 --disable-fortran
make -j8 && make install -j8
- wsl不支持默認的ch4,報錯
configure: error: no ch4 netmod selected,根據建議我們使用ch3設備;同時我也需要fortran支持,也不安裝 *
修改並激活環境變量:
export MPI_ROOT=$HOME/mpich-install
export PATH=$MPI_ROOT/bin:$PATH
export MANPATH=$MPI_ROOT/man:$MANPATH
source ~/.bashrc
測試:
which mpicc
mpirun -np 8 ./examples/cpi
ps: 如果代碼中用到了 numa,為了編譯能通過而不必每次都來回修改源文件和Makefile,可以通過以下方式安裝 numa 庫通過編譯:
Ubuntu: sudo apt install libnuma-dev
CentOS: sudo yum install libnuma-devel
