Prof. Luiz Fernando Bittencourt IC - UNICAMP
MC714 Sistemas Distribuídos 2° semestre, 2013
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos • Existem sistemas que possuem algumas, mas não todas, as características de um sistema distribuído
• Como classificá-los? • São sistemas distribuídos ou sistemas multiprocessados?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Arquiteturas de memória • Dois aspectos: localização e política de acesso. • Uma memória para todos os processadores: memória compartilhada.
• Se memória não é compartilhada: acesso via meios explícitos de comunicação, como troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Arquiteturas de memória • Memória centralizada:
• Memória comum acessada por todos os processadores. • Memória distribuída:
• Fisicamente distribuída com os processadores. • Memória compartilhada
• Espaço de endereçamento global • Tempo de acesso diferente, em geral
• Multiprocessadores de memória distribuída • Troca de mensagens • Acesso através do processador • Hierárquica: alguns (2-4) processadores compartilham memória,
formando um nó de computação. Múltiplos nós são conectados em um nível mais alto – IBM Blue Gene L
• Fig 3
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Arquiteturas de memória - diferenças • Memória centralizada
• Extensão intuitiva da arquitetura de um único processador. • Contenção na comunicação com memória central limita
escalabilidade. • Sistemas baseados em barramento geralmente possuem poucos
processadores (<=8).
• Memória distribuída • Com troca de mensagem permite projeto mais simples, mas
programação torna-se mais complicada. • Maior escalabilidade – massively parallel processors (MPP) são
sistemas de memória distribuída que usam troca de mensagens e podem conter centenas de milhares de processadores.
• Multiprocessadores de memória distribuída integram as duas abordagens, fornecendo escalabilidade e maior facilidade de programação.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos - classificação • Sistemas multiprocessados. • Multicomputadores. • Processadores vetoriais
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Sistemas paralelos onde os múltiplos processadores tem
acesso direto a uma memória compartilhada, a qual forma um espaço de endereçamento único.
• Geralmente sem um relógio comum. • Geralmente constituem uma Uniform Memory Access
(UMA), onde a latência de acesso à memória é a mesma para todo processador.
• Comunicação entre processos: leitura/escrita da memória compartilhada.
• Processadores geralmente do mesmo tipo em um mesmo container.
• Fig 4
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Interconexão: bus ou multistage switch • Representação: grafo não direcionado
• Vértice = processador + memória local + switch • Aresta = enlace de comunicação entre processadores • Grau – número de mensagens que podem ser manipuladas
simultaneamente por um processador. • Diâmetro – menor número de nós necessário para comunicação
entre dois nós mais distantes na rede. • Largura de bisseção – número de enlaces mínimo que divide a
rede na metade. Indica quantas mensagens podem ser trocadas simultaneamente entre duas metades da rede.
• Fig 15
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Duas redes de interconexão populares são a omega e a
butterfly. • São redes multi-estágio formadas por comutadores 2x2.
• Permitem dados de qualquer das duas entradas serem direcionados para qualquer das duas saídas.
• Colisões ocorrem quando mais de um dado é direcionado ao mesmo tempo para a mesma saída.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Omega
• Omega: n processadores, n unidades de memória • (n/2) log2n switches 2x2, log2n níveis • Função de interconexão
• Função de roteamento
• Para nível s da rede, se o s+1-ésimo bit mais significativo de j é 0, vai pro fio de cima, se for 1 vai pro fio de baixo.
• Fig 5
j =
�2i, 0 ≤ i ≤ n
2 − 1
2i+ 1− n, n2 ≤ i ≤ n− 1
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Butterfly
• Função de interconexão • Depende de n e de s • Seja M=n/2 switches em cada nível, e <x,s> um switch x no nível
s • Existe uma aresta de <x,s> para <y, s+1> se:
• x=y • x XOR y tem exatamente um bit 1, que está no s+1-ésimo bit mais
significativo
• Função de roteamento • Num nível s, se s+1-ésimo bit mais significativo de j é 0, vai para
o fio de cima, senão vai para o fio de baixo. • Fig 6
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores • Sistema paralelo onde múltiplos processadores não têm
acesso direto a memória compartilhada. • Memória pode ou não formar um espaço de
endereçamento comum. • Geralmente não têm relógio comum. • Próximos fisicamente. • Fortemente acoplados (hardware e software
homogêneos). • Fig 7
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores • Espaço de endereçamento comum ou troca de
mensagens. • Espaço de endereçamento comum: geralmente
corresponde a arquitetura NUMA (non-uniform memory access).
• ccNuma – Cache Coherent NUMA
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores - topologias • Topologias regulares e simétricas
• Mesh, anel, torus, cubo, hipercubo • Propriedades matemáticas interessantes para roteamento • Fig 8
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Torus • Wrap-around 2D-mesh (Torus) • Mesh contém processadores. • Comprimento máximo do caminho entre quaisquer 2
processadores: k
k × k k2
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Hipercubo • Hipercubo com k dimensões tem unidades de
processamento/memória. • Cada unidade é um nó no hipercubo e tem um rótulo
único de k bits. • Grau de cada nó: log2(n). • Cada uma das k dimensões é associada com uma
posição nos rótulos. • Rótulos de quaisquer 2 nós adjacentes são iguais exceto
pelo bit da posição correspondente à dimensão na qual os nós diferem. • Processadores rotulados de forma que o caminho mínimo entre
quaisquer 2 nós é a distância de Hamming de seus rótulos (limitante superior = k).
2k
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Hipercubo • Um hipercubo de d dimensões pode ser particionado em
2 hipercubos de d-1 dimensões. • Fixe uma posição qualquer do rótulo. Processadores com 0 nessa
posição são um hipercubo de dimensão d-1, e processadores com 1 são outro hipercubo.
• Roteamento salto-a-salto. • A cada passo, a mensagem pode ser enviada para qualquer
dimensão correspondente à posição na qual o endereço do nó corrente difere do endereço do destino.
• Múltiplas rotas entre qualquer par de nós: tolerância a falhas e controle de congestionamento.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Array processors (vector processors) • Processadores fisicamente próximos, fortemente
acoplados. • Relógio comum. • Podem não compartilhar memória e podem comunicar-se
por troca de mensagens. • Processamento e troca de dados sincronizados. • Ex.: DSP e processamento de imagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização de sistemas paralelos • Distinção/caracterização é importante para projeto de
algoritmos. • Considerar latências
• Muito acesso aos mesmos dados, muito acesso a dados locais e pouco acesso a dados distribuídos, etc.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização de sistemas paralelos • Uso primário de sistemas paralelos: maior vazão através
da divisão da carga entre os processadores. • Tarefas que podem ser melhor aceleradas são as que
podem ser particionadas em subtarefas com pouca comunicação. • Ex.:Muitas operações sobre vetores e matrizes, comuns em
aplicações científicas.
• Máquinas paralelas foram objeto de pesquisa teórica e de sistemas em 1980, entretanto não se provaram economicamente viáveis na época. • Poucas aplicações populares tiravam vantagem de paralelismo. • Aumento da capacidade de processamento de PCs.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia • Processamento (Flynn):
• SISD, MISD, SIMD, MIMD
• Programação • Memória compartilhada • Troca de mensagens • PRAM – Parallel Random Access Machine • LogP vs. PRAM
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia – Flynn • Quatro “modos” de processamento classificando:
• Como é o processamento de instruções • Quais são os dados de entrada de cada processador • Single Instruction, Single Data – SISD • Single Instruction, Multiple Data – SIMD • Multiple Instruction, Single Data – MISD • Multiple Instruction, Multiple Data – MIMD
Prof. Luiz Fernando Bittencourt IC - UNICAMP
SISD • Single instruction stream, single data stream • Modo “convencional” no paradigma de Von Neumann • Uma CPU • Uma unidade de memória • Conectados por bus • Fig 9
Prof. Luiz Fernando Bittencourt IC - UNICAMP
SIMD • Single instruction stream, multiple data stream. • Processamento: múltiplos processadores homogêneos. • Mesma instrução. • Itens de dados distintos. • Processamento de arrays e matrizes. • Co-processamento (MMX, SSE). • Fig 10
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MISD • Multiple instruction stream, single data stream. • Operações diferentes • Mesmo dado • Fig 11
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MIMD • Multiple instruction stream, multiple data stream. • Instruções diferentes. • Dados diferentes. • Modo de operação de sistemas distribuídos e paralelos
em geral. • Sem relógio comum. • Fig 12
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Troca de mensagem, memória compartilhada, PRAM, LogP
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Memória compartilhada • Paradigmas de programação para sistemas paralelos tem
uma forte correspondência com políticas de acesso à memória em multiprocessadores.
• Diferença fundamental: uso de memória compartilhada ou programação usando troca de mensagens. • Memória compartilhada: cada processador tem acesso total à
memória compartilhada; comunicação entre processos se dá através da memória (acesso concorrente necessita sincronização explícita).
• Troca de mensagens: comunicação entre processadores feita de forma explícita através de comandos send e receive.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Memória compartilhada • Tem espaço de endereçamento comum no sistema. • Comunicação através de variáveis compartilhadas. • Variáveis de controle para sincronização entre processos
(p.ex. semáforos e monitores). • Paradigma de programação (memória compartilhada ou
troca de mensagem) nem sempre corresponde à organização de memória do sistema alvo. • Troca de mensagem pode ser usada tanto em arquiteturas de
memória compartilhada quanto de troca de mensagens. • Em memória compartilhada, uma troca de mensagem pode ser
implementada como uma simples cópia de memória. • Memória compartilhada distribuída pode ser emulada através de uma
camada de software adicional em arquitetura de troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Modelos PRAM e LogP • Modelos para projeto e análise de complexidade de
algoritmos paralelos. • PRAM – Parallel Random Access Machine
• Máquina ideal com memória centralizada e compartilhada, processadores síncronos.
• Acesso a uma célula: admite modelar acesso exclusivo ou concorrente.
• Células diferentes podem ser acessadas concorrentemente. • Simples, porém não considera custos de comunicação entre
processadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Modelos PRAM e LogP • Modelo PRAM irreal, especialmente em sistemas
distribuídos, devido à suposição de comunicação sem custo entre processadores.
• LogP • Considera custo de comunicação entre processadores. • L: limite superior no atraso em uma troca de mensagem. • o: overhead – tempo que um processador gasta enviando ou
recebendo uma mensagem, durante o qual não efetua outra operação.
• g: Gap – tempo mínimo entre transmissões ou recepções consecutivas de mensagens (1/BW).
• Limita número de mensagens simultâneas a • Modelo assíncrono. • Fig 13
�L
g
�
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento, paralelismo, concorrência e granularidade
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento • Grau de acoplamento (hardware ou software):
interdependência e “amarração” e/ou homogeneidade entre módulos. • Fortemente acoplados (SIMD, MISD / relógio comum) ou
fracamente acoplados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento • Ex MIMD:
• Multiprocessadores fortemente acoplados (com memória compartilhada Uniform Memory Access). Bus (Sequent, Encore) ou switch (NYU)
• Multiprocessadores/computadores fortemente acoplados (com memória compartilhada Non-Uniform Memory Access – SGI Origin 2000, Sun Ultra HPC – ou troca de mensagens – hipercubo, torus).
• Multicomputadores (sem memória compartilhada ou relógio comum) fracamente acoplados fisicamente próximos. Bus (NOW + LAN ou Myrinet), ou usando uma rede genérica, processadores podem ser heterogêneos. Sistema distribuído (sem memória compartilhada ou relógio comum) com característica de sistema paralelo (processadores próximos). Abordagens diferentes de redes de longa distância.
• Multicomputadores fracamente acoplados, fisicamente distantes. Noção convencional de sistemas distribuídos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo / speedup em um sistema específico • Speedup relativo de um programa em uma dada máquina
específica. • Depende do número de processadores e mapeamento do
código nesses processadores. • Razão entre o tempo de execução T(1) em um único
processador e tempo T(n) com n processadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo em um programa paralelo/distribuído • Medida agregada da porcentagem de tempo que todos os
processadores estão executando instruções de CPU ao invés de aguardar comunicação, seja por memória compartilhada ou troca de mensagens.
• Se a medida agregada é somente em função do código, paralelismo é independente de arquitetura.
• Caso contrário, definição de paralelismo se assemelha à de speedup.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Concorrência de um programa • Termo mais amplo • Usado no contexto de sistemas distribuídos • Razão entre o número de operações locais (sem
comunicação / memória compartilhada) e o número total de operações.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Paralelismo: condição que aparece quando pelo menos duas
threads estão executando simultaneamente. • Concorrência: condição existente quando pelo menos duas
threads estão progredindo. • Paralelismo: programação para execução de computação
simultânea (possivelmente relacionada). • Concorrência: programação como composição de processos
(no termo amplo) executando independentemente. • Paralelismo: quando tarefas executam ao mesmo tempo. • Concorrência: quando tarefas podem começar, executar, e
terminar em intervalos de tempo sobrepostos. Não significa necessariamente que executarão ao mesmo tempo (e.g., multitasking em processadores de núcleo único).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Problema: mover uma pilha de manuais de linguagens
obsoletas para uma fornalha.
• Apenas 1 roedor demora muito.
• http://concur.rspace.googlecode.com/hg/talk/concur.html
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Mais roedores.
• Não ajuda, precisamos de mais carrinhos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Mais roedores e mais carrinhos.
• Mais rápido, mas há gargalos na pilha e na fornalha. • Necessidade de sincronizar os roedores: uma mensagem
(comunicação entre roedores) pode resolver.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Dobrar tudo
• Remover gargalo, tornando-os independentes. • Consome entrada duas vezes mais rápido.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Projeto não é automaticamente paralelo. • E se somente um roedor move-se em um dado instante
de tempo? • Continua sendo concorrente (i.e., o projeto), mas não paralelo. • Entretanto, é automaticamente paralelizável.
• Essa composição concorrente habilita outros modelos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Outro projeto.
• Três roedores em ação, mas provavelmente com atrasos. • Cada roedor é um procedimento independente, mais a
coordenação (comunicação).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência
• Adicionar novo roedor para carregar os carrinhos. • Organizando tudo corretamente (não trivial), é quatro
vezes mais rápido que o projeto original de 1 roedor.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Quatro procedimentos distintos:
• Carregar manuais no carrinho • Mover carrinho até a fornalha • Descarregar carrinho na fornalha • Retornar o carrinho vazio
• Diferentes projetos concorrentes permitem diferentes maneiras de paralelização.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Mais paralelização:
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Ou nenhuma paralelização (se cada um trabalha em
determinado intervalo de tempo diferente dos outros), mas continua sendo uma solução concorrente.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Outro projeto • Pilha adicional • 100 pilhas ajuda?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Paralelizando da maneira usual • Executar mais procedimentos concorrentes para
aumentar vazão
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Ou ainda...
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Usando todas as técnicas: 16 roedores trabalhando.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo vs. Concorrência • Existem muitas formas de quebrar um processo em
pedaços menores: projeto concorrente. • Paralelização pode ser implementada de forma que sua
corretude é “fácil”.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Granularidade de um programa • Razão entre quantidade de computação e quantidade de
comunicação do programa paralelo/concorrente. • Granularidade alta (baixa): relativamente mais (menos)
instruções produtivas de CPU comparadas ao número de vezes que os processadores comunicam-se.
• Baixa granularidade: se encaixa melhor em sistemas fortemente acoplados. • Latência pode degradar vazão.