Using MPI in MEX function

I am trying to run parallel code which is designed in the following way: I launch multiple MPI processes where only one of them (master) calls matlab script which further calls mex function in which I want to set-up MPI communication with the rest of the processes launched at the beginning. However, I am getting a MPI runtime error:
It looks like MPI_INIT failed for some reason; your parallel process is
likely to abort. There are many reasons that a parallel process can
fail during MPI_INIT; some of which are due to configuration or environment
problems. This failure appears to be an internal failure; here's some
additional information (which may only be relevant to an Open MPI
developer):
ompi_mpi_init: ompi_rte_init failed
--> Returned "(null)" (-43) instead of "Success" (0)
Does anybody have experience with similar approach? Is it possible to use MEX function and MPI together? I am using openmpi-2.0.0 and R2014b
The Matlab/C/Mex code is here: https://github.com/goghino/matlabMpiC

 Accepted Answer

Juraj
Juraj on 12 Oct 2016
Edited: Walter Roberson on 28 Oct 2017
THIS APPROACH DOES NOT WORK!!!!!
The blocker is that a child cannot call MPI_Init() if its parent already called MPI_Init()
Fortunatly, there are some options (which I have not tried):-)
1) MPI_Comm_spawn matlab
master can MPI_Comm_spawn() matlab, and then matlab can merge the parent communicator, and communicate to master and slaves

More Answers (0)

Categories

Asked:

on 29 Sep 2016

Edited:

on 28 Oct 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!