[MPICH] Using MPI_COMM_SPAWN correctly

Rajeev Thakur thakur at mcs.anl.gov
Wed Oct 25 17:57:58 CDT 2006


If you want to control the placement of each process, you need to use
MPI_Comm_spawn_multiple and pass a separate info object for each of the
executables.
 
Rajeev


  _____  

From: hphratchian at gmail.com [mailto:hphratchian at gmail.com] On Behalf Of
Hrant P. Hratchian
Sent: Wednesday, October 25, 2006 4:44 PM
To: Rajeev Thakur; mpich-discuss at mcs.anl.gov
Subject: Re: [MPICH] Using MPI_COMM_SPAWN correctly


It seems as though the spawned processes get spread across the nodes -
mostly.  I actually need control over where the spawned processed go.  Using
the following (f90) code gets the spawned processes running on pople-n3 as
expected... 

      Call MPI_INFO_CREATE(PESSMPI_Info,IError)
      Call MPI_INFO_SET(PESSMPI_Info,'host','pople-n3',IError)
      Call MPI_INFO_SET(PESSMPI_Info,'envlist','path',IError)
      Call MPI_INFO_SET(PESSMPI_Info,'wdir','/home/hrant',IError) 
      Call MPI_COMM_SPAWN('Pseudoatom_PESSMPI',MPI_ARGV_NULL, &
        PESSMPI_NProcs,PESSMPI_Info,0,MPI_COMM_WORLD,PESSMPI_Comm_01, &
        MPI_ERRCODES_IGNORE,IError)
      Call MPI_INFO_FREE(PESSMPI_Info,IError) 

However, this runs all PESSMPI_NProcs processes on node 3.  To be able to
spread the jobs out I tried...

      Call MPI_INFO_CREATE(PESSMPI_Info,IError)
      Call MPI_INFO_SET(PESSMPI_Info,'file','mf',IError) 
      Call MPI_INFO_SET(PESSMPI_Info,'envlist','path',IError)
      Call MPI_INFO_SET(PESSMPI_Info,'wdir','/home/hrant',IError)
      Call MPI_COMM_SPAWN('Pseudoatom_PESSMPI',MPI_ARGV_NULL, &
        PESSMPI_NProcs,PESSMPI_Info,0,MPI_COMM_WORLD,PESSMPI_Comm_01, & 
        MPI_ERRCODES_IGNORE,IError)
      Call MPI_INFO_FREE(PESSMPI_Info,IError)

but this doesn't work at all.  The job runs fine but the spawned processes
end up on various machines defined in my mpd.hosts file.  The file mf looks
like:

pople-n3
pople-n3

I expected this to work the same as the "host" example before
(PESSMPI_NProcs=2 in these cases).  Am I doing something wrong with the
format of my file? 

Thanks in advance...Hrant



On 10/25/06, Rajeev Thakur <thakur at mcs.anl.gov> wrote: 

Are you using a single MPI_Comm_spawn with maxprocs=4 to spawn the four
process? In that case, I believe they will get spread across the nodes. If
you use four separate MPI_Comm_spawns with maxprocs=1, they will get spawned
on the same node.
 
Rajeev


  _____  

From: owner-mpich-discuss at mcs.anl.gov
[mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Hrant P. Hratchian
Sent: Tuesday, October 24, 2006 11:27 PM
To: mpich-discuss at mcs.anl.gov
Subject: [MPICH] Using MPI_COMM_SPAWN correctly



I'm a basic MPI user and I've built a set of code that uses MPI_COMM_SPAWN.
The way that the code runs the master process runs on only 1 process while
the slave processes use n processes.

I have a mpd.hosts file that includes three machines: node_1, node_2, and
node_3.  mpdtrace confirms that the loop has been established and runs over
all three machines.  To run the code I execute the following on node_1: 

mpiexec -n 1 Prog_Master test.in >& test.mpilog &

Prog_Master spawns 4 processes using MPI_COMM_SPAWN.  Rather than spreading
the 4 spawned processes across the three machines listed in mpd.hosts (where
the loop is running), all 4 spawned processes run on node_1.

Am I doing something wrong here?

Thanks in advance.
HPH

-- 
Hrant P. Hratchian, Ph.D.
E. R. Davidson Fellow 
Department of Chemistry
Indiana University
Bloomington, Indiana 47405-7102
812.856.0829
hhratchi at indiana.edu 




-- 
Hrant P. Hratchian, Ph.D.
E. R. Davidson Fellow
Department of Chemistry
Indiana University
Bloomington, Indiana 47405-7102
812.856.0829
hhratchi at indiana.edu 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20061025/0739550e/attachment.htm>


More information about the mpich-discuss mailing list