在Unbuntu 16.04上安装openmpi和mpi4py

想重现开源项目https://github.com/tomgoldstein/loss-landscape,因此需要安装openmpi和mpi4py。该开源项目所需的numpy、h5py、matplotlib和scipy,均可在pycharm中安装,openmpi和mpi4py则需单独安装。(注:后来发现在pycharm里无法直接运行mpi4py命令,外网上有比较高阶的方法,但看了半天还是不知咋整,于是转而在系统控制台下运行——会提示缺少了哪些package,根据提示,用sudo pip install xxxx逐个安装就好。如果中间出现了一些小问题,那么把这些小问题放到搜索引擎里去查询,也能得到简单的解决方案)。

这里先放一个运行了mpi4py命令后的效果:

resnet

下载openmpi

www.open-mpi.org/software/ompi/v4.0下载openmpi-4.0.5.tar.gz

解压openmpi-4.0.5.tar.gz,进入openmpi-4.0.5目录

安装openmpi

./configure
sudo make all install

添加库共享路径

sudo gedit /etc/profile

在profile文件的最后,加上一行(根据自己本机上openmpi的安装路径来写):

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/openmpi

使该配置文件生效:

source /etc/profile

进行测试

cd openmpi-4.0.5/examples
make
mpirun -np 4 hello_c

结果在make时报错:

mpicc: error while loading shared libraries: libopen-pal.so.4: cannot open shared object file:No such file or directory

于是在home下执行apt-file search libopen-pal.so.4

由于不曾安装过apt-file,系统提示安装。还需要先把apt-get给update了。直接apt-get update后运行apt-file search libopen-pal.so.4还是报错。尝试了以下步骤后成功:

add-apt-repository main
add-apt-repository universe
add-apt-repository restricted
add-apt-repository multiverse
apt-get update
apt-get install apt-file
apt-file search libopen-pal.so.4

再次进行测试,即可成功。其中mpirun -np 4 hello_c的数字4,表示进程数为4。

hello_c

安装mpi4py

https://pypi.tuna.tsinghua.edu.cn/simple/mpi4py/下载mpi4py-3.0.3.tar.gz,然后解压安装:

tar -xvzf mpi4py-3.0.3.tar.gz
cd mpi4py-3.0.3
python setup.py build
python setup.py install

测试mpi4py

在demo目录下运行helloworld.py来测试 mpi4py 是否安装好及能否正常使用:

cd demo

用下面的命令运行该程序:

mpiexec -n 3 python helloworld.py

显示:

helloworld