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

Slides:



Advertisements
Apresentações semelhantes
™.
Advertisements

Arquitetura Funcional de SADs
Curso de aprofundamento na linguagem C
Trabalho de APSI II Diagrama de Instalação Victor Campolino Moussallem
OpenMP.
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
Ana Azevedo MGI Informação empresarial z Informação usada por uma organização com fins lucrativos no curso das suas actividades. z De natureza sociológica,
Inteligência Artificial
Rational Unified Process(RUP)
Fernando Moraes e Ney Laert Vilar Calazans
Ney Laert Vilar Calazans
ARQUITETURAS RISC E CISC
OCL Object Constraint Language
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
OpenMP MO801/MC972. Visão geral Biblioteca de mais alto nível para programação paralela Prevê memória compartilhada Requer suporte do compilador Exige.
Vetorização MO801/MC972.
CISC e RISC.
Seminário do grupo de pesquisa em IHC do DIMAp-UFRN
Altera NIOS II: uma breve introdução
Lógica de Programação Módulo II
Eduardo Silva, Frederico Fernandes, Juliano Rabelo e Flávia Barros
Linguagens de programação
Co-simulação Régio Michelin.
Ferramentas Programação
Processo Desenvolvimento de Software Tradicional
Engenharia Reversa É o processo de derivar as especificações lógicas dos componentes do sistema a partir de sua descrição física com auxílio de ferramentas.
RUP: Fluxo de Análise e Projeto
Construção de Compiladores para MSIL usando Microsoft Phoenix
Engenharia de Software para Computação Embarcada
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 8 (1) Exploração de Paralelismo em Sistemas Vetoriais Tópicos: Vetorização Paralelização.
O Fluxo de Implementação
Integrantes Gisely C. Oliveira Marcelo C. Ribeiro Maria Ap. Ferreira Rafael Vaz Walisson Junior Wesley C. Gomes.
Arquitetura de computadores
Fabíola Guerra Nakamura Vitor Alcântara Batista
COMITÊ BRASILEIRO DE CERTIFICAÇÃO EM ENGENHARIA CLÍNICA
MO801 - Tópicos em Arquitetura e Hardware Michele Tamberlini 05/2006
Projeto de Banco de Dados
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
O Futuro da Engenharia de Software
Java Bytecode Software Básico Mitsuo Takaki.
Software engineering, the software process and their support M.M. Lehman Apresentadora: Tarciana Dias da Silva.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Gerador de Código do Pro64 José Nelson Amaral University of Alberta Edmonton, AB,
Abr-17 Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto Fluxo de análise e projeto.
Análise e Projeto Orientados a Objetos
CRSC Segurança em Redes Política de Segurança Eng.º Miguel Frade ESTG - Leiria.
Introdução a Banco de Dados Aula 04
Arquiteturas RISC x CISC
Back-End Compilação aula-11-back-end.pdf.
Processos de Software.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José.
Desenvolvimento de Software Dirigido a Modelos
Metaprogramação Estática André Knabben Pricilla Padaratz.
A Linguagem Formal de Especificação VDM-SL
Caso de Sucesso: Lockheed Martin Aeronautics  Usou MDA para desenvolver o software de missão modular do F-16. Objetivo:  Obter compatibilidade cross-platform;
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROJETO FINAL
Engenharia de Sistemas Embarcados Aula 5: Um Conjunto Básico de Ferramentas.
Engenharia de Software
Frameworks e Componentes Daniel Fernando Pavelec.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Profa. Reane Franco Goulart. É uma representação de engenharia de algo que vai ser construído. Para a engenharia de software o projeto foca em quatro.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Análise Semântica e Representação Intermédia
Um Método Colaborativo de Análise e Projeto
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 34 (1) Formas de Programação Paralela Tópicos: Compilação de Linguagens de Alto Nível Padrão.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 4 (1) Introdução à Programação de Processadores Vetoriais Tópicos: Conceitos Básicos Encadeamento.
Aplicação de Métodos Formais no Desenvolvimento de Sistemas Multimídia Distribuídos Cláudia Araújo Ribeiro UFPE Junho/2000.
Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
Transcrição da apresentação:

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro José Nelson Amaral Compiler Design and Optimization Laboratory Department of Computing Science University of Alberta Edmonton, AB, Canada Software Livre Pro64: Uma Infra-estrutura para Compiladores Mini-Curso

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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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)

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Onde Posso Obter os Compiladores Pro64 zCódigo Fonte e Documentação zGrupo de Suporte do Pro64 na Universidade de Delaware

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

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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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)

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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)

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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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)

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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