PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL 
FACULDADE DE INFORMÁTICA - FACIN 
PROGRAMA DE PÓS GRADUAÇÃO EM CIÊN...
Cronograma 
➔ Broadcast; 
➔ MPI; 
➔ O Problemas dos Generais bizantinos; 
➔ Como foi implementado; 
➔ Execução.
Broadcast
Broadcast 
● Um processo envia (transmite) uma mensagem 
para todos os outros processos; 
● Todos os processos recebem a m...
Broadcast 
Emissor 
Receptores
Problema dos Generais Bizantinos
Problema dos Generais Bizantinos 
➔ Generais cercam uma cidade com suas tropas; 
➔ Generais estão separados pelo relevo, s...
Problemática 
- Como o general deve saber se ataca ou recua? 
- O exército consegue vencer a batalha quando existem traido...
A A 
A 
Ordens 
A - Atacar 
R - Recuar
A 
A 
A 
R A 
A 
Ordens 
A - Atacar 
R - Recuar
TODAS AS TROPAS ATACAM
Message Passing Interface (MPI) 
● Um padrão para comunicação de dados em computação paralela; 
● Processos que se comunic...
Como Surgiu 
O MPI surgiu a partir da idéia de se padronizar as diversas bibliotecas de 
troca de mensagens existentes cri...
MPI - Vantagens 
● Facilidade para localizar material para ajuda na internet; 
● Possibilidade de uso de uma linguagem tra...
MPI - Dificuldade 
● Sincronização dos processos; 
● Comandos bloqueantes; 
● Visualização das ações que cada processo exe...
Estrutura/Comandos básicos 
MPI_Init (&argc,&argv) - Inicializa o ambiente de execução de MPI 
MPI_Comm_size (comm,&size) ...
Exemplo - Hello World!
Estrutura básica 
MPI_Send(mensagem, tamanho, tipo, destino, int tag, MPI_Comm 
communicator) 
MPI_Recv(receptor da mensag...
... 
MPI_Send (...) 
... 
MPI_Recv (...) 
... 
MPI_Recv (...) 
... 
MPI_Recv (...)
Função MPI para Broadcast 
MPI_Bcast( mensagem, tamanho, tipo, rank envio, 
MPI_Comm comm ) 
● Utilizado para realização d...
Implementação
Realizamos a inclusão da 
biblioteca do MPI e stdio.
Funções 
Auxiliares
Função para exibir uma apresentação 
inicial. 
criaLogo()
inverteMensagem() 
Função que irá inverter a 
mensagem de Atacar ou Recuar.
Main() Declaração de 
variaveis do 
programa. 
Funções MPI.
Rank 0 
(Comandante)
Recebendo os Dados Iniciais
Definindo quem vai ser traidor
Informando quem é traidor 
0 --> 1, 2, 3, …,N.
Broadcast: quantidade de 
generais 
0 --> 1, 2, 3,..., N.
Rank 1-N 
(Generais)
Sou traidor? 
1, 2, 3, …, N <-- 0
Mensagem do comandante 
1, 2, 3, …, N <-- 0
Send/Recv Mensagens Rank == i significa que o general deve 
enviar. 
Rank != i significa que o general deve 
receber.
Send/Recv Mensagens 
Garante que o general não envie para si.
Send/Recv Mensagens 
Verifica se o general que enviará é 
traidor (1 traidor, 0 honesto)
Send/Recv Mensagens 
Se o general é traidor realiza a inversão 
da mensagem (R vira A, A vira R). 
A inversão é realizada ...
Send/Recv Mensagens 
Faz o Send da mensagem (invertida ou 
não).
Send/Recv Mensagens 
No caso do general ser o receptor (rank ! 
= i), ele irá receber a mensagem do 
general que enviará.
Send/Recv Mensagens 
Ao receber a mensagem, ele armazena 
e continua o loop.
Contabilização das Mensagens
Escolha da ação
Informando o RANK 0
Final do código
Compilando...
Executando...
Ambiente 
Cluster Snail: composto por 5 máquinas 
monoprocessadas. Além disso, o cluster snail 
possui uma máquina front-e...
Referêncial Teórico 
Using MPI, Portable Parallel, 2nd edition, Gropp et al, MIT Press, 1999. 
LAMPORT,LESLIE. The Byzanti...
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Generais bizantinos - MPI
Próximos SlideShares
Carregando em…5
×

Generais bizantinos - MPI

1.037 visualizações

Publicada em

MPI - Algoritmo dos Generais Bizantinos

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.037
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
98
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Generais bizantinos - MPI

  1. 1. PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA - FACIN PROGRAMA DE PÓS GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Implementação do algoritmo dos Generais Bizantinos com Broadcast e MPI Aline Zanin Cleverson Ledur Pedro Henrique Silva
  2. 2. Cronograma ➔ Broadcast; ➔ MPI; ➔ O Problemas dos Generais bizantinos; ➔ Como foi implementado; ➔ Execução.
  3. 3. Broadcast
  4. 4. Broadcast ● Um processo envia (transmite) uma mensagem para todos os outros processos; ● Todos os processos recebem a mesma mensagem enviada por um mesmo processo; ● Todos os processos podem se comunicar entre sí;
  5. 5. Broadcast Emissor Receptores
  6. 6. Problema dos Generais Bizantinos
  7. 7. Problema dos Generais Bizantinos ➔ Generais cercam uma cidade com suas tropas; ➔ Generais estão separados pelo relevo, somente podem se comunicar através de mensageiros; ➔ Generais devem chegar a um consenso sobre atacar ou recuar; ➔ Existem generais que são traidores; ➔ Os generais só vencem se todos os generais atacarem ao mesmo tempo.
  8. 8. Problemática - Como o general deve saber se ataca ou recua? - O exército consegue vencer a batalha quando existem traidores? - Quantos traidores são necessários para que o exercito perca a _batalha? (generais >= traidores * 3 + 1)
  9. 9. A A A Ordens A - Atacar R - Recuar
  10. 10. A A A R A A Ordens A - Atacar R - Recuar
  11. 11. TODAS AS TROPAS ATACAM
  12. 12. Message Passing Interface (MPI) ● Um padrão para comunicação de dados em computação paralela; ● Processos que se comunicam, acionando-se funções para o envio e recebimento de mensagens; ● Possui um conjunto de comandos que quando acionados executam a troca de mensagens;
  13. 13. Como Surgiu O MPI surgiu a partir da idéia de se padronizar as diversas bibliotecas de troca de mensagens existentes criando um sistema estável, eficiente e portável. Essa padronização surgiu a partir da criação do Message Passing Interface, Forum criado no Workshop "On Standards for Message Passing in a Distribuited Memory Environment" em 1992.
  14. 14. MPI - Vantagens ● Facilidade para localizar material para ajuda na internet; ● Possibilidade de uso de uma linguagem tradicional; ● Portabilidade; ● Funcionalidade;
  15. 15. MPI - Dificuldade ● Sincronização dos processos; ● Comandos bloqueantes; ● Visualização das ações que cada processo executa; ● Ausência de um mecanismo para “Debug”, dificultando a solução de problemas. ● Exige cuidado porque uma mensagem perdida ocasiona o travamento do programa
  16. 16. Estrutura/Comandos básicos MPI_Init (&argc,&argv) - Inicializa o ambiente de execução de MPI MPI_Comm_size (comm,&size) - Determina o número de processos em um grupo associado a um comunicador. MPI_Comm_rank (comm,&rank) - Identifica o ID dos processadores MPI_Finalize () - Encerra o MPI
  17. 17. Exemplo - Hello World!
  18. 18. Estrutura básica MPI_Send(mensagem, tamanho, tipo, destino, int tag, MPI_Comm communicator) MPI_Recv(receptor da mensagem, tamanho, tipo, origem, tag, MPI_COMM_WORLD, &status); TAG: Identifica o “Assunto” da mensagem
  19. 19. ... MPI_Send (...) ... MPI_Recv (...) ... MPI_Recv (...) ... MPI_Recv (...)
  20. 20. Função MPI para Broadcast MPI_Bcast( mensagem, tamanho, tipo, rank envio, MPI_Comm comm ) ● Utilizado para realização de um conjunto de SEND e RECV quando a mesma mensagem é propagada para todos os processos
  21. 21. Implementação
  22. 22. Realizamos a inclusão da biblioteca do MPI e stdio.
  23. 23. Funções Auxiliares
  24. 24. Função para exibir uma apresentação inicial. criaLogo()
  25. 25. inverteMensagem() Função que irá inverter a mensagem de Atacar ou Recuar.
  26. 26. Main() Declaração de variaveis do programa. Funções MPI.
  27. 27. Rank 0 (Comandante)
  28. 28. Recebendo os Dados Iniciais
  29. 29. Definindo quem vai ser traidor
  30. 30. Informando quem é traidor 0 --> 1, 2, 3, …,N.
  31. 31. Broadcast: quantidade de generais 0 --> 1, 2, 3,..., N.
  32. 32. Rank 1-N (Generais)
  33. 33. Sou traidor? 1, 2, 3, …, N <-- 0
  34. 34. Mensagem do comandante 1, 2, 3, …, N <-- 0
  35. 35. Send/Recv Mensagens Rank == i significa que o general deve enviar. Rank != i significa que o general deve receber.
  36. 36. Send/Recv Mensagens Garante que o general não envie para si.
  37. 37. Send/Recv Mensagens Verifica se o general que enviará é traidor (1 traidor, 0 honesto)
  38. 38. Send/Recv Mensagens Se o general é traidor realiza a inversão da mensagem (R vira A, A vira R). A inversão é realizada somente para os generais impares.
  39. 39. Send/Recv Mensagens Faz o Send da mensagem (invertida ou não).
  40. 40. Send/Recv Mensagens No caso do general ser o receptor (rank ! = i), ele irá receber a mensagem do general que enviará.
  41. 41. Send/Recv Mensagens Ao receber a mensagem, ele armazena e continua o loop.
  42. 42. Contabilização das Mensagens
  43. 43. Escolha da ação
  44. 44. Informando o RANK 0
  45. 45. Final do código
  46. 46. Compilando...
  47. 47. Executando...
  48. 48. Ambiente Cluster Snail: composto por 5 máquinas monoprocessadas. Além disso, o cluster snail possui uma máquina front-end para gerenciar o cluster. Cada máquina possui 1 processador Intel Pentium-4 2.0 Ghz e 512 MB de memória.
  49. 49. Referêncial Teórico Using MPI, Portable Parallel, 2nd edition, Gropp et al, MIT Press, 1999. LAMPORT,LESLIE. The Byzantine Generals Problem. SRI International. Julho, 1982. SCHILDT, H. C, Completo e Total. São Paulo. Makron, 1992. BARNEY, Blaise. Message Passing Interface (MPI). Livermore Computing. 1994. Open MPI v1.8.1 documentation. Disponível em < http://www.open-mpi.org/doc/v1.8/ >. MACEDO, Raimundo. Tolerância a Falhas: Consenso em Sistemas Síncronos. LaSiD/UFBA. http://www.ecs.umass.edu/ece/koren/FaultTolerantSystems/simulator/Byzantine/byz.html

×