Olá pessoal, sou o Filipe Névola, este blog foi muito ativo durante 2009 enquanto eu fazia universidade,
hoje em dia estou ativo no Twitter @FilipeNevola e voltando a escrever posts agora no meu perfil do Medium (29/05/2016).

[ 23/05/2009 ] 0

Hello World em Paralelo usando MPI (Send e Recv)

O código está comentado para facilitar a compreensão de todos.

Qualquer dúvida só comentar, e se necessário acrescentarei ao post mais alguns detalhes!
Segue o código:
//Autor: Filipe Areias Névola
//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();
}
Não sabe instalar/compilar/executar MPI ? Aprenda aqui!

Novo Comentário