TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

A Engenharia de Controle e Automação

Por:   •  20/1/2022  •  Trabalho acadêmico  •  846 Palavras (4 Páginas)  •  72 Visualizações

Página 1 de 4

#include <iostream>

#include <time.h>

#include <stdlib.h>

#include <queue>

#include <mpi.h>

#include <stack>

/*

Desenvolva um código em OpenMPI que irá considerar a execução em 10 máquinas.

O mestre irá ler um valor e irá mandar para os trabalhadores.

Os trabalhadores com índice par irão multiplicar o número recebido por 20 e somar com o seu índice,

os trabalhadores de índice ímpar por 100 e somar com o seu índice.

Após a multiplicação os trabalhadores enviam o resultado para o mestre que exibe as respostas. */

using namespace std;

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

{

int numero_de_processos=0, processo_id=0;

float valor_enviado=rand()%100, valor_recebido=0, maq1=0, maq2=0, maq3=0, maq4=0, maq5=0, maq6=0, maq7=0, maq8=0, maq9=0, maq10=0;

clock_t inicio=0, fim=0, tempo_total=0;

inicio=clock(); //Início cronômetro (execução).

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &numero_de_processos);

MPI_Comm_rank(MPI_COMM_WORLD, &processo_id);

if(processo_id == 0)

{

cout<<"Valor gerado aleatoriamente que sera enviado: "<<valor_enviado<<endl;

MPI_Send(&valor_enviado,1, MPI_INT, 1, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 2, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 3, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 4, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 5, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 6, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 7, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 8, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 9, 15000, MPI_COMM_WORLD);

MPI_Send(&valor_enviado,1, MPI_INT, 10, 15000, MPI_COMM_WORLD);

}

else if(processo_id == 1)//índice ímpar irão multiplicar por 100 e somar com o seu índice.

{

MPI_Recv(&valor_recebido,1, MPI_INT, 0, 15000, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

int valor_alterado=0;

valor_alterado=valor_recebido*100+1;

valor_enviado=valor_alterado;

MPI_Send(&valor_enviado,1, MPI_INT, 0, 15000, MPI_COMM_WORLD);

}

else if(processo_id == 2)//índice par irão multiplicar por 20 e somar com o seu índice.

{

MPI_Recv(&valor_recebido,1, MPI_INT, 0, 15000, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

int valor_alterado=0;

valor_alterado=valor_recebido*20+2;

valor_enviado=valor_alterado;

MPI_Send(&valor_enviado,1, MPI_INT, 0, 15000, MPI_COMM_WORLD);

}

else if(processo_id == 3)//índice ímpar irão multiplicar por 100 e somar com o seu índice.

{

MPI_Recv(&valor_recebido,1, MPI_INT, 0, 15000, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

int valor_alterado=0;

valor_alterado=valor_recebido*100+3;

valor_enviado=valor_alterado;

MPI_Send(&valor_enviado,1, MPI_INT, 0, 15000, MPI_COMM_WORLD);

}

else if(processo_id == 4)//índice par irão multiplicar o número recebido por 20 e somar com o seu índice.

{

MPI_Recv(&valor_recebido,1, MPI_INT, 0, 15000, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

int valor_alterado=0;

valor_alterado=valor_recebido*20+4;

valor_enviado=valor_alterado;

MPI_Send(&valor_enviado,1, MPI_INT, 0, 15000, MPI_COMM_WORLD);

}

else if(processo_id == 5)//índice ímpar irão multiplicar por 100 e somar com o seu índice.

{

MPI_Recv(&valor_recebido,1, MPI_INT, 0, 15000, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

int valor_alterado=0;

valor_alterado=valor_recebido*100+5;

valor_enviado=valor_alterado;

MPI_Send(&valor_enviado,1, MPI_INT, 0, 15000, MPI_COMM_WORLD);

}

else if(processo_id == 6)//índice par irão multiplicar o número recebido por 20 e somar com o seu índice.

{

MPI_Recv(&valor_recebido,1, MPI_INT, 0, 15000, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

...

Baixar como (para membros premium)  txt (6.9 Kb)   pdf (46.6 Kb)   docx (9.9 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com