Buscar

Módulo 3 - Rotinas de Comunicação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Curso MPI - Módulo 3
Rotinas de Comunicação 
Carla Osthoff
Rotinas de Comunicação 
básicas.
• Existem duas rotinas básicas para 
fazer a troca de mensagens entre 
dois processadores, MPI_SEND e 
MPI_RECV,
• Estas rotinas permitem a troca de 
mensagem de forma bloqueante.
Apostila pg.14Apostila pg.14
Rotinas bloqueantes
• Não deixam o programa seguir 
em frente enquanto não 
obtiverem confirmação do 
recebimento da mensagem. 
MPI_Send
• Rotina básica para envio de 
mensagens no MPI, utiliza o 
modo de comunicação "blocking 
send" (envio bloqueante).
• Após o retorno, libera o "system 
buffer" e permite o acesso ao 
"application buffer”.
MPI_Send(&outmsg, 1, 
MPI_CHAR, dest, tag, 
MPI_COMM_WORLD);
• 1º: Endereço do dado a ser 
transmitido 
• 2º: Número de itens a ser enviado 
• 3º: Tipo de Dados 
• 4º: Destino 
• 5º: Comunicador 
MPI_Recv
• Rotina básica para o recebimento 
de mensagens no MPI, utiliza o 
modo de comunicação "blocking 
recv".
• Após o retorno, libera o "system 
buffer" e permite o acesso ao 
"application buffer". 
MPI_Recv(&inmsg, 1, MPI_CHAR, 
source, tag, MPI_COMM_WORLD, 
&Stat);
1º: Endereço do dado a ser 
transmitido 
2º: Número de itens a ser enviado 
3º: Tipo de Dados 
4º: Destino 
5º: Comunicador 
6º: Status da mensagem 
teste02
• EXEMPLO COM SEND E RECEIVE 
BLOQUEANTES
• Processo 0 envia mensagem para o 
processo 1 e espera pela mensagem de 
recebimento.
OPERAÇÕES PONTO A PONTO
• As operações MPI ponto a ponto 
geralmente envolvem operações 
de troca de mensagens entre 
dois processos distintos. 
• Enquanto um processo realiza 
uma operação de envio o outro 
processo realiza uma operação 
de recebimento da mensagem. 
Apostila pg.15Apostila pg.15
• Envio Síncrono
• Envio bloqueante /recebimento 
bloqueante
• Envio não-bloqueante / 
recebimento não-bloqueante.
• Enviar com Buffer
• Enviar / receber combinado
Rotinas envio/recebimento
Rotinas envio/recebimento
• Qualquer tipo de rotina de envio 
pode ser emparelhado com 
qualquer tipo de rotina de 
recebimento.
Rotinas envio/recebimento
• MPI também fornece várias 
rotinas associadas a operações 
de enviar / receber , tais como as 
utilizadas para esperar por uma 
mensagem “probe” ou para 
descobrir se uma mensagem 
chegou.
Buffering
Antes de descrevermos estas 
rotinas necessitamos definir 
o conceito de buffering.
Problema 1
• Ocorre um envio da operação 
Send no processo A, antes da 
operação Recv do processo B 
estar pronta para receber 
Problema 2
• Múltiplas mensagens de 
recebimento chegam a um 
mesmo processo que só pode 
receber uma mensagem por vez
• As mensagens em estado de 
espera necessitam ser alocadas 
em algum lugar do sistema. 
Buffering
Buffer do Sistema
Processador 1
Processo A
Send
Buffer do Sistema
Processador 2
Processo B
Recv
dado
dado
dado
REDE
Apostila pg.16Apostila pg.16
Buffering
• Observamos que o tratamento do 
recebimento é realizado pela 
implementação MPI (e não pelo 
padrão MPI). 
• Normalmente, a implementação 
reserva uma área no buffer do 
sistema para armazenar os dados 
em trânsito. 
Buffer da aplicação
• O padrão MPI também permite ao 
usuário a possibilidade de 
gerenciar um espaço de buffer 
dentro da aplicação.
MPI_Isend
• Identifica uma área na memória 
para ser utilizada como buffer 
para o envio das mensagens. 
• A execução do programa 
continua sem esperar que a 
mensagem seja copiada do buffer 
da aplicação para o sistema. 
MPI_Isend
• A instrução de comunicação devolve 
uma mensagem com um status 
pendente. 
• O programa não deve alterar o buffer 
até que as rotinas de teste de 
recebimento tais como a rotina 
MPI_Wait ou a rotina MPI_Test 
indiquem o término do envio
MPI_Irecv
• Identifica uma área na memória 
para ser utilizada como buffer de 
recebimento das mensagens. 
MPI_Irecv
• O programa segue o 
processamento imediatamente 
após o recebimento da 
mensagem sem esperar que a 
mensagem recebida seja copiada 
para o buffer do aplicativo.
MPI_Irecv
• A instrução de comunicação 
devolve uma mensagem com 
status pendente.
• O programa deve utilizar as 
chamadas para MPI_Wait ou 
MPI_Test para determinar se a 
operação foi concluída.
MPI_Wait
• Fica em estado de espera 
bloqueante até que a operação 
seja concluída. 
• Para o caso de várias operações 
bloqueantes, o programador pode 
especificar os parâmetros 
“nenhum, alguns ou todos”.
teste03
• EXEMPLO DE ROTINA COM 
SEND E RECEIVE NÃO 
BLOQUEANTES
Apostila pg.18Apostila pg.18
Mensagens bloqueantes Versus 
não-bloqueantes
• A maior parte das rotinas MPI 
ponto a ponto podem ser 
utilizadas seja no modo 
bloqueante, seja no modo não 
bloqueante. 
Apostila pg.18Apostila pg.18
Mensagens Bloqueantes
• Uma rotina bloqueante só irá 
prosseguir após estar segura 
de que o buffer da aplicação 
está livre para ser reutilizado.
Mensagens Bloqueantes
• Seguro significa que as 
modificações não afetarão os 
dados destinados ao processo de 
recebimento. 
• Seguro não implica que os dados 
foram efetivamente recebidos – 
os dados podem estar 
armazenados em um buffer do 
sistema
Mensagens Bloqueantes
• Um envio bloqueante pode ser 
sincronizado, o que significa que 
existe a ocorrência de um 
handshaking entre o processo de 
recebimento para confirmar que o 
envio foi realizado. 
Mensagens Bloqueantes
• Um envio bloqueante pode ser 
assíncrono se um buffer do 
sistema for utilizado para 
armazenar os dados para um 
eventual envio. 
Mensagens Bloqueantes
• Um recebimento bloqueante só 
recebe o "retorno" depois que o 
dado já chegou na aplicação 
destino e está pronto para ser 
utilizado pelo programa
Mensagens Não Bloqueantes
• As rotinas de envios e 
recebimentos não-bloqueantes se 
comportam de forma semelhante
• Elas retornam quase 
imediatamente. 
Mensagens Não Bloqueantes
• Elas não esperam pelos eventos 
de confirmação para prosseguir, 
tal como a cópia da mensagem 
do buffer do sistema para o buffer 
da aplicação ou da chegada da 
mensagem.
Mensagens Não Bloqueantes
• Fazem um "pedido" a biblioteca 
MPI para realizar a operação 
quando este estiver disponível. 
• O usuário não pode prever 
quando isso acontecerá. 
Mensagens Não Bloqueantes
• Não é seguro modificar o buffer 
da aplicação até que se tenha a 
confirmação de que a operação 
foi efetivamente realizado pela 
biblioteca. 
• Para isto a biblioteca MPI fornece 
operações de espera, chamadas 
de wait.
Mensagens Não Bloqueantes
• Observamos que as 
comunicações não-bloqueantes 
são usadas principalmente para 
sobrepor comunicação com 
computação e explorar possíveis 
ganhos de desempenho 
Ordenação
• MPI garante que as mensagens 
não irão ultrapassar umas às 
outras. 
Apostila pg.19Apostila pg.19
Ordenação
• Se um remetente envia duas 
mensagens (Mensagem 1 e 
Mensagem 2) sucessivamente 
para o mesmo destino
• A operação irá receber a 
Mensagem 1 antes de receber a
Mensagem 2. 
Ordenação
• Se um receptor recebe duas 
mensagens ( Recebimento 1 e 
Recebimento 2), sucessivamente, 
com o mesmo endereço a 
mensagem de recebimento 1 
será recebida antes da 
mensagem 2. 
Equidade
• Cabe ao programador evitar uma 
situação de "starvation", ou seja, 
uma operação em estado de 
espera eterno. 
Apostila pg.19Apostila pg.19
Equidade
• No caso de dois processos 
enviarem uma mensagem 
concorrente para um terceiro 
processo, apenas um dos envios 
será completado, ou seja, 
chegará ao seu destino final.
	Curso MPI - Módulo 3
	Rotinas de Comunicação básicas.
	Rotinas bloqueantes
	MPI_Send
	Slide Number 5
	MPI_Recv
	Slide Number 7
	teste02
	OPERAÇÕES PONTO A PONTO 
	Rotinas envio/recebimento
	Rotinas envio/recebimento
	Rotinas envio/recebimento
	Buffering
	Problema 1
	Problema 2
	Buffering
	Buffering
	Buffer da aplicação
	MPI_Isend
	MPI_Isend
	MPI_Irecv 
	MPI_Irecv
	MPI_Irecv
	MPI_Wait 
	teste03
	Mensagens bloqueantes Versus não-bloqueantes 
	Mensagens BloqueantesMensagens Bloqueantes
	Mensagens Bloqueantes
	Mensagens Bloqueantes
	Mensagens Bloqueantes
	Mensagens Não Bloqueantes
	Mensagens Não Bloqueantes
	Mensagens Não Bloqueantes
	Mensagens Não Bloqueantes
	Mensagens Não Bloqueantes
	Ordenação 
	Ordenação
	Ordenação
	Equidade 
	Equidade

Outros materiais