Process migration for OpenMPI

From MosixWiki
Revision as of 13:05, 22 September 2012 by Amnon (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

OpenMPI is a popular implementation of the MPI standard that is relatively easy to use and extend. For these reason we have chosen OpenMPI for developing support for migratable MPI processes using the MOSIX framework. Our code was submitted to the OpenMPI community for their approval to commit the patch into the mainline.

For now, the patches for both the stable 1.6 branch and the development trunk are available. These patches are released under the OpenMPI community license http://www.open-mpi.org/community/license.php

Please contact us if you have any questions or suggestions.

Installation

1. Download the developers version of the OMPI source code from the OMPI repositories, see instructions at http://www.open-mpi.org/svn/ . Make sure the file "autogen.sh" is located in the head folder. For example, run:

svn co http://svn.open-mpi.org/svn/ompi/trunk

2. Download the patch file according to the OpenMPI version you have chosen:

OpenMPI 1.6.x http://www.MOSIX.org/mpi/patch-openmpi-branch
OpenMPI trunk http://www.MOSIX.org/mpi/patch-openmpi-trunk-no-libevent

3. Enter the topmost folder of the OMPI you've just downloaded and apply the patch, by running:

cd openmpi
patch -p0 < mosix_ompi_trunk.patch

4. Build the OMPI source into binary. This step is where you can add or remove additional features. Make sure you do not skip the "autogen" phase, otherwise the patch will not be detected. MOSIX support will be included by default.

For example, you can run:

./autogen.sh
./configure
make
make install

Running OpenMPI over MOSIX

After the OpenMPI is built successfully using the patch described above, running jobs with "mpirun" should automatically use the MOSIX support to launch migratable processes. In order to fine-tune the launched application, or use advanced MOSIX features such as multi-cluster, flags can be passed on to "mpirun" like any other flags.

The MOSIX support patch for OMPI consists of 3 components, each with its own flags:

1. BTL - Responsible for send/recv actions.

2. ODLS - Responsible for launching the application (typically uses fork syscall).

3. RAS - Responsible for the job resource allocation.

In order to get the list of available flags, run:

ompi_info --param <component> mosix

For example, for launching an OpenMPI job with all processes locked (prevent migration) run:

mpirun -mca odls_mosix_lock=1 executable