<div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">Hi Hui,</font></font></span></div><br><div>Sorry the late response.</div><br><div>No problem!<span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif"> The application that I am developing is a tool that automates the parallelisation of scientific simulations as part of an advanced parameter sweeping algorithm. One of the key goals is to do this in a modular manner. I have decided to let the simulation be performed by an executable provided by the user, a so-called "simulator". This provides the most flexibility as the user can then write their simulator in any programming or scripting language. Moreover, this also implies that the user can make use of any software package or library.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">For regular non-MPI simulators, my application invokes the simulator with the system calls fork() and exec(). These types of simulator work perfectly fine with my application as it currently stands.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">However, when the simulator itself uses MPI, the fork-exec fails because an MPI application forking another MPI application is undefined and causes all kinds of troubles. Thus, I have resorted to using the native MPI_Comm_spawn function for dynamic process management for those cases.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">A possible counterpoint to all of this is that there is no use in running parallel instances of an MPI simulator because the simulator itself parallelised. However, this is not always the case because some simulation software packages are written using external libraries that use MPI internally, such as PETSc, despite the application itself not being parallelised. Even though this case might be somewhat niche, it is exactly the situation that I am in.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">In summary, my MPI application calls external executables provided by the user and runs many parallel instances of them. The external executable itself may be an MPI application, in which case MPI_Comm_spawn is necessary.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">In a way, the reason I need MPI_Comm_spawn to work is because MPI has become so ubiquitous in scientific computing that even non-parallelised simulators might be using MPI under the hood.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">I hope this helps.</font></font></span></div><br><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">Best wishes,</font></font></span></div><div><span style="color:rgb(35, 31, 32)"><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">Thomas Pak</font></font></span></div><br><div class="gmail_quote_attribution">On Dec 6 2018, at 4:00 pm, Zhou, Hui <zhouh@anl.gov> wrote:</div><blockquote><div><div>Hi Thomas,</div><div><br></div><div>Sure. While I am finding time looking into this, could you talk a bit more about your application? The dynamic MPI processes is still a new territory despite its presence for many years. One of the reasons is due to lack of exposure for such applications. </div><div><br><div><div><div><div><div><div><font style="font-size:12px"><font style="font-family:Helvetica">— </font></font></div><div><font style="font-size:12px"><font style="font-family:Helvetica">Hui Zhou</font></font></div><div><br></div></div></div></div></div><br></div><div><br><blockquote><div>On Dec 6, 2018, at 6:11 AM, Thomas Pak <<a href="mailto:thomas.pak@maths.ox.ac.uk" title="mailto:thomas.pak@maths.ox.ac.uk">thomas.pak@maths.ox.ac.uk</a>> wrote:</div><br><div><div>Hi Hui,</div><br><div>That is exactly right, thanks so much for looking into it! Please let me know if you make any progress on this issue, as the application I am developing critically depends on MPI_Comm_spawn.</div><br><div>Best wishes,</div><div>Thomas Pak</div></div></blockquote></div></div></div></blockquote>