[mpich-discuss] MPI_Comm_Spawn and MPI_Open_port/MPI_Comm_accept/MPI_Comm_connect without using mpiexec and smpd

Jayesh Krishna jayesh at mcs.anl.gov
Tue Jun 28 14:32:10 CDT 2011


Hi,
 The PMI wire protocol is used for communicating between the PMI library (compiled into the MPI program) and the process manager (like SMPD).
 You can replace the PMI library (look into https://svn.mcs.anl.gov/repos/mpi/mpich2/trunk/src/pmi/smpd/smpd_ipmi.c) to change the wire protocol to be compatible with a custom wire protocol that is supported by your process manager OR implement the custom wire protocol used by the PMI library (like SMPD) in your process manager.
 Alternately you can replace both the PMI library and the process manager to implement your own wire protocol. If this is the route you take I would recommend looking into the current PMI2 implementation (PMI library - https://svn.mcs.anl.gov/repos/mpi/mpich2/trunk/src/pmi/pmi2/* & Hydra process manager - https://svn.mcs.anl.gov/repos/mpi/mpich2/trunk/src/pm/hydra/pm/pmiserv/*) and developer documentation related to PMI2 (http://wiki.mcs.anl.gov/mpich2/index.php/PMI_v2_Wire_Protocol).
 PMI (v1) only defined the interface to the process manager (http://www.mpi-forum.org/docs/mpi-20-html/node89.htm#Node89) and multiple vendors have supported this interface. PMI2 also defines the wire protocol (and also has enhancements to PMI v1) allowing vendors to choose to implement just the process manager compatible with PMI wire protocol as discussed above. 
 Hope this helps.

Regards,
Jayesh

----- Original Message -----
From: "Eric Hui" <Eric.Hui at ggy.com>
To: "Jayesh Krishna" <jayesh at mcs.anl.gov>, mpich-discuss at mcs.anl.gov
Sent: Tuesday, June 28, 2011 2:13:53 PM
Subject: RE: [mpich-discuss] MPI_Comm_Spawn and MPI_Open_port/MPI_Comm_accept/MPI_Comm_connect without using mpiexec and smpd

Hi Jayesh,

We are currently using WinSock, so there is no PMI protocol code.  That's why I am starting this investigation.

Suppose that we can add support for the wire protocol in our Windows Service application, then do we still need to use mpiexec / smpd?

What I am trying to figure out is what the mpiexec does when I call MPI_Comm_Spawn or a combination of MPI_Open_port/MPI_Comm_accept/MPI_Comm_connect?

Finally, is PMI specific to the MPICH2 implementation?  I was reading the MPI 2.2 spec and doesn't seem to find any reference to it.

Eric

-----Original Message-----
From: Jayesh Krishna [mailto:jayesh at mcs.anl.gov] 
Sent: Tuesday, June 28, 2011 3:05 PM
To: mpich-discuss at mcs.anl.gov
Cc: Eric Hui
Subject: Re: [mpich-discuss] MPI_Comm_Spawn and MPI_Open_port/MPI_Comm_accept/MPI_Comm_connect without using mpiexec and smpd

 Does your custom process manager (Windows Service) support the PMI wire protocol (protocol used by the PMI library to interact with the process manager)? PMI2 (The newer version of PMI) defines/standardizes the wire protocol and is implemented in the new process manager Hydra. Unfortunately I don't have enough resources to port Hydra to Windows (SMPD only supports PMI-1 and has its own custom wire protocol that you will have to figure out by looking into the code and the debug logs).

Regards,
Jayesh

----- Original Message -----
From: "Eric Hui" <Eric.Hui at ggy.com>
To: mpich-discuss at mcs.anl.gov
Sent: Thursday, June 23, 2011 10:19:26 AM
Subject: [mpich-discuss] MPI_Comm_Spawn and MPI_Open_port/MPI_Comm_accept/MPI_Comm_connect without using mpiexec and smpd




I just started to investigate the possibility of using MPI in our application on the Windows platform. 

Here is what I am trying to accomplish: 

I am trying to use both of the following techniques: 
1. MPI_Comm_Spawn 
2. Client/server model using MPI_Open_port/MPI_Comm_accept/MPI_Comm_connect 

I followed the example code here: 
http://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-2.0/node98.htm#Node98 
http://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-2.0/node106.htm 
and was able to get them working if I use mpiexec / smpd. However, I want to start the executable without using mpiexec / smpd since we already have our own windows service application to deal with compute node resource allocation. 

I already read through a lot of documentations, but couldn't find my answers to some of the basic problems that I am trying to solve: 

1. Base on the MPI 2.2 document section 8.8 here: 
http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf 
It's not a requirement to use mpiexec / mpirun to start an MPI program. 
Is there any example available for starting the MPI program without using mpiexec / mpirun? 

2. I found an example that allows debugging without the use of a process manager by setting environment variable in section 9.8 of this doc: 
http://www.mcs.anl.gov/research/projects/mpich2/documentation/files/mpich2-1.3.2-windevguide.pdf 
It noted that this cannot support MPI_Comm_Spawn. Is that a technical limitation or there is a workaround? 

Thanks in advance for your help! 
Eric _______________________________________________ 
mpich-discuss mailing list 
mpich-discuss at mcs.anl.gov 
https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss 


More information about the mpich-discuss mailing list