O documento descreve pesquisas realizadas para reduzir o overhead da compilação dinâmica em Prolog, explorando arquiteturas multicore. O sistema YAP+ Prolog usa o compilador JIT YAPc para compilar partes frequentemente executadas para código nativo. Testes mostram que o YAP+ tem melhor desempenho que o YAP original, com acelerações de até 3x. O maior custo da compilação é a alocação de registradores, que consome de 50% a 83% do tempo. Explorar arquiteturas multicore
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Reduzindo o Overhead Imposto pela Compilação Dinâmica
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