Search code examples
openmdao

Parallel Group setup & mpi4py/OpenMDAO 2.2.X


I am trying to use the parallelization with mpi/openmdao.

I have tried on various ubuntu computers as well as ubuntu bash on windows (a windows 10 feature)

The dependencies work fine independently (i.e. import petsc4py and import mpi4py works fine and I can run the tests of these similar to the links: https://openmdao.readthedocs.io/en/1.7.3/getting-started/mpi_linux.html & http://mpi4py.scipy.org/docs/usrman/install.html)

But the Paralel Group code in the openmdao 2.2. manual does not work. For each attempt (varying computers) i seem to get another error most of them seemed like compatibility errors (i.e. I install petsc4py which breaks numpy or mpi4py installation causing proble in the existing openmdao core. )

On some computers I had my own openmpi and petsc installed but conda install command already installs those as far as I see.

Eventually I have tried these steps on a newly started amazon instance but had similar problems.

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 

if i check ''conda list'' onone of the computers the abbreviated output is ;

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

On the same system if try to run mpirun -n 2 python my_par_model.py based on the manual code this is what i get

aws snapshot

Does anyone have a suggestion where it could be failing or what steps i could follow for ubuntu implementation of anconda/openmdao/petsc/mpi4py and succesful run of paralel openmdao ?


Solution

  • I think MPI compatibility was the main issue. I was not aware that it had to be openmpi and indeed conda install command installs the mpich and possibly causing a problem with openmdao.

    I will continue doing more tests but for a working system starting from a brand new installation of ubuntu-16.04.4-desktop-amd64.iso I followed these steps;

    (Steps that take time are the openmpi installation and petsc4py pip instalattion.)

    1 ) For some dependencies (taken from https://gist.github.com/mrosemeier/088115b2e34f319b913a)

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

    2) Download/Install OpenMPI (mostly taken from 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 (mostly taken from 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) Check the versions

    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>