Geração de Código Otimizações independentes de máquina.

Slides:



Advertisements
Apresentações semelhantes
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
Advertisements

Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
PROGRESSÃO ARITMÉTICA P.A.
PGF5001 – Mecânica Quântica 1 Prof. Emerson Passos.
Prof. Celso Gramática Prof. Celso
Prof. Celso Gramática Prof. Celso
Introdução a Resolução Numérica de Equações Diferenciais Ordinárias
FORTRAN 90 Denise Yumi Takamura.
VI: EQUILÍBRIO RADIATIVO
Teste Estrutural de Software
Criptografia de chave única
Criptografia Quântica : Um Estudo
Gustavo Vieira Pereira
Twofish Leonardo H. Furlan.
One-cell Pipeline for Floating-Point Multiplier in FPGAs Alex Panato Sandro Silva
Serpent-1 O Serpent-0 refinado Paulo Estima Mello
ANÁLISE SOBRE O ARTIGO: AUTOTUNING GEMMS FOR FERMI André Moraes Julio Toss.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Unidade VIII – Capítulo 3, livro texto Págs.:
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Pesquisa Operacional Modelos, Conceitos Básicos para PL
Geração de Código Cap. 8. Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para.
Diretoria de Ensino – Região de Mogi Mirim. Questões de múltipla escolha: elaboradas por professores e analisadas por especialistas; pré-testadas; realiza.
Banco de Dados I Profa. Jiani Cardoso 2/2005
BERKELEY E O IMATERIALISMO
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira
CES-11 LAB 03 Bitmap Quadtree
1.3 – Interpretadores – Compiladores versus Interpretadores
Capítulo VI – Variáveis Indexadas
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo XI Encadeamento de Estruturas por Ponteiros.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
Capítulo V Análise Sintática
ESTA TELA, QUANDO ESTA CARREGANDO O ARQUIVO, NÃO GOSTARIA QUE APARECESSE ESSES EFEITOS PARECIDO COM ESTRELINHA...GOSTARIA QUE A TELA FOSSE DA SEGUINTE.
TA 733 A – Operações Unitárias II Transferência de Calor
Curso Técnico em Informática La Salle - Canoas
FERRAMENTAS DE CRIATIVIDADE
FUNDAÇÃO CARLOS CHAGAS
Igor S. França Rocha. A Energia e suas Fontes Fontes de Energia Renováveis Fontes de Energia Não-Renováveis Conclusões.
TELHADOS - atividades Construir vistas e planificação de dois telhados
Aritmética de ponto flutuante Erros
Representações na base decimal e binária
8.EQUAÇÕES DIFERENCIAIS ORDINÁRIAS Parte 5
Sistemas Lineares Parte 2
Resolução de Sistemas Lineares- Parte 1
Organização de Sistemas de Computadores
Arquitetura de ComputadoresProf a Luiza Mourelle Apesar da evolução tecnológica, as CPUs continuam mais rápidas que a memória. O problema não é tecnológico,
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Pipeline É possível obter maior desempenho computacional com:
7. INTEGRAÇÃO NUMÉRICA Parte 1
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
PROJETO DE P & D ANEEL /2005 CELESC/UNISUL USO DA TURFA PARA TRATAMENTO DE ÓLEO DE TRANSFORMADORES.
Função Exponencial.
Entendendo as definições de classe
Principais Modelos Discretos Josemar Rodrigues AULA:
Curso de Programação em C++
LINGUAGENS DE PROGRAMAÇÃO
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Robótica: Sistemas Sensorial e Motor
Computação Gráfica Geometria de Transformações
Prof. André Laurindo Maitelli DCA-UFRN
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
1 Seja o resultado de um experimento aleatório. Suponha que uma forma de onda é associada a cada resultado.A coleção de tais formas de ondas formam um.
8. Uma Função de duas Variáveis Aleatórias
Curso para Agentes de Desenvolvimento Etapa I Básica Básica.
Curso para Agentes de Desenvolvimento Etapa I Básica.
Transcrição da apresentação:

Geração de Código Otimizações independentes de máquina

São otimizações que visam transformar o código, deixando-o mais coeso e com melhor desempenho mas, além de tudo, preservando a semântica Eliminação de subexpressões comuns (CSE), propagação de cópias, eliminação de código mortono (DCE) são exemplos de tais otimizações

Otimizações independentes de máquina i=m-1 j=n t1=4*n v=a[t1] i=i+1 t2=4*i t3=a[t2] if t3<v goto B2 j=j-1 t4=4*j t5=a[t4] if t5>v goto B3 If i>=j goto B6 t6=4*i x=a[t6] t7=4*i t8=4*j t9=a[t8] a[t7]=t9 t10=4*j a[t10]=x goto B2 t11=4*i x=a[t11] t12=4*i t13=4*n t14=a[t13] a[t12]=t14 t15=4*n a[t15]=x B1 B2 B3 B4 B5B6

Eliminação de subexpressões comuns Um ocorrência de uma expressão E é chamada uma subexpressão comum se E foi computada previamente e os valores das variáveis em E não foram modificadas desde a última atribuição de E Evita-se recomputar E se é possível utilizar seu valor previamente computado Exemplo: as atribuições para t7 e t10 em B5 computam as expressões 4*i e 4*j, respectivamente –Desde que essas expressões já foram computadas em t6 e t8, podemos eliminar a computação dessas expressões em t7 e 10 B5

Eliminação de subexpressões comuns As eliminações de subexpressões comuns podem ser feitas além do limite de blocos básicos Observe as atribuições de t6 e t8 em B5, elas poderiam ser eliminadas? –Dica: Observe t2 em B2 e t4 em B3 O bloco B5 (tente também em B6) ainda possui subexpressões que poderiam ser eliminadas?

Propagação de Cópias Uma atribuição da forma u=v é chamada atribuição de cópia, ou apenas cópia A idéia desta otimização é utilizar v ao invés de u sempre que for possível Exemplo: Considere a existência da atribuição x=t3 em B5, como é uma atribuição de cópia, pode-se trocar a[t4]=x por a[t4]=t3 Há outras cópias que poderiam ser propagadas?

Eliminação de Código Morto Uma variável é viva em um ponto p se seu valor pode ser usado após o ponto p. De outra forma, o valor dessa variável é denominado morto Código morto pode aparecer como resultado de otimizações/transformações no código –Uma vantagem da propagação de cópias é que, freqüentemente, transforma declarações em código morto Exemplo: a transformação feita, no exemplo anterior, sobre propagação de cópias deixou x como sendo um código morto –Por que x (mesmo sendo usado em B6) pode ser eliminado? Eliminação de Código Morto

Variáveis de Indução e Redução em Força Uma variável x é dita variável de indução se existe uma constante c (positiva ou negativa) tal que o valor de x é definido através de operações que utilizam c Como exemplo, i e t2 são variáveis de indução no laço B2 A substituição de uma operação que consome mais ciclos (cara) por outra que consome menos ciclos (barata) é denominada redução em força

Variáveis de Indução e Redução em Força Exemplo: Considere o bloco básico B3. Logo depois da atribuição j=j-1, pode-se notar que o valor de t4 é definido como t4=4*j+4. Após a atribuição de t4 (t4=4*j), podemos substituir o valor de t4 por t4=t4-4 –A questão aqui é como determinar um valor para t4 a primeira vez que o laço for executado? Veja que t4 deve manter o relacionamento t4=4*j na entrada do bloco B3 Por que essa técnica (redução em força) pode gerar ganhos de desempenho para a aplicação?

Variáveis de Indução e Redução em Força Tomando como base o exemplo anterior, observe que i e j ficaram sem uso nos blocos B2 e B3, respectivamente Note também que i possui relacionamento com t2, pois t2=4*i, enquanto j possui relacionamento com t4, pois t4=4*j Com isso, poderíamos substituir i por t2 e j por t4 em B4? –Se isso for possível, i e j poderiam ser eliminados de seus blocos?