Algoritmos Paralelos
1
Demanda por velocidade computacional



Demanda contínua por maior rapidez
computacional das máquinas que as
atualmente disponíveis.
As áreas que exigem maior rapidez
computacional incluem modelagem numérica
e simulação de problemas de engenharia.
Computação dever ser completada em um
tempo “razoável”.
2
Problemas desafiadores



Um problema desafiador é aquele que não
pode ser resolvido em um tempo razoável
com os computadores atuais.
Claro, um tempo de execução de 5 anos
nunca é razoável.
Exemplos



Modelar grandes estruturas de DNA
Previsão de tempo
Modelar movimentos de corpos astronômicos.
3
Previsão do Tempo
Atmosfera é modelada dividindo-se em células 3-d.
 Cálculos em cada célula é repetida várias vezes
para modelar a passagem do tempo.
 Exemplo
A atmosfera inteira é dividida em partes de
1 km x 1km x 1 km para uma altura de 10 km (10
células) - cerca de 5 x 108 células.
Suponha que cada cálculo requer 200 flops. Em um
passo são necessários 1011 flops.

4
Movimento de Corpos Celestes




Cada corpo é atraído por outro pela força
gravitacional.
O movimento de cada corpo é previsto
através do cálculo da força total em cada
corpo.
Com N corpos, N-1 forças calculadas em
cada corpo, ou aprox. N2 cálculos.
Após determinar uma posição dos corpos,
repetir os cálculos.
5
Supercomputador



BlueGene
Está localizado na cidade de Livermore(USA) e tem
a incrível velocidade de processamento de
aproximadamente 280,6 Teraflops.
são 131.072 processadores, 24 Terabytes de
memória. Ele foi desenvolvido para simular toda e
qualquer modificação terrestre: oceanos, atmosfera,
tudo em conjunto conseguindo prever terremotos
com até 180 dias de antecedência
6
Computação Paralela



Uma das estratégias que podem ser
adotadas para se aumentar o desempenho
de uma aplicação computacional, é utilizar
vários processos operando sobre um mesmo
problema.
Neste caso, o problema é dividido em partes
e cada processador "cuida" de uma (ou mais)
dessas partes
A programação dessa forma é dita
programação paralela.
7
Computação Paralela


Usar mais de um computador, ou um
computador com mais de um processador,
para resolver um problema.
Motivos:



Computação mais rápida - idéia simples - n
computadores operando simultaneamente produz
o resultado n vezes mais rápido –
Não é sempre n vezes mais rápido.
Problemas: Tolerância a falhas, mais memória
disponível, ...
8
Tipos de Computadores Paralelos

Programação paralela requer uma plataforma
de computação, o qual pode ser:



Ou um computador com múltiplos processadores
Ou múltiplos processadores interconectados
Vamos analisar os detalhes das
organizações possíveis de computadores
paralelos.
9
Classificação de Flynn

Em 1966, M. J. Flynn propôs uma
classificação dos sistemas computacionais
baseados na relação entre o fluxo de
instruções e o fluxo de dados.
10
Classificação de Flynn
11
Classificação de Flynn: SISD

SISD - Single Instruction Stream - Single
Data Stream


Em um computador monoprocessado, um
programa é representado por uma sequência
única de instruções.
A cada instante de tempo, uma única instrução
opera sobre um único conjunto de dados
12
Classificação de Flynn: SIMD

SIMD - Single Instruction Stream - Multiple
Data Stream


Cada processador executa a mesma instrução,
ao mesmo tempo, sobre um conjunto distinto de
dados.
Há aplicações que requerem este modelo de
operação, como por exemplo, simuladores de
sistemas moleculares e processamento de
imagens.
13
Modelo SIMD
14
Classificação de Flynn: MISD

MISD - Multiple Instruction Stream - Single
Data Stream

Não existe, na prática, um computador com esta
classificação. Alguns autores incluem neste grupo
arquiteturas pipeline.
15
Classificação de Flynn: MIMD

MIMD - Multiple Instruction Stream - Multiple
Data Stream


Engloba os modelos de memória compartilhada e
passagem de mensagens, onde ocorrem a
presença de vários processadores.
Composto pelos multiprocessadores e
multicomputadores
16
O Modelo MIMD
17
Extensão à classificação de Flynn

Em 1988, E. E. Johnson propôs uma
extensão à classificação de Flynn, na qual as
máquinas MIMD seriam baseadas na
estrutura de memória (global ou distribuída) e
no mecanismo usado para
comunicação/sincronização (variáveis
compartilhadas ou passagem de
mensagem).
18
Extensão à classificação de Flynn
19
Extensão à classificação de Flynn

GMSV - Global Memory - Shared Variables


Engloba as máquinas que contém vários
processadores e que compartilham a mesma
memória.
GMMP - Global Memory – Message Passing

Não existe, na prática, um computador com esta
classificação.
20
Extensão à classificação de Flynn

DMSV - Distributed Memory - Shared
Variables


Engloba múltiplos computadores interconectados
e que compartilham a memória distribuída.
DMMP - Distributed Memory - Message
Passing


Engloba múltiplos computadores interconectados
e que se comunicam via passagem (troca) de
mensagens.
Supercomputadores
21
Computador Paralelo


Podemos entender um computador paralelo
como sendo uma máquina contendo vários
processadores, bem como um conjunto de
máquinas interconectadas.
Teoricamente, teríamos que N computadores
equivaleriam a N vezes o poder
computacional de uma única máquina.
22
Computador Paralelo

Na prática, obviamente, nem todos os
problemas podem ser resolvidos pela divisão
perfeita em partes totalmente independentes.


Além disso, temos outros fatores físicos, como
latência e largura de banda das redes de
interconexão entre as máquinas, por exemplo.
Contudo, um considerável aumento de
desempenho pode ser alcançado.
23
Computador Paralelo


O uso de múltiplos computadores/processadores
permite que se possa obter uma solução mais
precisa de um problema em um tempo aceitável.
Além disso, um fator associado com o uso de
múltiplos computadores é que podemos ter uma
quantidade total de memória muito superior a de um
único computador, possibilitando a resolução
também de problemas que necessitem de grande
volume de dados.
24
Tipos de Computadores Paralelos

Há dois tipos principais:


Multiprocessador de Memória Compartilhada
Multicomputador de Memória Distribuída
25
Sistema com Múltiplos Processadores e
Memória Compartilhada


Computador convencional = um processador
executando um programa em uma memória
principal
Neste modelo é utilizado o conceito de
memória virtual, ou seja, são associados dois
endereços para cada local da memória:


um endereço virtual, gerado pelo processador
um endereço real, usado para o acesso à posição
de memória
26
Sistema com Múltiplos Processadores e
Memória Compartilhada



Com base em uma tabela armazenada no
hardware se faz a tradução automática entre
um endereço virtual e um real.
Uma maneira de se estender este modelo
com um único processador é ter vários
processadores conectados a uma memória
principal.
Neste modelo é utilizado um único espaço de
endereçamento, podendo-se usar também
uma extensão do modelo de memória virtual.
27
Sistema com Múltiplos Processadores e
Memória Compartilhada
28
Visão simplificada de um multiprocessador
de memória compartilhada

Exemplos


Dual Pentium
Sparcs Sun
29
Sistema com Múltiplos Processadores e
Memória Compartilhada



Cada processador acessa qualquer
localização de memória.
Há um único espaço de endereço, cada local
de memória é dado por um único endereço
em um só intervalo de endereços.
Geralmente, sua programação é mais
conveniente embora o acesso a dados
compartilhados deva ser controlado pelo
programador (usando seções críticas etc.)
30
Sistema com Múltiplos Processadores e
Memória Compartilhada

O desenvolvimento de programas para
execução neste modelo de memória
compartilhada pode ser feito:

Usando Threads (Java, ..) na qual o programador
decompõe o programa em seqüências paralelas
individuais, cada uma sendo uma thread, e sendo
capaz de acessar variáveis declaradas fora das
threads.
31
Sistema com Múltiplos Processadores e
Memória Compartilhada

O desenvolvimento de programas para
execução neste modelo de memória
compartilhada pode ser feito (cont.):

Usando uma linguagem de programação
sequencial com diretivas de compilação para
declarar variáveis compartilhadas e especificar
paralelismo.

Ex. OpenMP – Padrão da indústria
32
Sistema com Múltiplos Processadores e
Memória Compartilhada

O desenvolvimento de programas para
execução neste modelo de memória
compartilhada pode ser feito (cont.):

Linguagem de programação seqüencial c/
biblioteca user-level para declarar e acessar
variáveis compartilhadas.
33
Memória Compartilhada Distribuída


Cada processador tem acesso à memória como um
todo, usando um espaço de endereçamento único.
Para o acesso a um endereço de memória não-local
ao processador, é necessário uma troca de
mensagem para passar dados do processador para
o local da memória ou vice-versa.


Esta troca é transparente e automatizada de forma a
esconder o fato da distribuição
Desvantagem:

Acesso remoto pode representar um atraso maior do que
um acesso à memória local
34
Múltiplos Computadores com Passagem
de Mensagem
• Computador completo conectado por uma rede de
interconexão:
35
Múltiplos Computadores com Passagem
de Mensagem



Memória Compartilhada = sistema
especialmente projetado
Alternativa: uso de um conjunto de
computadores interconectados via rede
Cada computador consiste de um
processador e uma memória local não
acessível pelos demais processadores.

A memória é distribuída entre os computadores e
cada um tem seu próprio espaço de
endereçamento
36
Múltiplos Computadores com Passagem
de Mensagem



Mensagens são enviadas de um processador
para outro via a rede de interconexão.
Tais mensagens podem incluir dados
necessários para que um processador faça
seu trabalho.
O conteúdo dessas mensagens depende do
processo que está sendo executado.
37
Múltiplos Computadores com Passagem
de Mensagem

Programar para este modelo implica na
divisão do problema em partes que deverão
executar simultaneamente.


Podem ser usadas linguagens seqüenciais
estendidas ou linguagens paralelas
Porém, mais comum é o uso de bibliotecas com
rotinas para passagem de mensagens que podem
ser associadas a linguagens de programação
convencionais
38
Múltiplos Computadores com Passagem
de Mensagem

Portanto, um problema é dividido em
processos, os quais são alocados nos
computadores que compõem o ambiente de
passagem de mensagem.


Processo trocam mensagens entre si, sendo esta
a única forma de comunicação entre os mesmos,
distribuindo dados e resultados
Este modelo é mais facilmente escalável que
o modelo de memória compartilhada.
39
Múltiplos Computadores com Passagem
de Mensagem


Desvantagens:

Menos atrativa que memória compartilhada

Programador tem que explicitamente prover as chamadas
às rotinas de passagem de mensagem

Bastante susceptível a erros de programação

Dados não podem ser compartilhados, apenas copiados
Vantagens:

Não requer mecanismos avançados para acesso
concorrente a dados compartilhados

Escalabilidade mais facilmente implementada
40
Aspectos Arquiteturais em Ambientes de
Passagem de Mensagem

Redes Estáticas

Presença de links físicos fixos entre os computadores
41
Aspectos Arquiteturais em Ambientes de
Passagem de Mensagem

Redes Estáticas

Links podem ser bidirecionais ou apresentarem
dois links unidirecionais separados (um em cada
direção)

Características chaves:

Largura de banda (bits/segundo)

Latência (tempo para transferir uma mensagem pela
rede)

Custo
42
Aspectos Arquiteturais em Ambientes de
Passagem de Mensagem

Redes Estáticas


A quantidade de links entre dois nós é um fator
importante no atraso de uma mensagem
Diâmetro representa o número mínimo de links
entre os dois nós mais distantes da rede.

É usado para se determinar o maior atraso que
pode ocorrer
43
Download

Algoritmos Paralelos