[MPICH] Disconnecting spawned processes after MPI_Intercomm_merge

James S Perrin james.s.perrin at manchester.ac.uk
Tue Sep 26 12:02:47 CDT 2006


Hi,
	I'm following up to my earlier query about using forked processes in MPI . As 
this was considered a no-no I've being trying to put together the appropiate 
framework using spawned processes. Simply I want to start a set of spawned 
processes and then end them (due to a 3rd party API forcing an exit) and keep 
the parent processes running.

	After searching online and looking at the MPI-2 spec it seems the use of 
MPI_Comm_disconnect is not well documented. However I've got a simple example to 
work, which just launches and closes the spawned processes once.

	The problem occurs when I create an intracommunicator with 
MPI_Intercomm_merge(). I've tried freeing and disconnecting from the new 
intracomm but the child processes seem to be waiting for the parent to 
MPI_Finalize(). How do I release the intracomm? Is this a bug or feature?

	"Using MPI" implies that I might be better off using intercommunicators for my 
"parallel-server, parallel-client" application so I guess I should explore this.

spawn_master.c
int main (int argc, char * argv[])
{
   int no_exit = 1;
   MPI_Comm inter_comm, new_world;

   MPI_Init (&argc, &argv);
   MPI_Comm_spawn("./spawn_worker", &argv[1], 1, MPI_INFO_NULL, 0, 
MPI_COMM_WORLD, &inter_comm, errs);
   MPI_Intercomm_merge(inter_comm, 0, &new_world);

   // Let worker do its thing

   MPI_Comm_free(&new_world);
   MPI_Comm_disconnect(&inter_comm);

   while(no_exit)
   {
      // go and do something else
   }

   MPI_Finalize();
   return EXIT_SUCCESS;
}


spawn_worker.c
int main (int argc, char * argv[])
{
   MPI_Comm parent, new_world;

   MPI_Init (&argc, &argv);
   MPI_Comm_get_parent(&parent);
   MPI_Intercomm_merge(parent, 1, &new_world);

   // Do something useful

   MPI_Comm_free(&new_world);
   MPI_Comm_disconnect(&parent);
   MPI_Finalize();
   return EXIT_SUCCESS;
}


Appologies for rambling but I kept coming across new bits of info as I was 
writing this.

Regards
James
-- 
-----------------------------------------------------------------------------
James S. Perrin,                   | email: james.perrin at manchester.ac.uk
Manchester Visualization Centre,   | www.sve.man.ac.uk/General/Staff/perrin
Kilburn Building, The University,  | tel: +44 161 275 6945
Manchester, England. M13 9PL.      | fax: +44 161 275 6800/6040
-----------------------------------------------------------------------------
"The test of intellect is the refusal to belabour the obvious" -Alfred Bester
-----------------------------------------------------------------------------




More information about the mpich-discuss mailing list