Vous êtes sur la page 1sur 58

Definindo melhor alguns conceitos

Processamento Paralelo: processamento de informação concorrente que


pertencem a um ou mais processos que resolvem um único problema.

Processamento Distribuído: processamento de informações em um


sistema cujos recursos estão sendo compartilhados por vários programas

Computador Paralelo: computador de múltiplos processadores capaz de


realizar processamento paralelo

Supercomputador: computador de propósito geral capaz de resolver


problemas em alta velocidade, comparando com outras máquinas da mesma
época.
Terminologia
A vazão de um dispositivo é o número de resultados produzidos por unidade
de tempo. (throughtput)

Speedup (aceleração): razão entre o tempo de execução necessário para o


algoritmo seqüencial mais eficiente e o tempo necessário para se realizar a
mesma computação numa máquina paralela

Existem diversas definições de speedup:


– speedup absoluto(n)= T(melhor alg. seq. )/ T( prog // c/ n proc.)
– speedup aproximado(n)= T(prog.// c/1 proc.)/T( prog // c/ n proc.)
– speedup relativo (n)= T(prog. // c/(n-1) proc.)/T(prog.// c/ n proc.)
Computação concorrente

Duas formas de se explorar a concorrência em computação em computação


– Paralelismo de controle e de dados

tempo t

7+3 string
10 +==“casa”?
200 32 +
33 * 14
329
Paralelismo de Controle

aplicando-se operações diferentes a diferentes dados simultaneamente.


– fluxo de dados entre processos pode ser arbitrariamente complexo

Exemplo:

– Pipelining: cada estágio trabalha em velocidade plena sobre uma parte


particular da computação. A saída de um estágio é a entrada do estágio seguinte
Paralelismo de Controle

E1 E2 E3 E4
tempo

info 1

info 2 info 1

info 3 info 2 info 1

info 4 info 3 info 2 info 1


Paralelismo de Dados

uso de vários processadores para executar a mesma operação ao mesmo


tempo sobre elementos distintos de dados

Um aumento de k vezes no número de unidades funcionais levaria a um


aumento de k vezes a vazão do sistema

7+3 10 + 200 33 + 329


Aplicações

Aplicações ou programas podem ser executados mais rapidamente,


considerando duas formas de paralelismo

– tratar o programa seqüencial como uma série de tarefas


– cada tarefa = uma instrução ou blocos de instruções

OU

– especificar um programa paralelo, que resolve o problema através da


especificação de tarefas ou processos concorrentes
Exploração de paralelismo

Particionamento
– identificar em um programa, as tarefas que possam ser executadas em
paralelo (simultaneamente em mais de um processador)

– caso extremo: cada linha do programa correspondendo a uma tarefa

um bom desempenho só é alcançado se um número máximo de comandos são


executados simultaneamente

É preciso considerar dependências de dados

problema: se quase todos os comandos são dependentes


Exemplo: programa seqüencial  paralelismo de instruções
program nothing(){
input (A,B,C);
if A>B then {
C=A-B;
output (C);
} else {
C = B-A;
output (A,B,C)
}
A=0; B=1;
for i=1 to 3 {
input(C);
A=A+C;
B=B*C;
}
output (A,B,C);
}
Exemplo

Tarefa T1 Tarefa T2
input (A,B,C); A = 0;
if A>B then{
C=A-B; Tarefa T3
output (C); B=1;
}else{
C = B-A; Tarefa T4
output (A,B,C) for i=1 to 3 {
} input(C);
A=A+C;
B=B*C;
}
output (A,B,C)
Exemplo

T2 1 T3 1
T1
4

T4
16
Exemplo: Soma n números

Problema: somar n números quaisquer

Programa seqüencial:

read (n, vetor);


soma = 0;
for (i = 0; i < n; i++)
soma = soma + vetor[i];

Como paralelizar o problema?


Modelando soma paralela de n números

+ + + + + + + +

+ + + +

+ +

+
Terminologias
 Um algoritmo é escalável se o nível de paralelismo aumenta no mínimo
linearmente com o tamanho do problema.
 Uma arquitetura é dita escalável se continua a alcançar o mesmo
desempenho por processador, mesmo para problemas maiores, com o
aumento de processadores.

– Se aplicável, o usuário pode resolver problemas maiores no mesmo intervalo de


tempo através da compra de uma máquina paralela com maiores dimensões

Algoritmos paralelos-de-dados são mais escaláveis do que algoritmos com


paralelismo de controle
– o nível de paralelismo de controle é geralmente constante, independente do
tamanho do problema, enquanto o nível do paralelismo de dados é uma função
crescente do tamanho do problema
Convergência entre Computação Paralela & Distribuída

 Existia uma grande dificuldade de manter máquinas paralelas a frente aos


projetos de chip-único
– Computadores paralelos se tornaram mais difíceis de se construir e se usar do
que se esperava.

Motivo desta dificuldade:


software


Paralelizar e gerenciar algoritmos paralelos não é uma tarefa fácil
Programação Paralela

 No início dos anos 90: processamento paralelo foi retomado.


 O problema de programação paralela seria bem mais difícil de atacar do que
se imaginava.
 Pesquisa na área de programação em paralelo tem sido um tópico
importante.

Mas ao mesmo tempo....


Internet

 Enquanto muitos estudavam processamento paralelo associado


processadores ligados internamente em uma máquina, um outro grupo se
concentrava em paralelismo externo através de redes de computadores

 a internet possibilitou a especificação de um tipo de paralelismo através de


uma conexões entre processadores
Sistema Paralelo e Distribuído

processamento distribuído renasceu como uma forma de paralelismo mais


lenta

computação distribuída e paralela são dois extremos num espectro de


computação concorrente

Sistema paralelo e distribuído é uma coleção de componentes de hardware e


software que otimizam o desempenho por problema, vazão de múltiplos
problemas e confiabilidade, ou uma combinação destes
Sistema Paralelo e Distribuído

 Problemas: a aglomeração de muitos processadores através de canais


de comunicação: o desempenho pode cair muito.

 Para alcançar o máximo dos sistemas paralelos e distribuídos: projetistas


e desenvolvedores de software precisam compreender a interação entre
hardware e software
Sistema Paralelo e Distribuído

computação distribuída é mais abrangente e universal do que


computação paralela

Paralelismo - forma restrita de computação distribuída

sistema paralelo : voltado à solução de um problema único no menor


tempo possível (otimização)

Computação distribuída é mais geral e reúne outras formas de


otimização...
Paralelismo é interessante ?
Na natureza, os eventos ocorrem em paralelo

programação seqüencial ordena eventos paralelos


essa ordenação dificulta a trabalho do compilador
mas, maior desempenho com o uso de paralelismo
– no entanto, não é trivial atingir alto desempenho em
computadores paralelos

aplicações como os Grandes Desafios são limitados


computacionalmente
Investindo em paralelismo

Dificuldades encontradas

pensar em paralelo é difícil

conhecimento em paralelismo é recente

pouco conhecimento sobre representações abstratas de computações


paralelas
Investindo em paralelismo
Em relação a características da máquina

Relação entre a velocidade do processador


– Elementos de processamento heterogêneos
Desempenho da interconexão de comunicação
– Latência de comunicação
– Congestionamento
– Topologia da rede
Hierarquia de memória
Tendência hoje:
– memória compartilhada distribuída
– superprocessadores distribuídos
Portabilidade

transferência de programas seqüenciais entre diferentes máquinas não é tão


custoso

mesmo não pode ser afirmado para sistemas paralelos

pode significar um re-projeto e re-implementação do software

qual é a melhor arquitetura paralela?


Quais características importantes das aplicações ?

Processos/tarefas

existe comunicação entre essas tarefas


– pode ser vantajoso executar várias tarefas em um só processador
– a tarefa perde o processador quando precisa de um dado a ser
comunicado

paralelismo virtual X real


– Por exemplo: existem 100 processadores disponíveis
– cada processador pode estar executando vários processos: virtualmente
existem um total de 300 processos
Quais características importantes das aplicações ?

difícil definir processos/tarefas totalmente independentes


– comunicação entre processos pode gerar um tráfego de mensagens
pesado

comunicação entre processos:


– troca de mensagens: considera a topologia da rede de interconexão
– memória compartilhada: utilização de semáforos para proteção de
regiões críticas
– direct remote-memory access: existência de processadores dedicados à
comunicação
Modelos de Computação Paralela

interface - uma máquina abstrata

a abstração se faz necessária para facilitar a programação sem se


preocupar com detalhes da máquina
– um modelo deve ser estável para ser um padrão

um modelo contém os aspectos importantes tanto para os projetistas


de software quanto para os da máquina

as decisões de implementações são feitas para cada máquina destino,


não havendo necessidade de se refazer programas
Aspectos Explorados pelo Modelo

Independência da arquitetura

Fácil entendimento
Aspectos Explorados pelo Modelo

Facilidade de programação

O programador não deve se preocupar com detalhes da máquina destino


– modelos abstratos: programação mais fácil

O compilador é que deve traduzir para uma estrutura do programa em


execução considerando o sistema computacional destino
– tarefa do compilador: mais árdua

nível de abstração

nível de máquina
Aspectos Explorados pelo Modelo

O modelo deve ser capaz de oferecer facilidades tais que seja fácil:
Decompor o programa em tarefas paralelas
Mapear as tarefas nos processadores físicos
– custo de comunicação
– heterogeneidade dos processadores
Sincronização entre tarefas: é preciso ter conhecimento do estado global da
estrutura de execução do programa (quando é necessário sincronizar?)
Abstraindo para Programar

Maior facilidade de programação: o esforço intelectual é reduzido quando


nos concentrarmos em "uma coisa de cada vez”
duas dimensões:
– dimensão espacial
– dimensão temporal
Dimensão Espacial
A cada momento, conjuntos de tarefas independentes são
implementadas
– cada tarefa ou processador não sabe o que acontecerá "a seguir"
detalhamento de informações globais levam a uma programação difícil

Dimensão Temporal

programas são composições de ações seqüenciais que preenchem o


sistema computacional como um todo:
pode-se definir com maior conhecimento o que vai acontecer a seguir
Níveis de Paralelismo

Dependendo do nível considerado, a exploração do paralelismo é diferente

nível de aplicações ou fases de aplicações


a nível de tarefas
a nível de instruções - a execução da instrução necessita da busca, análise e
execução propriamente dita
dentro dos circuitos aritméticos
Algoritmos
Quando queremos resolver um problema computacionalmente, temos
que analisar a complexidade deste. No domínio seqüencial, se procura
definir um algoritmo que resolva o problema em tempo mínimo.

Mas quando se tratando de algoritmos paralelos, mais um parâmetro


– número de processadores
– operações independentes devem ser executadas em paralelo.

qual o tamanho dos processos? noção de granulosidade (granularity)


– a razão entre o tempo de computação necessário para executar
uma tarefa e a sobrecarga de comunicação durante essa
computação.
Modelos de Computação
Modelo de Computação Seqüencial: von Neumann
plataforma base para que usuários e projetistas
– complexidade de tempo do pior caso: tempo máximo que o
algoritmo pode levar para executar qualquer entrada com n
elementos
– complexidade de tempo esperado: complexidade média
– critério de custo uniforme: qualquer instrução RAM leva uma
unidade de tempo para ser executada e também o acesso a
registradores
Modelo de Computação Paralela
O desempenho do programa paralelo depende de certos fatores
dependentes da máquina:
– grau de concorrência;
– escalonamento e alocação de processadores;
– comunicação e sincronização.
Modelo PRAM – modelo ideal

conjunto de p processadores operando sincronamente sob o controle


de um único relógio, compartilhando um espaço global de memória

algoritmos desenvolvidos para este modelo geralmente são do tipo


SIMD
– todos os processadores executam o mesmo conjunto de instruções,
e ainda a cada unidade de tempo, todos os processadores estão
executando a mesma instrução mas usando dados diferentes.
Modelo PRAM – modelo ideal

propriedades chaves:
– execução síncrona sem nenhum custo adicional para a
sincronização
– comunicação realizada em uma unidade de tempo, qualquer que
seja a célula de memória acessada
– comunicação é feita usando a memória global
Passo do algoritmo PRAM

fase de leitura: os processadores acessam simultaneamente locais de


memória para leitura. Cada processador acessa no máximo uma
posição de memória e armazena o dado lido em sua memória local

fase de computação: os processadores executam operações aritméticas


básicas com seus dados locais

fase de gravação: os processadores acessam simultaneamente locais


de memória global para escrita. Cada processador acessa no máximo
uma posição de memória e grava um certo dado que está armazenado
localmente
Modelo PRAM

análise e estudo de algoritmos paralelos


definição de paradigma de programação paralela
avaliação do desempenho desses algoritmos independentemente das
máquinas paralelas
se o desempenho de um algoritmo paralelo para o modelo PRAM não é
satisfatório, então não tem sentido implementá-lo em qualquer que seja a
máquina paralela
se eficiente, no entanto, podemos simulá-lo em uma máquina real :
simulação deve ser eficiente
Padrões de Acesso no Modelo PRAM
Exclusive Read (ER): vários processadores não podem ler ao mesmo
tempo no mesmo local
Exclusive Write (EW): vários processadores não pode escrever no
mesmo local de memória
Concurrent Read (CR): vários processadores podem ler ao mesmo
tempo o mesmo local de memória
Concurrent Write (CW): vários processadores podem escrever no
mesmo local de memória ao mesmo tempo

Combinações são usadas para formar as variantes do PRAM:


EREW, CREW, ERCW e CRCW
Prioridades do CRCW
Para resolver conflitos no caso de vários processadores tentarem escrever
ao mesmo tempo no mesmo local de memória global:

Comum - vários processadores concorrem a escrita no mesmo local de


memória global durante o mesmo instante de relógio - todos devem
escrever o mesmo valor;

Arbitrário - dentre os vários processadores, um é selecionado


arbitrariamente e seu valor armazenado no local de memória
disputado;

Prioridade - dentre os vários processadores, aquele com o menor índice é


escolhido para escrever o seu valor no local concorrido.
Memória Global

P1 P2 P3 P4 Pn
Comunicação em uma máquina PRAM

Comunicação através da memória global: Pi quer passar x para Pj

– Pi escreve x em um local de memória global em um determinado passo

– Pj pode acessar o dado naquele local no próximo passo


Memória compartilhada

d1

P1 P2 P3 Pn
d1 d2 d3 dn

PASSO 12
Observações

os processadores operam sincronamente: a cada passo, todas os


processadores executam a mesma instrução sobre dados distintos

uma instrução pode ser simplesmente uma operação aritmética ou uma


comparação de dois números

processadores ativos: somente um subconjunto de processadores


executem uma instrução e processadores restantes ficam ociosos/inativos
Exemplo
V  vetor com n elementos.
x  um dado valor

Problema: xV?
Ambiente: P processadores tipo EREW PRAM

Analisando o problema:

todos os processadores tem que saber o valor de x


não podem acessar a célula de x simultaneamente
depois, cada processador tem que olhar os elementos de V
sinalização da localização do valor x no vetor V
Solução
todos os processadores devem saber sobre x: broadcasting ou difusão

Pior caso deste procedimento log2 P passos


– P1 acessa a memória global:
– P2 comunica com P1 ou seja, de alguma forma, P1 informa x para P2
– P1 e P2 informam x para P3 e P4
– assim por diante

processadores não têm permissão de acesso simultâneo  gravam x em


lugares distintos: Mi é um dos P locais de memória global
Um vetor M auxiliar é utilizado
Solução do broadcasting (leitura)

P1 lê x
P1 escreve x em M1
P2 lê M1
P2 escreve em M2
P3 e P4 lêem M1 e M2
P3 e P4 escrevem em M3 e M4
P5, P6, P7 e P8 lêem M1, M2, M3 e M4
P5, P6, P7 e P8 escrevem M5, M6, M7 e M8
e assim por diante

a cada passo: duas vezes o número de processadores ativos do passo


anterior podem ler e escrever  log P passos
Memória compartilhada

x x x x x

M1 M2 M3 M4 M5 M6 M7 M8

P1 P2 P3 P4 P5 P6 P7 P8
x x x x x x

PASSO 1 PASSO 2 PASSO 3 PASSO 4


A Procura
o vetor V é divido em P pedaços: S1, S2, …, SP
– Pi procura por x em Si
– pior caso: n/P passos

Total: log P + n/P passos, no pior caso

Como o algoritmo poderia ser melhorado??


– Definição de uma variável Achou

Com computador mais poderoso  algoritmo mais rápido.


PRAM mais poderoso: CREW PRAM
para achar x, o algoritmo executa n/P passos
leituras concorrentes são permitidas
– todos os processadores podem acessar x em um passo
– todos os processadores podem consultar Achou em um passo
– mas ao encontrar, o processador tem que atualizar Achou

Quantos passos nas seguintes situações?


– somente um dos elementos tem valor x
– x pode ser um valor repetido em V
• mais de um processador pode atualizar Achou
simultaneamente.
Relações entre Modelos

EREW PRAM  mais fraco

CREW PRAM  pode executar EREW na mesma quantidade de tempo


– simplesmente leituras concorrentes não são feitas

CRCW PRAM  pode executar EREW na mesma quantidade de tempo


– simplesmente leituras concorrentes não são feitas
Simulando Múltiplos Acessos em EREW

um só processador pode acessar a um local de memória a em um


determinado instante

o modelo é bastante flexível


– pode ser executado em qualquer outra PRAM
– permite a simulação de múltiplos acessos mesmo que o espaço de
armazenamento aumente ou o tempo de execução aumente
Simulando Múltiplos Acessos em EREW

Por que a simulação? O simulação pode ser necessária caso uma das
razões aconteça:
– se os computadores paralelos disponíveis são do tipo EREW -
então executar algoritmos tipo: CREW e CRCW através de
simulação

– para computadores paralelos com um grande número de


processadores:
• o número de processadores que podem acessar a um mesmo
local de memória simultaneamente é limitado
Simulando CW comum em um EREW
N acessos simultâneos por um EREW PRAM por N processos no mesmo
local
– leituras simultâneas: valor difundido, conforme já descrito: log N
passos
– escritas simultâneas: procedimento simétrico à difusão

CW comum:
todos processadores podem escrever no mesmo local de memória global
se o valor for o mesmo.
Suponha que Pi queira escrever o valor ai (1 i  N)
variável auxiliar para cada processador Pi : bi
Simulando CW comum em um EREW
Dividindo a série ai em dois grupos
compare ai com ai+(N/2)
se forem iguais, Pi seta bi para verdadeiro (1)

Dividindo a série ai em quatro grupos


compare ai com ai+(N/4) e bi com bi i+(N/4)

se forem iguais, Pi seta bi para verdadeiro (1)


Memória compartilhada
a1 a2 a3 a4 a5 a6 a7 a8 .......... b1 b 2 b 3 b 4
5 5 5 5 5 5 5 5 1 1 1 1

P1 P2 P3 P4
=1 ? =1 ? 1= ? 1= ?

= =
&
1 1
?
&
?
= == 1 ? = == 1 ?

=
&1
?
= == 1 ?
Modelos Fortes e Fracos
O que quer dizer mais forte? Se um algoritmo é simulado em um modelo
mais fraco, o número de passos pode aumentar

CR  N leituras podem ser feitas concorrentemente


ER  uma leitura é feita por mais de uma passo

[EcKstein,1979][Vishkin,1983] p processadores CRCW com prioridade, é


simulado por um EREW PRAM com complexidade de tempo aumentado
por um fator  (log p).

em um CRCW com prioridade, os acessos simultâneos seria imediatos,


mas não no EREW

Vous aimerez peut-être aussi