[mpich-discuss] Problems with MPI_Comm_spawn and MPI_Comm_get_parent
Rajeev Thakur
thakur at mcs.anl.gov
Wed Nov 12 14:25:41 CST 2008
Spawn is an intercommunicator. See the rules for Bcast on an
intercommunicator in the MPI 2.1 document.
Rajeev
> -----Original Message-----
> From: mpich-discuss-bounces at mcs.anl.gov
> [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Jan Malburg
> Sent: Wednesday, November 12, 2008 2:24 AM
> To: mpich-discuss at mcs.anl.gov
> Subject: [mpich-discuss] Problems with MPI_Comm_spawn and
> MPI_Comm_get_parent
>
> Hello,
>
> I have a Problem with MPI_Comm_spawn and MPI_Comm_get_parent.
> As I have understand this functions can be used for adding
> additional Nodes at runtime. So that the old and the new
> Nodes share a communicate. This Communicater ist one of the
> return values of MPI_Comm_spawn @ the already running nodes.
> And at the new Nodes you can get the Communicator with
> MPI_Comm_get_parent.
>
> Ich have now writen this test programm
>
> #include "mpi.h"
> #include <iostream>
>
> using namespace std;
> int main(int argc, char *argv[])
> {
> //init MPI
> MPI_Init( &argc, &argv);
>
> // Test if the process is a spawn
> MPI_Comm spawn;
> MPI_Comm_get_parent(&spawn);
> if(spawn==MPI_COMM_NULL)
> {
> //if not a Spawn build 2 new process
> int error[2];
> MPI_Comm_spawn("C:\\Dokumente und
> Einstellungen\\Malburg\\Eigene Dateien\\Visual Studio
> Projects\\ShaderTests\\Test1\\MPI_SPAWN
> Test\\debug\\MPI_SPAWN Test.exe",
>
> MPI_ARGV_NULL,2,MPI_INFO_NULL,0,MPI_COMM_WORLD,&spawn,error);
> }
>
> // Get the Count and Nr of Options
> int NodeCount,NodeNumber;
> MPI_Comm_size(spawn, &NodeCount); //
> determine # of mpi procs
> MPI_Comm_rank(spawn, &NodeNumber); // get
> determine mpi rank of this process
>
> // Output
> cout <<"Before Barrier! " <<NodeNumber <<" of
> "<<NodeCount<<" "<<endl;
> MPI_Barrier(spawn);
>
> cout <<"Before Bcast! " <<NodeNumber <<" of
> "<<NodeCount<<" "<<endl;
> char i;
> MPI_Bcast(&i,1,MPI_BYTE,0,spawn);
>
> cout <<"After Bcast! " <<NodeNumber <<" of
> "<<NodeCount<<" "<<endl;
> MPI_Finalize();
> return 0;
> }
>
> The Problem is that the communicator don't work as I aspect.
> The Output of the Programm is the following when I Use 1.0.7:
>
>
> Before Barrier! 1 of 2
> Before Barrier! 0 of 2
> Before Barrier! 0 of 1
> Before Bcast! 0 of 2
> Before Bcast! 1 of 2
> Before Bcast! 0 of 1
>
> And with 1.0.8 the output is:
>
> Before Barrier! 0 of 1
> Before Bcast! 0 of 1
>
> In Bcast th program hangs. Barrier works over all 3 Processes
> that I have tested.
> MPI_Comm_size and MPI_Comm_rank works if as set to their
> MPI_COMM_WORLD.
>
> Can anyone tell me what I doing wrong or is their a Bug?. My
> System runs an Windows XP and compiled with Visual Studio 2005.
>
> Thanks in advance,
> Jan
>
>
> PS: The output I would aspect is
> Before Barrier! 1 of 3
> Before Barrier! 2 of 3
> Before Barrier! 0 of 3
> Before Bcast! 0 of 3
> Before Bcast! 1 of 3
> Before Bcast! 2 of 3
> After Bcast! 0 of 3
> After Bcast! 1 of 3
> After Bcast! 2 of 3
>
> --
> GMX Download-Spiele: Preizsturz! Alle Puzzle-Spiele Deluxe
> über 60% billiger.
> http://games.entertainment.gmx.net/de/entertainment/games/down
> load/puzzle/index.html
>
More information about the mpich-discuss
mailing list