[MPICH] Name Publishing

lunasole at interfree.it lunasole at interfree.it
Fri Sep 2 07:57:59 CDT 2005


Yes, it does!

Thank's.

>You need to make sure that you run it as  
>  mpiexec -n 1 server < /dev/null &  
>and not simply
>  mpiexec -n 1 server & 
>
>Does the program run after that?
>
>Rajeev
>
>> -----Original Message----- > From: lunasole at interfree.it 
>[mailto:lunasole at interfree.it] > Sent: Monday, August 29, 2005 3:02 AM
>> To: thakur at mcs.anl.gov; mpich-discuss at mcs.anl.gov
>> Subject: Re: RE: [MPICH] Name Publishing
>> 
>> 
>> i used MPICH2 version 1.0.2 on Linux (mpich2-1.0.2p1.tar.gz). 
>> i runned the server in background with mpiexec command.
>> thank's
>> 
>> 
>> >I can run these programs with our latest source in CVS 
>> without any problem. 
>> >Which version of MPICH2 are you using? Try version 1.0.2 if 
>> you are using an 
>> >older version. (I didn't check whether this works with 1.0.2).
>> >
>> >Are you running the server in the background? If so, you 
>> need to do mpiexec -n 1 
>> >server < /dev/null & 
>> >
>> >Rajeev
>> >
>> >> -----Original Message----- > From: owner-mpich-discuss at mcs.anl.gov 
>> >> [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of 
>> >> lunasole at interfree.it
>> >> Sent: Tuesday, August 02, 2005 2:20 AM
>> >> To: mpich-discuss at mcs.anl.gov
>> >> Subject: [MPICH] Name Publishing
>> >> 
>> >> 
>> >> Hi
>> >> I impemented a simple application Client/Server using Name 
>> Publishing.
>> >>  
>> >> I launched Server with mpiexec command. The Server associated 
>> >> a port name with a private name "SERVER".  After I 
>> >> 
>> >> launched client on another machine. It looked the port name 
>> >> up by passing name "SERVER" to MPI_Lookup_name.
>> >> 
>> >> with LAM I have no problem for this implementation.
>> >> with MPICH2 i have the following error message on client side:
>> >> 
>> >>         ercole Name_Server]$ mpiexec -n 1 -path 
>> >> sample_MPICH2_MPI/MPI-2/Name_Server/ client
>> >> 
>> >>         Port_name= port#32867$description#ercole$rank 0 in 
>> >> job 1  ercole_32771   causedcollective abort of all ranks
>> >> exit status of rank 0: killed by signal 9
>> >> 
>> >> What is the problem? 
>> >> 
>> >> Thank's. 
>> >>    Rosalia Salvatore
>> >> 
>> >> 
>> >> Client and Server implementation:
>> >> 
>> >> //SERVER
>> >> #include <stdio.h>
>> >> #include <mpi.h>
>> >> 
>> >> #define NUM_LOOP 200
>> >> #define MAX_DATA 200
>> >> #define TIMER_ELAPSED \
>> >>  ( ( tv2.tv_usec - tv1.tv_usec ) \
>> >>   + ( ( tv2.tv_sec - tv1.tv_sec) * 1.E6 ) )
>> >> 
>> >> int main (int argc, char* argv[])
>> >> {
>> >>  int rank, size,again,i;
>> >>  static int count=0;
>> >>  MPI_Comm client;
>> >>  MPI_Status status;
>> >>  char port_name[MPI_MAX_PORT_NAME];
>> >>  double buf[MAX_DATA];
>> >>  int time[NUM_LOOP];
>> >>  
>> >>  MPI_Init(&argc,&argv); /* Initialize MPI */
>> >>  MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Get rank */
>> >>  MPI_Comm_size(MPI_COMM_WORLD,&size); /* Get size of the LAM 
>> >> universe */
>> >>  if (size != 1) 
>> >>  {
>> >>   printf("Error");
>> >>   return -1;
>> >>  }
>> >>  //printf("CIAO\n");
>> >>  MPI_Open_port (MPI_INFO_NULL,port_name);
>> >>  printf("port_name= %s\n", port_name);
>> >>  MPI_Publish_name("SERVER",MPI_INFO_NULL,port_name);
>> >>  printf("waiting...\n");
>> >>  while(1)
>> >>  {
>> >>   MPI_Comm_accept (port_name, MPI_INFO_NULL, 0, 
>> >> MPI_COMM_WORLD, &client);
>> >>   again=1;
>> >>   
>> >>   while (again == 1)
>> >>   {
>> >>    printf("\nReceive\n");
>> >>    
>> >> MPI_Recv(buf,MAX_DATA,MPI_DOUBLE,MPI_ANY_SOURCE,MPI_ANY_TAG, 
>> >> client, &status);
>> >>    MPI_Send(buf, MAX_DATA, MPI_DOUBLE, 0, 2, client);
>> >>    printf("MPI_TAG =%d\n ", status.MPI_TAG);
>> >>    
>> >>    switch(status.MPI_TAG)
>> >>    {
>> >>     case 0: 
>> >>      MPI_Comm_free(&client);
>> >>      MPI_Close_port(port_name);
>> >>      MPI_Finalize();
>> >>      return 0;
>> >>     
>> >>     case 1:
>> >> 					MPI_Comm_disconnect(&client);
>> >> 					again =0;
>> >> 					break;
>> >> 				case 2:
>> >> 					//for (i=0;i<MAX_DATA;i++)
>> >> 					//{
>> >> 					printf("buf[%d]= %f",1,buf[1]);
>> >> 					//}//end for
>> >> 					
>> >> 					break;
>> >> 				      	
>> >> 				default: 
>> >>      MPI_Abort (MPI_COMM_WORLD,1);
>> >>      break;
>> >>     
>> >>    } //end of switch
>> >>   } //end while again
>> >> } //infinity 
>> >> 	
>> >> }	
>> >> 
>> >> 
>> >> 
>> >> 
>> >> // CLIENT
>> >> #include <stdio.h>
>> >> #include <mpi.h>
>> >> #include <sys/time.h>
>> >> 
>> >> 
>> >> #define LOOP 10000
>> >> #define MAX_DATA 200
>> >> #define TIMER_ELAPSED \
>> >>  ( ( tv2.tv_usec - tv1.tv_usec ) \
>> >>   + ( ( tv2.tv_sec - tv1.tv_sec) * 1.E6 ) )
>> >>  
>> >>     
>> >> int main (int argc, char* argv[])
>> >> {
>> >>  int rank, size,i, tag=0, done=1;
>> >>  MPI_Comm server;
>> >>  MPI_Status status;
>> >>  char port_name[MPI_MAX_PORT_NAME];
>> >>  double buf[MAX_DATA];
>> >>  double var=0.0;
>> >>    int time[LOOP];
>> >>  struct timeval tv1, tv2;
>> >>  FILE *fp; 
>> >>  long max=0, min=20000000;
>> >>  
>> >>  
>> >>  MPI_Init(&argc,&argv); /* Initialize MPI */
>> >>  
>> >>  MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Get rank */
>> >>  //MPI_Comm_size(MPI_COMM_WORLD,&size); /* Get size of the 
>> >> LAM universe */ 
>> >>  
>> >>  MPI_Lookup_name("SERVER", MPI_INFO_NULL, port_name);
>> >>  printf("\nMPI_Lookup_name Port_name= %s", port_name);
>> >>  MPI_Comm_connect (port_name, MPI_INFO_NULL,0, 
>> >> MPI_COMM_WORLD, &server);
>> >>   
>> >>   for (i=0;i<MAX_DATA;i++)
>> >>  {
>> >>   buf[i]= i*2.0;
>> >>   //printf("buf[%d]= %f\t",i,buf[i]);
>> >>  }
>> >>  
>> >>  tag=2;
>> >>  for(i=0;i<LOOP;i++)
>> >>  {
>> >>   gettimeofday(&tv1, NULL);
>> >>   MPI_Send(buf, MAX_DATA, MPI_DOUBLE, 0, tag, server);
>> >>   
>> >> MPI_Recv(buf,MAX_DATA,MPI_DOUBLE,MPI_ANY_SOURCE,MPI_ANY_TAG, 
>> >> server, &status);
>> >>   gettimeofday(&tv2, NULL);
>> >>   time[i]=(int)TIMER_ELAPSED;
>> >>   printf("\nsend and receive con buf[%d]= %f\n",1,buf[1]);
>> >>   printf("Client Tempo[%d]= %d\n",i, time[i]);
>> >>    
>> >>  } //end for
>> >>  tag=1; 
>> >>  MPI_Send(buf, MAX_DATA, MPI_DOUBLE, 0, tag, server);
>> >> 	printf("\nSend con tag 1\n"); 
>> >> 		
>> >> 	MPI_Comm_disconnect(&server);
>> >> 	MPI_Finalize();
>> >> 
>> >> 	/* *************** TIME RESULTS ***************** */
>> >> 	fp= fopen("Results.txt","w");	
>> >> 	for(i=0;i<LOOP;i++)
>> >> 	{
>> >> 		fprintf(fp,"%d    %ld \n", i+1 ,time[i]);
>> >> 		var=var+time[i];
>> >> 		if(time[i]<min) min=time[i];
>> >>     		if(time[i]>max) max=time[i];	
>> >> 	}
>> >> 
>> >> 	var=var/LOOP-1;
>> >> 	printf("Tempo del client %d = %f usec\n",rank,var);
>> >> 		
>> >>  fprintf(fp,"LATENCY TIME MIN = %ld microsec\n", min);
>> >>  fprintf(fp,"LATENCY TIME MAX = %ld microsec\n", max);
>> >>  fprintf(fp,"LATENCY TIME AVERAGE = %f microsec\n", var);
>> >>  
>> >>  fclose (fp);
>> >>  return 0;
>> >> 	
>> >> }	
>> >> 
>> >> 
>> >> 
>> >> --------------------------------------------------------------
>> >> -----------
>> >> Visita http://domini.interfree.it, il sito di Interfree 
>> dove trovare
>> >> soluzioni semplici e complete che soddisfano le tue esigenze 
>> >> in Internet,
>> >> ecco due esempi di offerte:
>> >> 
>> >> -  Registrazione Dominio: un dominio con 1 MB di spazio disco 
>> >> +  2 caselle
>> >>    email a soli 18,59 euro
>> >> -  MioDominio: un dominio con 20 MB di spazio disco + 5 
>> caselle email 
>> >>    a soli 51,13 euro
>> >> 
>> >> Vieni a trovarci!
>> >> 
>> >> Lo Staff di Interfree 
>> >> --------------------------------------------------------------
>> >> -----------
>> >> 
>> >> 
>> >
>> >
>> >
>> 
>> --------------------------------------------------------------
>> -----------
>> Visita http://domini.interfree.it, il sito di Interfree dove trovare
>> soluzioni semplici e complete che soddisfano le tue esigenze 
>> in Internet,
>> ecco due esempi di offerte:
>> 
>> -  Registrazione Dominio: un dominio con 1 MB di spazio disco 
>> +  2 caselle
>>    email a soli 18,59 euro
>> -  MioDominio: un dominio con 20 MB di spazio disco + 5 caselle email 
>>    a soli 51,13 euro
>> 
>> Vieni a trovarci!
>> 
>> Lo Staff di Interfree 
>> --------------------------------------------------------------
>> -----------
>> 
>> 
>
>
>

-------------------------------------------------------------------------
Visita http://domini.interfree.it, il sito di Interfree dove trovare
soluzioni semplici e complete che soddisfano le tue esigenze in Internet,
ecco due esempi di offerte:

-  Registrazione Dominio: un dominio con 1 MB di spazio disco +  2 caselle
   email a soli 18,59 euro
-  MioDominio: un dominio con 20 MB di spazio disco + 5 caselle email 
   a soli 51,13 euro

Vieni a trovarci!

Lo Staff di Interfree 
-------------------------------------------------------------------------




More information about the mpich-discuss mailing list