Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que...
Transcript of Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que...
![Page 1: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/1.jpg)
Estratégias Pipelined
![Page 2: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/2.jpg)
Estratégias pipelined
• O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra
• Cada tarefa é executada por um processo separado ou processador
P0 P1 P2 P3 P4 P5
![Page 3: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/3.jpg)
Exemplo
• Somar todos os elementos de um array a em uma soma acumulativa
for (i=0; i < n; i++)
sum = sum + a[i];
• O loop pode ser desdobrado em:sum = sum + a[0];
sum = sum + a[1];
sum = sum + a[2];
sum = sum + a[3];
sum = sum + a[4];
![Page 4: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/4.jpg)
Pipeline para um loop desdobrado
sin sout
a
a[0]
sin sout
a
a[1]
sin sout
a
a[2]
sin sout
a
a[3]
sin sout
a
a[4]
sum
![Page 5: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/5.jpg)
Filtrando um sinal
fin fout
f0
Sinal sem a freqüência
f0
fin fout fin fout fin fout fin foutf(t)f1 f2 f3 f4
Sinal sem a freqüência
f1
Sinal sem a freqüência
f2
Sinal sem a freqüência
f3
Sinal filtrado
![Page 6: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/6.jpg)
Utilização de pipeline
• Dado que um determinado problema pode ser dividido em uma série de tarefas seqüenciais, a estratégia de pipeline pode ser utilizada para aumentar a velocidade de processamento em três casos:1.Se mais de uma instância do problema completo deve ser executada
2.Se uma série de dados deve ser processada e cada um dos dados requer múltiplas operações
3.Se a informação para iniciar a próxima tarefa pode ser passada a frente antes que o processo que a gera tenha completado todas as suas operações internas
![Page 7: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/7.jpg)
Diagrama espaço-tempo para tipo 1
Instância1
Instância2
Instância3
Instância4
Instância5
Instância6
Instância7
Instância1
Instância2
Instância3
Instância4
Instância5
Instância6
Instância7
Instância1
Instância2
Instância3
Instância4
Instância5
Instância6
Instância7
Instância1
Instância2
Instância3
Instância4
Instância5
Instância6
Instância7
Instância1
Instância2
Instância3
Instância4
Instância5
Instância6
Instância1
Instância2
Instância3
Instância4
Instância5
Tempo
P0
P1
P2
P3
P4
P5
p - 1 m
![Page 8: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/8.jpg)
Diagrama espaço-tempo alternativo
Tempo
P0 P1 P2 P3 P4
P0 P1 P2 P3 P4
P5
P5
P0 P1 P2 P3 P4 P5
P0 P1 P2 P3 P4 P5
P0 P1 P2 P3 P4 P5
Instância 0
Instância 1
Instância 2
Instância 3
Instância 4
![Page 9: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/9.jpg)
Diagrama espaço-tempo para tipo 2
Seqüência de dados: d9d8d7d6d5d4d3d2d1d0
d0 d1 d2 d3 d4 d5 d6 d7 d8 d9
d0 d1 d2d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
d0 d1d2 d3 d4 d5 d6 d7 d8
d9
Tempo
P0
P1
P2
P3
P4
P5
P6
P7
P8
P9
p-1 n
![Page 10: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/10.jpg)
Diagrama espaço-tempo para tipo 3
P0
P1
P2
P3
P4
P5
Tempo
Transferênciade informaçãosuficiente para
iniciar novatarefa
P0
P1
P2
P3
P4
P5
Tempo
![Page 11: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/11.jpg)
Particionando processos entre processadores
• Se o número de estágios é maio que o número de processadores, um grupo de estágios pode ser designado para cada um dos processadores
P0 P1 P2 P3 P4 P5 P6 P7 P8
Processador 1 Processador 2 Processador 3
![Page 12: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/12.jpg)
Plataforma computacional para aplicações pipelined
Computadorhost
Multiprocessador
![Page 13: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/13.jpg)
Soma com pipeline
P0 P2 P3 P4P1
1
i 2
1
i 3
1
i 4
1
i 5
1
i
![Page 14: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/14.jpg)
Pseudo-código
• O código básico para o processador Pi:recv(&accumulation, Pi-1);
accumulation = accumulation + number;
send(&accumulation, Pi+1);
• Para o processador P0:send(&number, P1);
• Para o processador Pn-1:recv(&number, Pn-2);
accumulation = accumulation + number;
![Page 15: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/15.jpg)
Programa SPMD
• Pseudo-códigoIf (proces > 0) {
recv(&accumulation, Pi-1);
accumulation = accumulation + number;
}
if (process < n-1) send(&accumulation, Pi+1);
• O resultado final está no último processo
• Outras operações aritméticas podem ser executadas
![Page 16: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/16.jpg)
Adição de números com processo mestre e configuração em anel
dn-1...d2d1d0 P0 P1 Pn-1
Escravos
sum
Processo mestre
![Page 17: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/17.jpg)
Adição de números com acesso direto aos processos escravos
P0 P1 Pn-1
Escravos
sum
Processo mestre
Númerosdn-1d1d0
![Page 18: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/18.jpg)
Análise de complexidade
• O primeiro exemplo é do tipo 1 e cada processo executa ações similares em cada ciclo de pipeline
• Tempo total de execução:
m
tt
pm
pmttt
t
totala
commcomptotal
total
:por dado é computação de médio tempoO
pipeline de estágios e problema do instâncias existem onde
)1)((
ciclos) de númeropipeline)( de ciclo um para (tempo
![Page 19: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/19.jpg)
Análise de complexidade
• Para uma instância
• Para múltiplas instâncias: um ciclo de pipeline
)(deComplexida
)1)(2(
)(2
1
nO
nttt
ttt
t
datastartuptotal
datastartupcomm
comp
1)(2
)1)(1)(2(
datastartuptotal
a
datastartuptotal
ttm
tt
nmttt
![Page 20: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/20.jpg)
Particionamento de dados com múltiplas instâncias do problema
• Aumentando a partição de dados d, o impacto na comunicação diminui, mas diminui o paralelismo e aumenta o tempo de execução
)1)()(2(
)(2
dnmdttt
ttt
dt
datastartuptotal
datastartupcomm
comp
![Page 21: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/21.jpg)
Ordenação por inserção
5 4 3 2 15 4 3 2
5 4 3 1
5 4 2
5 3 1
5 2
5 2
5
5
1
2
13
24
3
10
1
2
12
4
3
7
6
5 1
98
44,3
4,3,1
4,3,1,2
4,3,1,2,5
P0P1 P2 P3 P4
![Page 22: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/22.jpg)
Pseudo-código
• O algoritmo básico para o processo Pi é:recv(&number, Pi-1);
if (number > x) {
send (&x, Pi+1);
x = number;
}
else send (&number, Pi+1);
• Com n números, o processo i aceita n-1 números e passa a frente n-i-1 números.
![Page 23: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/23.jpg)
Pipeline para inserção
xmax
compara
P0 P1 P2
Maior número Próximo maior número
Menores números
Série de númerosxn-1...x1x0
![Page 24: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/24.jpg)
Ordenação utilizando configuração bidirecional
dn-1...d2d1d0 P0 P1 Pn-1
Escravos
sum
Processo mestre
![Page 25: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/25.jpg)
Pseudo-código
right_procno=n-i-1;
recv(&x, Pi-1);
for (j = 0; j < right_procno; j++) {
recv(&number, Pi-1);
if (number > x) {
send (&x, Pi+1);
x = number;
}
else send (&number, Pi+1);
send (&x, Pi-1);
for (j = 0; j < right_procno; j++) {
recv(&number, Pi+1);
send (&number, Pi-1);
}
![Page 26: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/26.jpg)
Análise de complexidade
)12))((21()12)((
)(2
1
Paralelo2
)1(12...)2()1(
Seqüencial
nttnttt
ttt
t
nnnnt
datastartupcommcomptotal
datastartupcomm
comp
s
![Page 27: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/27.jpg)
Geração de números primos - Método de Eratóstenes
• Para encontrar os números primos entre 2 e n, gera-se a série de todos os números até n
• O número 2 é o primeiro número primo e todos os múltiplos de 2 são removidos da lista, pois não podem ser primos
• Considera-se o próximo número da lista e removem-se seus múltiplos até chegar a n
• Somente se analisam os números até , porque os números maiores que já foram examinados
n
n
![Page 28: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/28.jpg)
Código seqüencial
for (i =2; i < n; i++)
prime[i] = 1;
for (i =2; i < =sqrt_n; i++)
if (prime[i] == 1)
for (j = i + 1; j < n; j = j + i)
prime[j] = 0;
• Análise de complexidade– Existem múltiplos de 2, múltiplos de 3 12 n 13 n
)(:seqüencial deComplexida
1...15
13
12
2nO
n
nnnnts
![Page 29: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/29.jpg)
Análise de complexidade
• Existem múltiplos de 2, múltiplos de 3 12 n 13 n
)(:seqüencial deComplexida
1...15
13
12
2nO
n
nnnnts
![Page 30: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/30.jpg)
Pipeline para geração de números primos
Comparamúltiplos
P0 P1 P2
Primeironúmeroprimo
Segundonúmeroprimo
Números não múltiplosdo primeiro número primo
Série de númerosxn-1...x1x0
Terceironúmeroprimo
![Page 31: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/31.jpg)
Pseudo-código
• Para cada processador Pi:recv(&x, Pi-1);
recv(&number, Pi-1);
if ((number %x) != 0 ) send (&number, Pi+1);
• Como a quantidade de números não é a mesma e é desconhecida para cada processador, utiliza-se uma mensagem de finalizaçãorecv(&x, Pi-1);
for (i = 0; i < n; i++) {
recv(&number, Pi-1);
if (number == terminator) break;
if (number % x ) != 0) send (&number, Pi+1);
}
![Page 32: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/32.jpg)
Resolvendo um sistema de equações lineares
• Exemplo do tipo 3, os processos podem continuar depois de passar informação
• Exemplo: – resolver sistema de equações lineares da forma triangular superior:
000
111,100,1
222,211,200,2
111,122,111,100,1
.
.
...
bxa
bxaxa
bxaxaxa
bxaxaxaxa nnnnnnn
![Page 33: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/33.jpg)
Resolução por substituição
• Encontra-se primeiro x0 da última equação:
• Esse valor é substituído na próxima equação para encontrar x1
• E assim por diante:
0,0
00 a
bx
1,1
00,111 a
xabx
2,2
11,200,222 a
xaxabx
![Page 34: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/34.jpg)
Solução utilizando pipeline
Calcula x0 Calcula x1 Calcula x2 Calcula x3
x0x0
x0x0
x1x1x2
x1x2x3
P0 P1 P2 P3
![Page 35: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/35.jpg)
Solução utilizando pipeline
• O processo i recebe os valores x0,x1,x2,...,xi-1 e calcula xi
através da equação:
ii
i
jjjii
i a
xab
x,
1
0,
![Page 36: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/36.jpg)
Código seqüencial
x[0] = b[0]/a[0][0];
for (i = 1; i < n; i++) {
sum = 0;
for (j = 0; j < i; j++)
sum = sum + a[i][j]*x[j];
x[i] = (b[i] - sum)/a[i][i];
}
![Page 37: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/37.jpg)
Código paralelo
for (j = 0; i< j; j++) {
recv(&x[j], Pi-1);
send (&x[j], Pi+1);
}
sum = 0;
for (j = 0; j < i; j++)
sum = sum + a[i][j]*x[j];
x[i] = (b[i] - sum)/a[i][i];
send (&x[i], Pi+1);
}
![Page 38: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/38.jpg)
Diagrama espaço-tempo para processo pipeline para resolução de sistemas lineares
P0
P1
P2
P3
P4
P5
Tempo
Passou primeirovalor adiante
Valor finalcalculado
![Page 39: Estratégias Pipelined. Estratégias pipelined O problema é dividido em uma série de tarefas que devem ser completadas uma após a outra Cada tarefa é executada.](https://reader035.fdocumentos.tips/reader035/viewer/2022062623/552fc0f9497959413d8b6996/html5/thumbnails/39.jpg)
Análise de complexidade
• Não pode assumir que o esforço computacional será o mesmo em todos os estágios do pipeline
• O primeiro processo executa uma divisão e um envio de mensagem
• O processo i executa i envios e i recebimentos de mensagens, i multiplicações/adições, uma divisão/subtração e um envio final, em um total de 2i+1 tempos de comunicação e 2i+2 passos de computação
• O último processo executa n-1 recebimentos, n-1 multiplicações/somas e uma divisão/subtração, totalizando n-1 tempos de comunicação e 2n-1 passos de computação