MOM Midleware orientada a objetos
1025 palavras
5 páginas
Comunicação orientada a mensagenscríticas a RPC
•
•
•
•
sincronismo modelo um a um dificuldades de tratamento de falhas dificuldades com arquiteturas não clienteservidor
volta ao modelo de troca de mensagens
com diferentes níveis de abstração
Sistemas de mensagens
• suporte para ponto a ponto e grupos
• desacoplamento
– temporal
• persistência das mensagens
– espacial
• canais e congêneres
Comunicação em grupo
• primitiva única transmite msgs a grupo de procs
• grupos abertos e fechados
• grupos estáticos e dinâmicos
– serviços de controle de participantes
Comunicação em Grupo
• motivações
– replicação e tolerância a falhas
– ferramentas para colaboração
• jogos
• conferências
• edição colaborativa
• um primeiro exemplo: no MPI, ligado a modelo SPMD
– operações coletivas
MPI - message passing interface
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0)
{
strcpy(message, "Hello, world"); for (i = 1; i < size; i++)
MPI_Send(message, 13, MPI_CHAR, i, type,
MPI_COMM_WORLD);
} else MPI_Recv(message, 20, MPI_CHAR, 0, type,
MPI_COMM_WORLD, &status); printf( "Message from process = %d : %s\n", rank, message);
MPI_Finalize();
}
grupos no MPI
• todos os processos de uma aplicação pertencem a um comunicador (grupo)
– MPI_COMM_WORLD
• grupos fechados com comunicação sincronizada
• operações coletivas têm como um de seus parâmetros um comunicador
– MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
• novos comunicadores podem ser criados dentro do programa Operações Coletivas no MPI
•
•
•
•
•
Barrier: sincronização pura
Broadcast
Gather
Scatter
Reduction
todas criam barreira implícita
exemplo: MPI_Scatterv
Header for MPI_Scatterv int MPI_Scatterv ( void *send_buffer, int *send_cnt, int *send_disp,
MPI_Datatype send_type, void *receive_buffer,