Académique Documents
Professionnel Documents
Culture Documents
tempo t
7+3 string
10 +==“casa”?
200 32 +
33 * 14
329
Paralelismo de Controle
Exemplo:
E1 E2 E3 E4
tempo
info 1
info 2 info 1
OU
Particionamento
– identificar em um programa, as tarefas que possam ser executadas em
paralelo (simultaneamente em mais de um processador)
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
Programa seqüencial:
+ + + + + + + +
+ + + +
+ +
+
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.
Paralelizar e gerenciar algoritmos paralelos não é uma tarefa fácil
Programação Paralela
Dificuldades encontradas
Processos/tarefas
Independência da arquitetura
Fácil entendimento
Aspectos Explorados pelo Modelo
Facilidade de programação
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
Dimensão Temporal
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
P1 P2 P3 P4 Pn
Comunicação em uma máquina PRAM
d1
P1 P2 P3 Pn
d1 d2 d3 dn
PASSO 12
Observações
Problema: xV?
Ambiente: P processadores tipo EREW PRAM
Analisando o problema:
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
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
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
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)
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