[MPICH] a question about MPI - Pblm in Publish/Lookup with SMPD

Jayesh Krishna jayesh at mcs.anl.gov
Wed Nov 7 16:44:36 CST 2007


Hi,
 MPI_Publish_name() and MPI_Lookup_name() work as defined in MPI standard
with the MPD process manager. However MPD is only available on unix. You
could try using MPD on unix or cygwin (Install cygwin on windows. Compile
MPICH2 and run using the MPD process manager. See the user's guide for
details.).
 We are also in the process of development of a new process manager which
will replace SMPD. This process manager will be available on windows as well
as unix and will support Publish/lookup (It should be available sometime
early next year.).
 
(Note: Part of the problem why publish/lookup does not work as defined in
the standard has to do with the design of SMPD. SMPD, unlike MPD, does not
have any prior connection with other SMPDs before launching an MPI job and
hence it is difficult to publish names across multiple MPI jobs.)
 
Regards,
Jayesh

  _____  

From: owner-mpich-discuss at mcs.anl.gov
[mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Jayesh Krishna
Sent: Wednesday, November 07, 2007 2:37 PM
To: 'menglige'
Cc: 'mpich-discuss'; mpich2-maint at mcs.anl.gov
Subject: RE: [MPICH] a question about MPI - Pblm in Publish/Lookup with SMPD


Hi,
 We are looking into the problem (The problem is not in your code. It is a
bug in the SMPD process manager.). Meanwhile, as a workaround, try putting a
barrier after publish and before lookup and run the programs as below,
 
      mpiexec -n 1 LookupClient.exe : -n 1 PublishServer.exe
 
 The excerpt from the modified files are given below for your reference,
 
############# LookupClient.c #######################
 
int main(..){
...
MPI_Get_processor_name(processor_name,&namelen); 

MPI_Barrier(MPI_COMM_WORLD);

MPI_Lookup_name(serv_name, MPI_INFO_NULL, port_name_out );

...
}
 
############# PublishServer.c #######################
 
int main(...){
...
MPI_Open_port(MPI_INFO_NULL, port); 

printf("opened port...<%s>\n", port);

fflush(stdout);

merr = MPI_Publish_name( serv_name, MPI_INFO_NULL, port );

MPI_Barrier(MPI_COMM_WORLD);

...
}
 
###############################################
 
 Let us know if it works for you.
 
Regards,
Jayesh

  _____  

From: owner-mpich-discuss at mcs.anl.gov
[mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of menglige
Sent: Tuesday, November 06, 2007 7:12 PM
To: mpich-discuss
Subject: [MPICH] a question about MPI


HELLO!
    i hava two '.exe' ,and i want to send message from one to the other.  
i use 'mpiexec' to run send.exe 
and then use 'mpiexec' to run receive.exe,
but there is an erro ,receive.exe can find the published port .what 's wrong
with me ??? (i hava attached my code).
THANK YOU VERY MUCH 
 
  _____  

menglige
2007-11-06
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20071107/aaca8057/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 1662 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20071107/aaca8057/attachment.gif>


More information about the mpich-discuss mailing list