Reestruturação de Programas em Sistemas Vetoriais
description
Transcript of Reestruturação de Programas em Sistemas Vetoriais
![Page 1: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/1.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (1)
Reestruturação de ProgramasReestruturação de Programas em Sistemas Vetoriais em Sistemas Vetoriais
Tópicos:
• Técnicas de Otimização• Notação para Dependência• Vetorização de Loops• Paralelização de Loops
Referência: Padua,D.A. & Wolfe,M.J. “Advanced Compiler Optimizations for Supercomputers”, Communications of the ACM, 29(12), Dec. 1986, pp.1184-1200.
![Page 2: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/2.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (2)
Técnicas de OtimizaçãoTécnicas de Otimização
• Sistemas com um único processador:– Vetorização
• Sistemas com mais de um processador:– Vetorização e / ou Paralelização
Dependências de dados:• Afetam tanto paralelização como vetorização,
porém...• Cada tipo de dependência tem efeitos distintos!
(Ex: Anti-dependências impedem paralelização, mas não impedem necessariamente vetorização)
![Page 3: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/3.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (3)
Notação para DependênciaNotação para Dependência
Dependência: Relação no conjunto de comandos Exemplo: S1: A = B + C S2: D = A + 2 S3: A = E + F• Dependência de fluxo: S1 S2
• Antidependência: S2 a S3
• Dependência de saída: S1 o S3
Grafo de Dependências:
S1 S2 S3
a
o
![Page 4: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/4.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (4)
Notação para Dependência Notação para Dependência (Casos com Loops)(Casos com Loops)
Exemplo-1: S1 S2 S1 = S2 do i=2,NS1: A(i) = B(i) + C(i)S2: D(i) = A(i) enddo
Exemplo-2: S1i S2
i+1 S1 < S2 do i=2,NS1: A(i) = B(i) + C(i)S2: D(i) = A(i-1) enddo
Exemplo-3: S2i a S1
i+1 S2 a< S1
do i=2,NS1: A(i) = B(i) + C(i)S2: D(i) = A(i+1) enddo
![Page 5: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/5.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (5)
Vetorização de LoopsVetorização de Loops
Regra: Se não há ciclos no Grafo de Dependências, o loop pode ser vetorizado
Exemplo: do i=1,N Grafo de Dependências: S1: A(i) = B(i) S2: C(i) = A(i) + B(i) S1 S2 S3
S3: E(i) = C(i+1) enddo Novo código após Vetorização:S1: A(1:N) = B(1:N) S3: E(1:N) = C(2:N+1)S2: C(1:N) = A(1:N) + B(1:N)
![Page 6: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/6.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (6)
Vetorização de Loops (cont.)Vetorização de Loops (cont.)
Outro Exemplo: do i=2,N Grafo de Dependências: S1: A(i) = B(i) S2: C(i) = A(i) + B(i-1)S3: E(i) = C(i+1) S1 S2 S3 S4
S4: B(i) = C(i) + 2.0 enddo Novo código após Vetorização:S1: A(2:N) = B(2:N) S3: E(2:N) = C(3:N+1) DO i=2,NS2: C(i) = A(i) + B(i-1)S4: B(i) = C(i) + 2.0 ENDDO
![Page 7: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/7.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (7)
Vetorização de Loops (cont.)Vetorização de Loops (cont.)
Operações de Redução: do i=1,N S1: A(i) = B(i) + C(i) S2: ASUM = ASUM + A(i) enddo
Estas operações são reconhecidas por alguns compiladores! Novo código após Vetorização:S1: A(1:N) = B(1:N) + C(1:N)S3: ASUM = ASUM + SUM(A(1:N)) SUM(): Função implantada em bibliotecas do sistema
![Page 8: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/8.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (8)
Paralelização de LoopsParalelização de Loops
• Esquema básico de paralelização: Dividir as iterações do loop pelos vários processadores
• Estratégia: Dividir igualmente o trabalho pelos processadores, minimizando o tempo de sincronização necessária
• Caso Ideal: Iterações independentes (não há dependências, ou todas elas são do tipo =)
• Outros Casos: Iterações dependentes deve haver comunicação/sincronização entre os processadores
![Page 9: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/9.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (9)
Paralelização de Loops (cont.)Paralelização de Loops (cont.)
Exemplo: DO i=1,N DO j=2,NS1: A(i,j) = B(i,j) + C(i,j)S2: C(i,j) = D(i,j) / 2S3: E(i,j) = A(i,j-1)**2 + E(i,j-1) ENDDO ENDDODependências: S1 a=,= S2 (devido a C) S1 =,< S3 (devido a A) S3 =,< S3 (devido a E)
Obs: Todas as dependências são = na direção i Loop i pode ser paralelizado!
![Page 10: Reestruturação de Programas em Sistemas Vetoriais](https://reader036.fdocumentos.com/reader036/viewer/2022082713/56814fcc550346895dbd8dea/html5/thumbnails/10.jpg)
28-06-1999 INPE / CAP-315Airam J. Preto , Celso L. Mendes
Aula 6 (10)
Paralelização de Loops (cont.)Paralelização de Loops (cont.)
Outro Exemplo: DO i=2,NS1: A(i) = B(i) + C(i)S2: C(i) = D(i) * 2S3: E(i) = C(i) + A(i-1) ENDDODependências:S1 a= S2(devido a C), S2 = S3(devido a C), S1 < S3(devido a A)
Obs: Por causa da dependência < as iterações são dependentes! Possível Corpo do loop para execução paralela: S1: A(i) = B(i) + C(i) signal(i) S2: C(i) = D(i) * 2 if (i>2) wait(i-1) S3: E(i) = C(i) + A(i-1)