Qualquer dúvida só comentar, e se necessário acrescentarei ao post mais alguns detalhes!
Segue o código:
//Autor: Filipe Areias NévolaNão sabe instalar/compilar/executar MPI ? Aprenda aqui!
//Ano: 2009
//Programa: Hello, world MPI
//Licensa: Você pode usar e alterar, mas deve manter o Autor
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
int main(int argc, char **argv){
char message[20]; //Mensagem a ser enviada
//rank = nro do proc, size = nro de procs
int i, rank, size, type = 99;
MPI_Status status;
//inicializando
MPI_Init(&argc, &argv);
//pegando nro de procs
MPI_Comm_size(MPI_COMM_WORLD, &size);
//pegando nro do proc que esta executando aqui
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
//se é o proc 0 (ROOT_RANK) manda mensagem
if (rank == 0) {
//copia Hello, world para mensagem
strcpy(message, "Hello, world");
//manda para todos os procs
for (i = 1; i <= size-1; i++){
//comando em MPI para enviar
MPI_Send(message, 13, MPI_CHAR, i, type, MPI_COMM_WORLD);
}
}
else {
//quem não é o ROOT_RANK recebe a mensagem
MPI_Recv(message, 13, MPI_CHAR, 0, type, MPI_COMM_WORLD, &status);
}
//todos imprimem a mensagem
printf( "Message from process = %d : %.13s\n", rank,message);
//finaliza
MPI_Finalize();
}