微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Python 3.x在SLURM上针对OpenMPI构建mpi4py

如何解决使用Python 3.x在SLURM上针对OpenMPI构建mpi4py

我正在尝试在SLURM计划表(特别是JASMIN)上针对OpenMPI构建mpi4py。我可以使它正常工作的唯一方法是使用python 2.7,但是我对python 3.6或3.7(我需要的)没有任何运气。我将展示每种情况的步骤,并介绍我遇到的错误

Python 2.7

wget https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-3.0.3.tar.gz
tar -zxf mpi4py-3.0.3.tar.gz
cd mpi4py-3.0.3 
module add eb/OpenMPI/gcc/3.1.1
python setup.py build --mpicc=/apps/eb/software/OpenMPI/3.1.1-GCC-7.3.0-2.30/bin/mpicc
python setup.py install --user
python setup.py clean

mpirun -np 5 python demo/helloworld.py

输出

Hello,World! I am process 1 of 5 on host595.jc.rl.ac.uk.
Hello,World! I am process 3 of 5 on host595.jc.rl.ac.uk.
Hello,World! I am process 4 of 5 on host595.jc.rl.ac.uk.
Hello,World! I am process 0 of 5 on host595.jc.rl.ac.uk.
Hello,World! I am process 2 of 5 on host595.jc.rl.ac.uk.

Python 3.6(JASPY)

wget https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-3.0.3.tar.gz
tar -zxf mpi4py-3.0.3.tar.gz
cd mpi4py-3.0.3
module load jaspy
module add eb/OpenMPI/gcc/3.1.1
python3.6 setup.py build --mpicc=/apps/eb/software/OpenMPI/3.1.1-GCC-7.3.0-2.30/bin/mpicc
 

在构建步骤失败:

In file included from src/MPI.c:4:0:
src/mpi4py.MPI.c:4:20: Fatal error: Python.h: No such file or directory
 #include "Python.h"
                    ^
compilation terminated.
error: command '/apps/eb/software/OpenMPI/3.1.1-GCC-7.3.0-2.30/bin/mpicc' Failed with exit status 1

Python 3.7(JASPY)

wget https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-3.0.3.tar.gz
tar -zxf mpi4py-3.0.3.tar.gz
cd mpi4py-3.0.3
module load jaspy
module add eb/OpenMPI/gcc/3.1.1
python3.7 setup.py build --mpicc=/apps/eb/software/OpenMPI/3.1.1-GCC-7.3.0-2.30/bin/mpicc
python3.7 setup.py install --user
python3.7 setup.py clean

mpirun -np 5 python demo/helloworld.py

每个进程失败并出现错误

Traceback (most recent call last):
  File "demo/helloworld.py",line 6,in <module>
    from mpi4py import MPI
ImportError: /home/users/username/.local/lib/python3.7/site-packages/mpi4py/MPI.cpython-37m-x86_64-linux-gnu.so: undefined symbol: ompi_mpi_logical8

。 。 。 值得一提的是,如果我使用JASMIN的JASPY MPI环境,可以使mpi4py与python 3.6或3.7一起使用:

module load jaspy
mpirun -np 5 python3.7 demo/helloworld.py

Hello,World! I am process 2 of 5 on host595.jc.rl.ac.uk.
Hello,World! I am process 0 of 5 on host595.jc.rl.ac.uk.

这使用OpenMPI实现,但是我被告知MPI通信将使用与存储IO相同的网络路径,因此建议我针对模块环境OpenMPI(OpenMPI / 3.1.1-GCC-7.3.0)构建mpi4py。 -2.30),因为MPI通信使用到存储IO的不同网络路径。

对于 a)的任何建议,我是否都值得参考,因为为存储IO设置不同的网络路径(与JASPY MPI选项相比)是否值得针对OpenMPI构建mpi4py。因此 b),如何更改上述设置才能使其在python 3.6和或3.7上正常工作?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。