Herramientas Personales
Usted está aquí: Inicio / Investigación / Laboratorio de Sistemas Complejos / SCMP / Broadcast.c

Broadcast.c

C source code icon Broadcast.c — C source code, 1 kB (1319 bytes)

Contenido del Archivo

#include <stdio.h>
#include <string.h>
#include "mpi.h"

main(int argc, char* argv[])
{
    int         my_rank;       // Rank del proceso
    int         p;             // Numero de procesos
    int         source;        // Rank del que envia
    int         dest;          // Rank del que recibe
    int         tag = 0;       // Tag del mensaje
    char        message[100];  // Mensaje
    MPI_Status  status;

    double   start,stop;

    /* Inicio */
    MPI_Init(&argc, &argv);

    /* Averiguando el Rank del proceso */
    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

    /* Averiguando el numero de procesos que participan */
    MPI_Comm_size(MPI_COMM_WORLD, &p);

    /* Hasta que todos los procesos no lleguen hasta aqui ninguno continua */
    MPI_Barrier(MPI_COMM_WORLD);
    start = MPI_Wtime();

    sprintf(message, "Soy el proceso %d y estoy enviando un mensaje broadcast!",my_rank);

    MPI_Bcast(message, strlen(message)+1, MPI_CHAR, 0, MPI_COMM_WORLD);

    if (my_rank != 0)
	printf("%s Y yo soy el proceso %d y lo estoy recibiendo.\n",message,my_rank);

    MPI_Barrier(MPI_COMM_WORLD);  // Espero a que todos los procesos terminen para calcular el tiempo de finalizacion.
    stop = MPI_Wtime();

    if (my_rank == 0)
       printf("Tiempo empleado: %g\n",stop-start);

    MPI_Finalize();
}