All pastes #1844975 Raw Edit

TP 4 Grid 5000

public c v1 · immutable
#1844975 ·published 2010-03-18 20:28 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <mpi.h>double getL (int measure, int mirror, int rank){	int i;	double start, stop,rtt,L;	int *buffer;	MPI_Status mpi_stat;	buffer = (int *) malloc (sizeof(int));		start = stop = rtt = L = 0.0;	if (rank == measure)	{		start = MPI_Wtime();				// Envoyer un message de taille 0 vers le processus 1 (mirror)		// ...		 		// attendre la rponse du processus 1 		// ...				stop = MPI_Wtime();		rtt = (stop - start);		L = rtt/2;	}	else	{		// attendre le message du processus 0 		// ...			// envoyer une rponse vers le processus 0 		// ...		 	}	return (L);}double getTput (int measure, int mirror, int rank, int size,double L){	int i;	double start, stop, total ,tput;	int *buffer;	MPI_Status mpi_stat;	buffer = (int *) malloc (size*sizeof(int));	start = stop = total = tput = 0.0;	if (rank == measure)	{		/* il faudrait faire quelques communications pour "chauffer" 		 * le rseau, mais faisons simple */				start = MPI_Wtime();				// Envoyer un message de taille size vers le processus 1 		// ...		 		// attendre la rponse du processus 1 		// ...				stop = MPI_Wtime();		total = stop - start;			tput = size/(total-(2*L/1E6));	}	else	{		// attendre le message de taille size du processus 0 		// ...			// envoyer une rponse vers le processus 0 		// ...	}	return (tput);}int main (int argc, char **argv){    	int rank;    	int size;	int msgsize;    	int i;        	double NWS_Latency, NWS_Tput;	MPI_Init(&argc,&argv);	    	MPI_Comm_size(MPI_COMM_WORLD,&size);    	MPI_Comm_rank(MPI_COMM_WORLD,&rank);    	if (size != 2)    	{		if (rank==0)	    		printf("Cette exprience requiert SEULEMENT deux processus\n");		exit(0);    	}    	NWS_Latency = getL(0,1,rank);	// tester avec diffrentes tailles de message 	msgsize=1048576;	NWS_Tput = getTput(0,1,rank,msgsize,NWS_Latency);	if (rank == 0)	{		printf("Valeurs de Latence et Dbit au niveau d'une application MPI\n");		printf("Latence = %f microsecondes\n",(NWS_Latency*1E06));		printf("Debit = %f Mo/s\n", (NWS_Tput/1E06));	}	MPI_Finalize();}