All pastes #1844973 Raw Edit

Anonymous

public text v1 · immutable
#1844973 ·published 2010-03-18 20:27 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();
}