Hi all,

I'm playing around with MPI_Comm_spawn, trying to do something simple with a master-slave example. I get a LOCAL DAEMON SPAWN IS CURRENTLY UNSUPPORTED error when it tries to spawn the slave. This is on Windows, OpenMPI version 1.4.1, r22421.

Here's the master code:

int main(int argc, char* argv[])
{
  int myid, ierr;
  MPI_Comm maincomm;
  ierr = MPI_Init(&argc, &argv);
  ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);

  if (myid == 0)
  {
     std::cout << "\n Hello from the boss " << myid;
     std::cout.flush();
  }

  MPI_Info* spawninfo;
  MPI_Info_create(spawninfo);
  MPI_Info_set(*spawninfo, "add-host", "127.0.0.1");

  if (myid == 0)
  {
     std::cout << "\n About to MPI_Comm_spawn." << myid;
     std::cout.flush();
  }
MPI_Comm_spawn("slave.exe", MPI_ARGV_NULL, 1, *spawninfo, 0, MPI_COMM_SELF, &maincomm, MPI_ERRCODES_IGNORE);
  if (myid == 0)
  {
     std::cout << "\n MPI_Comm_spawn successful." << myid;
     std::cout.flush();
  }
  ierr = MPI_Finalize();
  return 0;
}

Here's the slave code:

int main(int argc, char* argv[])
{
  int myid, ierr;

  MPI_Comm parent;

  ierr = MPI_Init(&argc, &argv);
  MPI_Comm_get_parent(&parent);

  if (parent == MPI_COMM_NULL)
  {
     std::cout << "\n No parent.";
  }
  ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);

  std::cout << "\n Hello from a worker " << myid;
std::cout.flush();
  ierr = MPI_Finalize();

  return 0;
}

Also, this only starts up correctly if I kick it off with orterun. Ideally I'd like to run it as "master.exe" and have it initialise the MPI environment from there. Can anyone tell me what setup I need to do that?
Thanks in advance,

Damien

Reply via email to