Reduzindo o Overhead Imposto pela Compilação Dinâmica
Upcoming SlideShare
Loading in...5
×
 

Reduzindo o Overhead Imposto pela Compilação Dinâmica

on

  • 820 views

 

Statistics

Views

Total Views
820
Views on SlideShare
819
Embed Views
1

Actions

Likes
0
Downloads
5
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Reduzindo o Overhead Imposto pela Compilação Dinâmica Reduzindo o Overhead Imposto pela Compilação Dinâmica Presentation Transcript

  • Reduzindo o Overhead Imposto pela Compila¸˜o ca Dinˆmica a XI Mostra de Trabalhos de Inform´tica a Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Universidade Estadual de Maring´ a 17 de setembro de 2009 Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Conte´do u Introdu¸˜o ca Motiva¸˜o ca O Compilador YAPc Sistema YAP+ Prolog A Arquitetura do Compilador YAPc O Novo Mecanismo de Compila¸˜o Dinˆmica do YAP+ Prolog ca a Testes de Avalia¸˜o ca Conclus˜o a Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Introdu¸˜o ca Compiladores que geram c´digo nativo dinˆmicamente, melhoram o a consideravelmente o desempenho da aplica¸˜o, mas incluem o ca overhead em tempo de compila¸˜o. ca O objetivo deste trabalho ´ de minimizar o overhead imposto pela e compila¸˜o dinˆmica, explorando arquiteturas multin´cleo para ca a u este fim. Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Motiva¸˜o ca Prolog ´ uma linguagem declarativa amplamente utilizada e e seu desempenho ´ um objeto de estudo muito importante; e Sistemas Prolog compilam para c´digo nativo afim de o melhorar o desempenho, o que pode ser caro, pois baseiam-se na an´lise global e/ou na interven¸˜o do usu´rio; a ca a ´ E desenvolvido um trabalho a partir do YAP Prolog, o YAP+ Prolog, que utiliza o compilador dinˆmico YAPc, afim de a explorar arquitetura multin´cleo, focando um maior u desempenho principalmente de grandes aplica¸˜es; co Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • O Compilador YAPc Um compilador dinˆmico para Prolog; a Utiliza informa¸˜es sobre os tipos dos dados; co Dois objetivos principais: Desempenho e Manutenabilidade; Focar os componentes mais importantes do programa atrav´s e de uma interpreta¸˜o pr´via, permite identificar caracter´ ca e ısticas importantes afim de gerar um c´digo optimizado; o A compila¸˜o dinˆmica para Prolog ´ importante por dois ca a e motivos: Permite identificar regi˜es mais utilizadas no o c´digo (hot-spots) e possibilita ter maiores informa¸˜es sobre o co argumentos de cada procedimento (dif´ em uma linguagem ıcil n˜o tipada e com v´rias formas de uso). a a Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Sistema YAP+ Prolog Caracter´ ısticas Faz uso do compilador JIT; Primeiro interpreta as cl´usulas em tempo de execu¸˜o e a ca depois gera c´digo nativo para as mais executadas; o A compila¸˜o dinˆmica definir argumentos de um predicado e ca a determina quais partes da aplica¸˜o devem ser otimizadas; ca Um predicado invocado pela primeira vez ´ sempre e interpretado. Se executado freq¨entemente, ele ´ compilado e u e otimizado; Processo de compila¸˜o: ca Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Sistema YAP+ Prolog A Compila¸˜o Dinˆmica ca a Para descobrir as oportunidades de compila¸˜o, o sistema deve ca decidir: Quando compilar - Determinar o tempo a ser esperado para que as cl´usulas candidatas sejam compiladas; a ´ O que compilar - E verificado a cl´usula cujo o contador a atingiu o limite. Como uma cl´usula pode ser muito simples, a ´ verificado tamb´m a cl´usula que a chamou. Deve satisfazer e e a as seguintes condi¸˜es: co 1o contador > MinInvoca¸˜es; co 2o tamanho >= TamLimite; Quais caminhos compilar - UItiliza-se uma t´cnica baseada e em regi˜es, permitindo identificar as por¸˜es de c´digos mais o co o visitadas em tempo de execu¸˜o, evitando a gera¸˜o de ca ca c´digo fora das regi˜es selecionadas at´ o c´digo ser o o e o realmente executado. Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • A Arquitetura do Compilador YAPc ´ E o compilador que quando acionado, gera o c´digo nativo para o partes do programa que s˜o freq¨entementes executados. Suas a u caracter´ ısticas s˜o: a Emprega algoritmos simples - Reduz pausas no processo de compila¸˜o; ca ´ adapt´vel as caracter´ E a ısticas do programa - Caracter´ısticas que determinam o fluxo de execu¸˜o entre as ca fases, para alcan¸ar um bom desempenho; c Diminui as pausas do sistema de compila¸˜o - Compila ca apenas os caminhos executados; Gera c´digo compacto - Gera c´digo nativo apenas para as o o regi˜es realmente executadas. o Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • A Arquitetura do Compilador YAPc A representa¸˜o seguinte da arquitetura do compilador dividida em ca front-end e back-end Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Sistema YAP+ Prolog O Novo Mecanismo de Compila¸˜o Dinˆmica ca a Durante a execu¸˜o o interpretador verifica se para cada ca cl´usula existe uma vers˜o otimizada de acordo com os a a crit´rios; e A otimiza¸˜o realizada ´ armazenada na ´rea de c´digos ca e a o nativos, indicando que para o predicado atual existe uma vers˜o otimizada; a A parte n˜o otimizada n˜o ´ descartada pois ainda podem a a e ocorrer depura¸˜es; co A execu¸˜o de um predicado ´ a sua compila¸˜o que da ca e ca interpreta¸˜o d´ lugar a compila¸˜o; ca a ca Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Sistema YAP+ Prolog O Novo Mecanismo de Compila¸˜o Dinˆmica ca a A arquitetura do sistema YAP+ possui os seguintes componentes: Gerente de Fluxos. Gerencia a concorrˆncia de diferentes e fluxos de execu¸˜o. Provˆ um mecanismo baseado e locks ca e para sincronizar os fluxos, motivo pelo qual n˜o ´ preciso a e interromper a execu¸˜o; ca Motor de Execu¸˜o. Papel de executar todo o programa. ca Quando existe uma compila¸˜o a ser realizada ´ ativado o ca e Motor de Compila¸˜o atrav´s de um sinal do sistema; ca e Motor de Compila¸˜o. Compila as cl´usas indicadas. ca a Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • YAP+ - Avalia¸˜o ca Programas utilizados para os testes de avalia¸˜o: ca append: Insere N elementos no in´ de uma outra lista; ıcio naive reverse: Inverte uma lista com N elementos; zebra: quebra cabe¸a l´gico baseado em restri¸˜es que ´ c o co e resolvido por busca exaustiva; hanoi: Torre de hanoi contendo 3 pinos e N discos; quick sort: Ordena¸˜o de N elementos pelo m´todo quick ca e sort; tak: Programa altamente recursivo, que ´ controlado por e opera¸˜es inteiras. co Os teste foram realizados em uma m´quina Intel Core 2 Duo 1.66 a Ghz com 2 Gb de mem´ria, rodando em Linux. o Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • YAP+ versus YAP Avalia¸˜o com o objetivo de identificar a acelera¸˜o obtida atrav´s ca ca e de chamadas a c´digo nativo. Configura¸˜o utilizada: o ca Cadas programa ´ chamado 1000 vezes. Tempo de execu¸˜o: e ca 1000 x tempo do programa; Tempo de execu¸˜o ´ a m´dia entre 5 execu¸˜es; ca e e co O limite para cada invoca¸˜o da compila¸˜o dinˆmica foi de ca ca a 1.000 chamadas; Todas as otimiza¸˜es e o coletor de lixo estavam ligados. co Os testes foram realizados em uma m´quina Intel Core 2 Duo 1.66 a Ghz com 2 Gb de mem´ria, rodando em Linux. o Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • YAP+ versus YAP Entradas para os programas: Tempo de execu¸˜o dos programas em segundos e a acelera¸˜o ca ca obtida utilizando o compilador YAPc: Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Impacto do YAPc no Ambiente de Execu¸˜o ca Programas invocados uma vez e aumento das entradas. Diminui o tempo de execu¸˜o e aumenta o de compila¸˜o. Entradas: ca ca Analisando o desempenho do YAP+: Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • An´lise do Compilador YAPc a Tempo gasto pelo compilador em milissegundos, que varia bastante dependendo das caracter´ ısticas de cada programa: O maior custo est´ na fase de aloca¸˜o dos registradores que a ca consome entre 50,12% e 83,72% do tempo de compila¸˜o. ca Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Nova An´lise dos Programas Testes a Testes realizados para o novo sistema YAP+ que explora as arquiteturas multin´cleos com a mesma configura¸˜o utilizada no u ca ultimo teste: ´ Explorar arquiteturas multin´cleo reduz o impacto do sistema de u compila¸˜o no ambiente de execu¸˜o. ca ca Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a
  • Conclus˜o a Como visto, para programas pequenos o YAP+ nem sempre obteve um desempenho melhor, pois programas pequenos acionam muitas vezes o sistema de compila¸˜o. ca A reestrutura¸˜o do sistema YAP+ possui a vantagem de explorar ca arquiteturas emergentes e possiblitou avaliar situa¸˜es cr´ co ıticas para o sistema YAP+. Anderson Faustino, Maycon Sambinelli, Rodrigo H¨bner u Reduzindo o Overhead Imposto pela Compila¸˜o Dinˆmica ca a