A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 José Nelson Amaral Compiler Design and Optimization Laboratory Department of Computing.

Apresentações semelhantes


Apresentação em tema: "Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 José Nelson Amaral Compiler Design and Optimization Laboratory Department of Computing."— Transcrição da apresentação:

1 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 José Nelson Amaral Compiler Design and Optimization Laboratory Department of Computing Science University of Alberta Edmonton, AB, Canada http://www.cs.ualberta.ca/~amaral Software Livre Pro64: Uma Infra-estrutura para Compiladores Mini-Curso

2 1980 1988 1990 1994 1998 2000

3 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20013 Colaboradores O Grupo de Desenvolvimento dos Compiladores MIPSpro/Pro64 da SGI Universidade de Delaware yTime de Compiladores do CAPSL

4 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20014 Colaboradores (cont.) Estes indivíduos contribuíram diretamente para este mini-curso: A. Douillet (Udel) F. Chow (Equator) S. Chan (Intel) J. Dehnert (Trasmeta) G. R. Gao (U. Delaware) W. Ho (Routefree) Z. Hu (Udel) K. Lesniak (SGI) S. Liu (HP) R. Lo (Routefree) S. Mantripragada (SGI) C. Murthy (SGI) M. Murphy (SGI) G. Pirocanac (SGI) D. Stephenson (SGI) R. Towle (SGI) D. Whitney (SGI) H. Yang (Udel)

5 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20015 Organização do Mini-Curso zMotivação e Origens do Pro64 zParte I: Discussão da infra-estrutura do compilador SGI Pro64 zParte II: Gerador de código do Pro64 zParte III: Usando o Pro64 para pesquisa e desenvolvimento de compiladores zSuporte para o SGI Pro64 zSumário

6 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20016 Motivação e Origens zO que é o SGI Pro64? zQuem poderá se beneficiar do uso do Pro64? zOnde posso obter o Pro64? zDesenvolvimento futuro para o Pro64

7 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20017 O que é o Pro64? zUm conjunto de compiladores otimizadores para sistems Linux/ Intel IA64 zCompiladores para C, C++ e Fortran90/95 zProduzido em conformidade com os padrões ABI e API do IA-64 Linux zAberto para todos os pesquisadores e projetistas da comunidade zCompatível com o ambiente NUE (Native User Environment) da HP

8 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20018 Quem Poderá se Beneficiar do Uso do Pro64? zPesquisadores : Teste de novas análises para compiladores e novos algorítimos de otimização. zProjetistas: Geração de código para outras arquiteturas ou outros sistemas. zEducadores/Estudantes : Uma plataforma para ensinar compiladores.

9 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20019 Onde Posso Obter os Compiladores Pro64 zCódigo Fonte e Documentação http://oss.sgi.com/projects/Pro64/ zGrupo de Suporte do Pro64 na Universidade de Delaware http://www.capsl.udel.edu/~pro64 pro64@capsl.udel.edu

10 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200110 Tópicos para Pesquisa Futura no Pro64 zFormação de Hyperblock zSistema de Pesquisa de Predicados zMelhoria do Suporte para Especulação

11 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200111 PARTE I: Infra-estrutura do Compilador Pro64

12 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200112 Organização zModelo Lógico de Compilação e Diagrama de Fluxo zRepresentações Intermediárias WHIRL/CGIR zAnálise Inter-Procedural (IPA) zOtimizador de Loops Aninhados (LNO) e Paralelização zOtimizador Global (WOPT) zRealimentação zProjeto para debugabilidade e testabilidade

13 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200113 Modelo Lógico de Compilação back end (be) linker (ld) WHIRL (.B/.I) obj (.o) a.out/.so Data Path Fork and Exec driver (sgicc/sgif90/sgiCC) front end + IPA (gfec/gfecc/mfef90) Src (.c/.C/.f)

14 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200114 Componentes do Pro64 Parte Frontal Análise Interprocedural e Otimização Otimização de Loops Aninhados e Paralelização Otimização Global Geração de Código

15 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200115 Fluxo de Dados e Relação Entre Módulos Lower to High W. gfec gfecc f90 Local IPA Main IPA LNO Inliner WHIRL C WHIRL fortran Main opt Lower all lower I/O Lower Mid W CG.B.I -O 3.w2c.c -IPA.w2c.h.w2f.f -O 0 -O 2 /O 3 -phase: w=off Very high WHIRL High WHIRL Mid WHIRL Low WHIRL Siga Qualquer Direção (only for f90)

16 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200116 Parte Frontal zParte frontal para C é baseada em gcc zParte frontal para C++ é baseada em g++ zParte frontal para Fortran90/95 do MIPSpro

17 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200117 Representação Intermediária (IR) IR é chamada WHIRL zInterface comum entre componentes zMúltiplas linguages e múltiplos processadores zMesma IR, 5 níveis de representação zContinuamente reduz o nível a medida que a compilação progride zEstratégia de otimização de acordo com o nível de representação

18 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200118 Fase Principal da Análise Inter-Procedural (IPA) Análise yanálise de alias yanálise vetorial ylayout de código Otimização (completamente integrada) yinlining yclonagem yeliminação de código morto e eliminação de variáveis ypropagação de constantes

19 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200119 Propriedades do Projeto da Análise Inter-Procedural zTransparente ao Usuário zFornece info (p.e. análise de alias, propriedades de procedures) para: yotimizador de ninhos de loops yotimizador principal ygerador de código

20 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200120 Otimizador de Loops Aninhados/ Paralelizador zTodas as linguagens (incluindo OpenMP) zAnálise do nível de dependência de Loops zTransformações do nível de loop em Uniprocessadores zParalelização Automática

21 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200121 Transformações ao Nível de Loop zBaseado num modelo unificado de custo zHeurísticas integradas com software pipelining yFissão de Loops (Loop Fission) yFusão de Loops (Loop Fusion) yExpansão e Recombinação de Loops (Loop Unroll and jam) yReversão de ordem de loops (Loop interchange) yRemoção de Iterações (Loop Peeling) yRe-organização de Loops (Loop Tiling) yPré-Busca de Vetores (Vector data prefetching)

22 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200122 Paralelização zAutomática Privatização de Vetores Paralelização Doacross Análise de seções de vetores zBaseada em Diretivas OpenMP Integrada com métodos automáticos

23 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200123 Fase de Otimização Global zA única representação utilizada é Static Single Assignment (SSA) zSSA é a tecnologia unificadora zImplementa todas as optimizações globais tradicionais zTodas as otimizações preservam o formato SSA zPode re-aplicar cada otimização sempre que for necessário

24 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200124 Extensões do Pro64 para SSA zRepresentação de aliases e operações indiretas à memória zIntegração de eliminação parcial de redundância (SSA PRE) zSuporte a movimento especulativo de código zPromoção de registradores através da inserção de loads e stores

25 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200125 Realimentação Usada em todo o compilador zInstrumentação pode ser inserida em cada estágio zDados explícitos para instrumentação são incorporados onde inseridos zDados de instrumentação são mantidos e a sua consistência é verificada em todas as transformações realizadas no programa.

26 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200126 Projeto para Depuração (DFD) e and Testabilidade (DFT) zDFD e DFT integrados desde o início zÉ possível incluir verificações adicionais de validade. zSeleção de Opções simplificada permite: yInserir components que são reconhecidamente bons yHabilitar/desabilitar componentes inteiros ou otimizações específicas yInvocar heurísticas alternativas yAtivar traces the uma única fase


Carregar ppt "Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 José Nelson Amaral Compiler Design and Optimization Laboratory Department of Computing."

Apresentações semelhantes


Anúncios Google