Your SlideShare is downloading. ×
  • Like
Reduzindo o Overhead Imposto pela Compilação Dinâmica
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 488 views
Published

 

Published in Technology , Spiritual
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
488
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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