Diffusion generale d'un message

  
Principe

Programme : 

#include "mpi.h"

#include <stdio.h>

#define SIZE 1000

int main( int argc; char *argv[])

{

    double startwtime, endwtime;

    int namelen, numprocs, myid, size ;

    char processor_name[MPI_MAX_PROCESSOR_NAME], buff[SIZE], msg[SIZE] ;

    MPI_Init(&argc,&argv);

    startwtime = MPI_Wtime();

    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);

    MPI_Comm_rank(MPI_COMM_WORLD,&myid);

    MPI_Get_processor_name(processor_name,&namelen);

    fprintf(stderr,"\nProcessus %d sur la machine %s parmi %d processus.\n", myid, processor_name, numprocs);

    if (numprocs != 3) fprintf(stderr,"Il me faut 3 processus !\n") ;

    strcpy(msg,"Message Broadcast") ; size=sizeof(char)*strlen(msg) ;

    if (myid==0) fprintf(stderr,"%d envoie <%s>\n",myid, msg) ;

    /* c'est le processus 0 qui est l'envoyeur */

    MPI_Bcast((void*) msg, size, MPI_CHAR, 0, MPI_COMM_WORLD) ;

    fprintf(stderr,"%d recoit [%s]\n",myid,msg) ;

    endwtime = MPI_Wtime();

    printf("Temps ecoule sur %d = %f\n", myid, endwtime-startwtime);

    MPI_Finalize();

    return 0;

}

Resultat :

Processus 0 sur la machine lil. parmi 3 processus.

0 envoie <Message Broadcast>

0 recoit [Message Broadcast]

Temps ecoule sur 0 = 0.003915

Processus 1 sur la machine lil. parmi 3 processus.

1 recoit [Message Broadcast]

Processus 2 sur la machine lil. parmi 3 processus.

2 recoit [Message Brroadcast]

Temps ecoule sur 1 = 0.001793

Temps ecoule sur 2 = 0.001993


Ph. RIS 1997