[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