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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

501

Published on

Published in: Technology, Spiritual
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
501
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
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

×