Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Modelo BSP Bulk Synchronous Parallel
baseado no material Rob Bisseling:
Parallel Scientific Computation
motivação
• modelo simples para programas paralelos
• implementável de forma eficiente
• facilidades para análise de desempenho
• independência de arquitetura • em oposição a outros modelos como PRAM
• base para API padrão • BSPlib
“máquina” BSP
• processadores podem escrever em todas as memórias! • tempo de acesso a qualquer memória remota é igual
algoritmo BSP
algoritmo BSP
• sequência de superpassos
• passos • computação • comunicação
• sincronização global depois de cada passo • bulk synchronization
custo BSP
• custo de comunicação em um passo • h: máximo de palavras recebidas ou enviadas por algum
processador no superpasso
• custo: hg + l • g: custo de transmissão por palavra (em flop) • l: overhead fixo de sincronização e comunicação (em flop)
• supõe sobreposição de envio e recebimento
custo BSP
• custo de computação: w + l • w: quantidade de trabalho (em flop) • l: overhead de sincronização (em flop)
• custo total: a + bg + cl
• parâmetros: p, r, g e l • p: número de processadores • r: taxa de execução de trabalho: flop/s • g: taxa de transmissão • l: overhead
exemplo de custo
p =5, g = 2.5, l=20
custo(passo1): 60 + l = 80 flops custo(passo2): (hs = 4(msgs).5(pals)) = 20) 20g + l = 70 flops ...
ex: produto interno
• X e Y vetores (matrizes nx1)
• produto interno: XT.Y
• cada processador calcula uma parte do pi • todos precisam do resultado
algoritmo
comunicação
redundância
custo
2n/p + l
(p-1)g + l
p + l
2n/p + p + (p-1)g +3l!
algoritmo produto interno
outra alternativa
• envio de resultados parciais a um mestre
• mestre calcula soma e retorna resultados a todos
• cálculo de custo: • mais uma fase de comunicação • na fase em que mestre soma resultados, demais
processadores ficam ociosos • custo total, no modelo BSP, só aumenta
reflete maior tempo entre início e fim de execução mas e se pensarmos em qto processamento total estamos
gastando…?
biblioteca BSP
• padrão de interface de programação • como MPI
• diversas implementações • Oxford • Universidade de Paderborn
• para diversas plataformas
• outras interfaces • one-sided communication em MPIv2
BSPlib - modelo de execução
BSPlib
• processador 0 tem papel fixo e especial • só ele pode executar operações de entrada • só ele executa partes sequenciais
• operações • bsp_init, bsp_begin, bsp_sync, bsp_end, bsp_pid, bsp_time,
bsp_nprocs, ... • FORTRAN, C, C++
• comunicação executada como parte de bsp_sync
put: acesso a mem remota
• processos registram áreas para uso pelos outros • operações são completadas ao final da sincronização • condições de corrida
acesso remoto
• operação bsp_push_reg(endereco, numerobytes)
deve ser executada em todos os processos
• chamada de linking entre os processos
• amarração fica valendo a partir do início do superpasso seguinte
ex: produto interno
ex: produto interno
...
bspinprod - cont.
ex: produto interno
one-sided communication - MPI
• versão 2 do MPI (implementada em mpich2) dá suporte a modelo BSP, com comunicação unilateral: • int MPI_Win_create (void *base, …, MPI_Win *win)
» síncrona (coletiva) • int MPI_Put (void *origin_addr, int origin_count, MPI_Datatype
origin_datatype, int target_rank, …, MPI_Win win) » assíncrona
• int MPI_Get (void *origin_addr, …, MPI_Win win) » assíncrona
• int MPI_Win_fence (int assert, MPI_Win win)
BSP - referências
• R. Bisseling. Parallel Scientific Computation. Oxford University Press, 2004. • capítulo 1 disponível online