在CentoOS7上编译安装python3的Mpi4py

一、参考链接

1、官方安装文档
https://mpi4py.readthedocs.io/en/stable/install.html

2、源码包下载地址
https://github.com/mpi4py/mpi4py/releases

二、编译安装步骤

1、前提:系统已安装好OpenMPI或IntelMPI的环境

#使用which命令查看到已存在mpi的程序
$ which mpicc
/software/OpenMPI/4.0.5/bin/mpicc

2、解压&&编译安装

tar -xvf mpi4py-3.1.4.tar.gz
cd mpi4py-3.1.4

#构建
python3 setup.py build --mpicc=/software/OpenMPI/4.0.5/bin/mpicc

#使用 --prefix 参数指定安装到/software/Mpi4py目录下
python3 setup.py install --prefix=/software/Mpi4py

3、安装结果

#mpi4py的模块将安装到此目录,产生如下文件
$ cd /software/Mpi4py/lib/python3.8/site-packages
$ ls
mpi4py  mpi4py-3.1.4-py3.8.egg-info
$ cd mpi4py
$ ls
bench.py                           futures       __init__.pyi  __main__.pyi                        MPI.pyi      run.pyi
bench.pyi                          include       libmpi.pxd    mpi.cfg                             __pycache__  util
dl.cpython-38-x86_64-linux-gnu.so  __init__.pxd  lib-pmpi      MPI.cpython-38-x86_64-linux-gnu.so  py.typed
dl.pyi                             __init__.py   __main__.py   MPI.pxd 

4、使用

将编译的模块路径追加到 PYTHONPATH 环境变量即可使用Mpi4py的模块

export PYTHONPATH=$PYTHONPATH:/software/Mpi4py/lib/python3.8/site-packages

5、实际运行测试

解压的源码包目录下有一个名为test的目录,该目录下有很多测试脚本,可以验证安装是否正常

$ cd test
$ ls
arrayimpl.py        test_cco_nb_vec.py     test_ctypes.py      test_fortran.py   test_op.py               test_rma.py
dlpackimpl.py       test_cco_ngh_buf.py    test_datatype.py    test_grequest.py  test_p2p_buf_matched.py  test_spawn.py
mpiunittest.py      test_cco_ngh_obj.py    test_dl.py          test_group.py     test_p2p_buf.py          test_status.py
__pycache__         test_cco_obj_inter.py  test_doc.py         test_info.py      test_p2p_obj_matched.py  test_subclass.py
runtests.py         test_cco_obj.py        test_dynproc.py     test_io.py        test_p2p_obj.py          test_threads.py
spawn_child.py      test_cco_vec.py        test_environ.py     test_memory.py    test_pack.py             test_util_dtlib.py
test_address.py     test_cffi.py           test_errhandler.py  test_mpimem.py    test_pickle.py           test_util_pkl5.py
test_attributes.py  test_comm_inter.py     test_errorcode.py   test_msgspec.py   test_rc.py               test_win.py
test_cco_buf.py     test_comm.py           test_exceptions.py  test_msgzero.py   test_request.py
test_cco_nb_buf.py  test_comm_topo.py      test_file.py        test_objmodel.py  test_rma_nb.py
#也可以自己写一个测试程序来运行测试
$ cat test.py
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
print("Hello, world! I am rank %d." % rank)
#测试运行,-n 指定并行计算使用的核心数
$ mpirun -n 4 python3 test.py
Hello, world! I am rank 2.
Hello, world! I am rank 3.
Hello, world! I am rank 0.
Hello, world! I am rank 1.

6、编译中的坑
如果build过程中出现error的错误,有可能是系统自带或yum安装的python3缺少一些模块,可以根据错误的提示信息安装指定模块并添加到 PYTHONPATH 环境变量即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值