【问题标题】:Parallel Group setup & mpi4py/OpenMDAO 2.2.X并行组设置和 mpi4py/OpenMDAO 2.2.X
【发布时间】:2018-06-05 19:27:16
【问题描述】:

我正在尝试使用 mpi/openmdao 的并行化。

我已经在各种 ubuntu 计算机以及 windows 上尝试过 ubuntu bash(windows 10 的一项功能)

依赖项独立工作正常(即 import petsc4py 和 import mpi4py 工作正常,我可以运行这些类似于链接的测试:https://openmdao.readthedocs.io/en/1.7.3/getting-started/mpi_linux.html & http://mpi4py.scipy.org/docs/usrman/install.html)

但是openmdao 2.2中的Paralel Group代码。手动不起作用。 对于每次尝试(不同的计算机),我似乎都会遇到另一个错误,其中大多数似乎是兼容性错误(即我安装了 petsc4py,它破坏了 numpy 或 mpi4py 安装,导致现有 openmdao 核心出现问题。)

在某些计算机上,我安装了自己的 openmpi 和 petsc,但 conda install 命令已经安装了这些。

最终我在一个新启动的亚马逊实例上尝试了这些步骤 但有类似的问题。

sudo apt-get install build-essential 
wget http://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh    
bash Anacond*
sudo apt-get install libibnetdisc-dev
sudo apt-get install libblas-dev libatlas-dev liblapack-dev
conda install mpi4py
conda install -c conda-forge petsc4py 

如果我在其中一台计算机上检查“conda list”,则缩写输出是;

mpi                       1.0                       mpich    conda-forge                                                                                      
mpi4py                    3.0.0              py36_mpich_1    conda-forge                                                                                      
mpich                     3.2.1                         1    conda-forge                                                                                      
mpich2                    1.4.1p1                       0    anaconda                                                                                         
mpmath                    1.0.0            py36hfeacd6b_2                                                                                                     
msgpack-python            0.5.1            py36h6bb024c_0                                                                                                     
multipledispatch          0.4.9            py36h41da3fb_0                                                                                                     
mumps                     5.0.2           blas_openblas_208  [blas_openblas]  
conda-forge                                                                     
numpy                     1.14.3          py36_blas_openblas_200  [blas_openblas]  conda-forge                                                                
numpydoc                  0.7.0            py36h18f165f_0                                                                                                                                                                          
openblas                  0.2.20                        8    conda-forge                                                                                      
openmdao                  2.2.1                     <pip>                                                                                                     
openpyxl                  2.4.10                   py36_0                                                                                                     
openssl                   1.0.2o                        0    conda-forge                                                                                      
petsc                     3.9.1           blas_openblas_0  [blas_openblas]  
conda-forge                                                                       
petsc4py                  3.9.1                    py36_0    conda-forge                                                                                      
pexpect                   4.3.1                    py36_0                                                                                                     
pickleshare               0.7.4            py36h63277f8_0                                                                                                     
pillow                    5.0.0            py36h3deb7b8_0                                                                                                     
pip                       10.0.1                    <pip

如果尝试运行在同一系统上 mpirun -n 2 python my_par_model.py 根据手动代码,这就是我得到的

有没有人建议它可能会失败,或者我可以遵循哪些步骤来实现 anconda/openmdao/petsc/mpi4py 和成功运行并行 openmdao?

【问题讨论】:

    标签: openmdao


    【解决方案1】:

    您可以看看我们的 .travis.yml 文件中存在的 linux 安装实现吗? https://github.com/OpenMDAO/OpenMDAO/blob/master/.travis.yml

    这适用于在 Travis CI 上的 Trusty Tahr 实例上从头开始安装和测试 OpenMDAO。我第一眼看到的一个区别是我们使用 pip 将 mpi 和 PETSc 安装到 conda 安装的 python 中。

    【讨论】:

    • 如果没有记错,执行“conda install mpi4py”将使用 mpich 而不是 openmpi 构建它。我们只用 openmpi 进行测试。看来我们的 mpich 有问题。
    【解决方案2】:

    我认为 MPI 兼容性是主要问题。我不知道它必须是 openmpi 并且确实 conda install 命令安装了 mpich 并可能导致 openmdao 出现问题。

    我将继续进行更多测试,但对于从全新安装的 ubuntu-16.04.4-desktop-amd64.iso 开始的工作系统,我遵循了这些步骤;

    (需要时间的步骤是openmpi安装和petsc4py pip安装。)

    1 ) 对于一些依赖项(取自https://gist.github.com/mrosemeier/088115b2e34f319b913a

    sudo apt-get install libibnetdisc-dev
    sudo apt-get install libblas-dev libatlas-dev liblapack-dev
    

    2) 下载/安装 OpenMPI(主要取自http://lsi.ugr.es/jmantas/pdp/ayuda/datos/instalaciones/Install_OpenMPI_en.pdf

    wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.0.tar.gz 
    tar -xzf openmpi-3.1.0.tar.gz 
    cd openmpi-*
    ./configure --prefix="/home/$USER/.openmpi"
    make
    sudo make install
    echo export PATH="$PATH:/home/$USER/.openmpi/bin" >> /home/$USER/.bashrc
    echo export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/$USER/.openmpi/lib/" >> /home/$USER/.bashrc
    

    3) MINICONDA & Rest(大部分取自https://github.com/OpenMDAO/OpenMDAO/blob/master/.travis.yml

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    sh Minicond* # agree to add to the path etc.
    conda install --yes python=3.6
    conda install --yes numpy==1.14 scipy=0.19.1 nose sphinx mock swig pip;
    pip install --upgrade pip;
    pip install mpi4py
    pip install petsc4py==3.9.1
    #petsc4py Gives an error failed building wheel for petsc but then installs petsc itself, afterwards, petsc4py is also installed
    
    sudo apt install git  # in the cases git does not exist
    
    # not sure why we need this part but i followed 
    pip install redbaron;
    pip install git+https://github.com/OpenMDAO/testflo.git;
    pip install coverage;
    pip install git+https://github.com/swryan/coveralls-python@work;
    # pyoptsparse and openmdao
    git clone https://github.com/mdolab/pyoptsparse.git;
    cd pyoptsparse;
    python setup.py install;
    cd ..;
    conda install --yes matplotlib;
    
    git clone http://github.com/OpenMDAO/OpenMDAO
    cd OpenMDAO
    pip install .
    
    # optional  
    conda install spyder 
    

    4) 检查版本

    mpirun --version : Open MPI 3.1.0
    python --version : 3.6.5
    pip --version   :  
    pip 10.0.1 from /home/user/miniconda3/lib/python3.6/site-packages/pip (python 3.6)
    
    
    
    conda list : (note that there is no mpich or similar in the conda list) 
    
    openmdao                  2.2.1                     <pip>
    mpi4py                    3.0.0                     <pip>
    petsc                     3.9.2                     <pip>
    petsc4py                  3.9.1                     <pip>
    

    【讨论】:

    • mpich 本身不会导致 OpenMDAO 出现问题。但是在构建 MPI 和 PETSc 时需要小心,所有内容都链接到相同的底层 MPI 库。你不能让 petsc 链接到 openmpi,而 mpi4py 链接到 mpich。那是行不通的。
    • 好的,那么我不知道为什么它首先不起作用,因为我没有在系统中安装任何 openmpi 并且只有单个版本的 mpi。我也会检查的。在那之前,可以使用我列出的步骤进行安全安装。感谢您的意见。
    • pip install redbaron; pip install git+https://github.com/OpenMDAO/testflo.git; pip install coverage; pip install git+https://github.com/swryan/coveralls-python@work; 仅用于文档构建、测试和代码覆盖。大多数安装都可以不用这些东西。
    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多