workshop em sistemas computacionais de alto desempenho, setembro 20011 usando o pro64 para pesquisa...
TRANSCRIPT
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
1
Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores
Estudos de CasoJosé Nelson Amaral
University of AlbertaEdmonton, AB, Canada
http://www.cs.ualberta.ca/~amaral
Parte III
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
2
ConteúdoComentários GeraisEstudo de Caso I: Integração de um
novo algoritmo de reordenamento de instruções para minimizar uso de registradores [Govind,Yang,Amaral,Gao2000]
Estudo de Caso II: Projeto e avaliação de um algoritmo para prefetching de ponteiros indutivos [Stouchinin,Douillet,Amaral,Gao2000]
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
3
Adaptação do Pro64 para um Novo Processador
Crie uma nova targ_info Ajuste o arquivo de configuração
para a Application Binary Interface (ABI)
Crie um novo WHIRL-to-CG-lower para seleção de instruções
Ajuste funções de utilidade do CG (p.e., predicação, padrões EBO, custos de SWP, etc.)
Adv
ança
doPa
ra -O
0
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
4
Caso IIntrodução do problema MRIS
problem e solução proposta Formulação do problem O algoritm proposto
Experiência com o Pro64 Onde começar? Como começar? Resultados
Resumo
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
5
Pesquisadores
R. Govindarajan (Indian Inst. Of Science)
Hongbo Yang (Univ. of Delaware)Chihong Zhang (Conexant)Jose Nelson Amaral (Univ. of Alberta)Guang R. Gao (Univ. of Delaware)
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
6
MotivaçãoProcessadores com o estilo da IA-64
Redução de spills na fase de alocação local de registradores
Redução de pedidos do Alocador Local de Registradores (LRA)
Redução da pressão por registradores em cada funçãoProcessadores com Execução fora de ordem
Buffer reordenador de instruções Renaming de registradores
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
7
Problema de Sequenciamento de Instruções para Minimizar Uso
de Registradores (MRIS)
Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de queo uso de registradores seja mínimo.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
8
Problema de Sequenciamento de Instruções para Minimizar Uso
de Registradores (MRIS)
Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de queo uso de registradores seja mínimo.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
9
Bloco Básico: Exemplo
(1) k := 10(2) i := 1;(3) if i k goto (13)(4) t1 := ld(x);(5) t2 := t1 + 4;(6) t3 := t1 * 8;(7) t4 := t1 - 4;(8) t5 := t1 / 2;(9) t6 := t2 * t3;(10) t7 := t4 - t5;(11) t8 := t6 * t7;(12) st(y,t8);(13) i := i + 1; (12) if i 20 goto (3)
Código de Tres Endereços
begin k := 10; i := 1; do begin
if(i=k) y = (x+4)*(x*8)*((x-4)-x/2)
i = i +1 end while i <= 20end…
Código Fonte
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
10
Bloco Básico: Exemplo
begin k := 10; i := 1; do begin
if(i=k) y = (x+4)*(x*8)*((x-4)-x/2)
i = i +1 end while i <= 20end…
(4) t1 := ld(x);(5) t2 := t1 + 4;(6) t3 := t1 * 8;(7) t4 := t1 - 4;(8) t5 := t1 / 2;(9) t6 := t2 * t3;(10) t7 := t4 - t5;(11) t8 := t6 * t7;(12) st(y,t8);
Código Fonte
(1) k := 10(2) i := 1;
(3) if i k goto (13)
(13) i := i + 1; (14) if i 20 goto (3)
(15) ...
B1
B2B3
B4
B5 Grafo de Fluxo de Controle
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
11
Problema de Sequenciamento de Instruções para Minimizar Uso
de Registradores (MRIS)
Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de queo uso de registradores seja mínimo.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
12
Grafo de Dependência de Dados
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
B3a
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
13
Grafo de Dependência de Dados
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
B3a
b c d e
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
14
Grafo de Dependência de Dados
B3a
b c d e
f
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
15
Grafo de Dependência de Dados
B3a
b c d e
f g
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
16
Grafo de Dependência de Dados
B3a
b c d e
f g
h
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
17
Grafo de Dependência de Dados
B3a
b c d e
f g
h
i
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
18
Problema de Sequenciamento de Instruções para Minimizar Uso
de Registradores (MRIS)
Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de queo uso de registradores seja mínimo.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
19
Seqüência de Instruções
a
b c d e
f g
h
i
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
B3
(a) t1 := ld(x);(d) t4 := t1 - 4;(e) t5 := t1 / 2;(g) t7 := t4 - t5;(b) t2 := t1 + 4;(c) t3 := t1 * 8;(f) t6 := t2 * t3;(h) t8 := t6 * t7;(i) st(y,t8);
B3’
(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(f) t6 := t2 * t3;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
B3’’
Seqüência 1
Seqüência 2
Seqüência 3
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
20
Problema de Sequenciamento de Instruções para Minimizar Uso
de Registradores (MRIS)
Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de queo uso de registradores seja mínimo.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
21
(a) t1 := ld(x);(d) t4 := t1 - 4;(e) t5 := t1 / 2;(g) t7 := t4 - t5;(c) t3 := t1 * 8;(b) t2 := t1 + 4;(f) t6 := t2 * t3;(h) t8 := t6 * t7;(i) st(y,t8);
Seqüência 2
Uso de Registradores(a) t1 := ld(x);(b) t2 := t1 + 4;(c) t3 := t1 * 8;(d) t4 := t1 - 4;(e) t5 := t1 / 2;(f) t6 := t2 * t3;(g) t7 := t4 - t5;(h) t8 := t6 * t7;(i) st(y,t8);
t1
Seqüência 1
t2t3
t4t5
t6t7
t8
t1t4
t5t7
t3t2
t6t8
Uso de Registradores = 4 Uso de Registradores = 3
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
22
Problema de Sequenciamento de Instruções para Minimizar Uso
de Registradores (MRIS)
Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de queo uso de registradores seja mínimo.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
23
Intuição para Nossa Solução
a
b c d e
f g
h
i
Quais instruções podem/não podem compartilhar registradores neste grafo?
Podemos usar o mesmo registradorpara os valores produzidos por b e f?
Sim, em qualquer seqüência, b e f podem compartilhar o mesmo registrador porque f é o único uso do valor produzido por b.
e e g podem compartilhar registradores?Grafo de Dependência
de Dados
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
24
Intuição para Nossa Solução
a
b c d e
f g
h
i
E as instruções f e g? f e g podem compartilhar
o mesmo registrador?
Não, não existe seqüência legal emque f e g possam compartilhar
o mesmo registrador porqueh usa os valores de f e g
ao mesmo tempo.Grafo de Dependência de Dados
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
25
Intuição para Nossa Solução
a
b c d e
f g
h
i
E as instruções c e d podemcompartilhar o mesmo registrador?
Depende da seqüência, para que c e d possam compatilhar o mesmo registrador,
nós temos que ou escalar f antes de d, ou g antes de c.Grafo de Dependência
de Dados
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
26
Intuição para Nossa Solução
a
b c d e
f g
h
i
Nossa intuição é encontrar subconjuntos de instruções que
podem definitivamente compartilharum registrador. Esta informação é
então usada para guiar oalgoritmo de geração de seqüências.
Grafo de Dependência de Dados
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
27
Intuição para Nossa Solução
a
b c d e
f g
h
i
Uma lineagem de instruções é umaseqüência de instruções em que umúnico registrador é passado de umainstrução a outra (exceto a últimainstrução da lineage).
Como podemos assegurar queas instruções a, b, f, e h poderãocompartilhar o mesmo registrador?
L1 = [a, b, f, h, i)
a
b
f
h
Grafo de Dependência de Dados
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
28
Arcos de Seqüenciamento
a
b c d e
f g
h
i
A formação de lineagens impõe umarestrição no escalonamento do DDG:o herdeiro escolhido de uma instruçãotem que ser a última instrução listada entre sues irmãos.
L1 = [a, b, f, h, i)
Portanto, a formação de lineagens insere arcos de seqüenciamento no DDG.Grafo de Dependência
de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
29
Altura de uma Instrução
a
b c d e
f g
h
i
L1 = [a, b, f, h, i)
Se um arco de seqüenciamentoproduzisse um ciclo no DDG,seria impossível encontrar umaseqüência legal de instruções.
Portanto nós usamos a altura da instrução, recomputada após cada formação de lineagem, para selecionar o herdeiro. Desempates são arbitrários.Grafo de Dependência
de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
30
Formação de Lineagens
a
b c d e
f g
h
i
L1 = [a, b, f, h, i)Para a próxima lineagem, asinstruções mais altas que ainda nãoestão em lineagem são: c, d, e,todas com uma altura de 5.L2 = [c, f)
c
L3 = [e, g, h)
e
g
L4 = [d, g)
d
Grafo de Dependência de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
31
Interferência Entre LineagensL1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)
Duas lineagens Lu = [u1, u2, …, um) e Lv = [v1, v2, …, vm) definitivamente interferem se:
(i) u1 alcança vn, e (ii) v1 alcança um.
a
b c d e
f g
h
iGrafo de Dependência de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
32
Grafo de Interferência de Lineagens
L1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)
a
b c d e
f g
h
i
L1
L3L2
L4
Quais lineagens definitivamenteinterferem entre si?
Grafo de Dependência de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
33
Grafo de Interferência de Lineagens
L1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)
a
b c d e
f g
h
i
L1
L3L2
L4
Grafo de Interferência de Lineagens
Quais lineagens definitivamenteinterferem entre si?
Grafo de Dependência de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
34
L1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)a
b c d e
f g
h
i
L1
L3L2
L4
Lineagens
Com as restrições de escalonamento impostaspela formação de lineagens, todas as instruçõesde uma linagem podem compartilhar o mesmoregistrador.
Seria possível que múltiplas lineagens compartilhassem of mesmo registrador?
Como podemos encontrar o número mínimode registradores se nós considerarmos todasas seqüências legais para o DDG aumentado?
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Grafo de Interferência de Lineagens
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
35
L1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)a
b c d e
f g
h
i
L1
L3L2
L4
Lineagens
Nós podemos colorir of grafo de interferência delineagens para encontrar um Limite Heurísticode Registradores (HRB) para o DDG.
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Grafo de Interferência de Lineagens
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
36
a
b c d e
f g
h
i
L1
L3L2
L4
Lineagens
Nós conseguimos colorir o grafo com três cores,portanto devemos encontrar uma seqüência deinstruções que usa três registradores.
L1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)
Grafo de Dependência de Dados Aumentado
Colorindo o Grafo de Interferência de Lineagens
Grafo de Interferência de Lineagens
Nós podemos colorir of grafo de interferência delineagens para encontrar um Limite Heurísticode Registradores (HRB) para o DDG.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
37
Condição para Fusão de Lineagens
a
b c d e
f g
h
i
Grafo de Interferência de Lineagens
L1
L3L2
L4
Duas lineagensLu = [u1, u2, …, um) e Lv = [v1, v2, …, vn) podem ser fundidasem uma única lineagem se:
(i) u1 alcança vn, e (ii) v1 não alcança um.
L1 = [a, b, f, h, i)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)
Lineagens
Grafo de Dependência de Dados Aumentado
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
38
L1 = [a, b, f, h, I)L2 = [c, f)L3 = [e, g, h)L4 = [d, g)a
b c d e
f g
h
i
L1
L3L2
L4
Lineagens
No exemplo, quais lineagens podem ser fundidas?
d alcança f, e c não alcança g
Portanto L4 pode ser fundida com L2 para formarL5 = [d, g) [c, f)
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Condição para Fusão de Lineagens
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
39
Fusão de LineagensL1 = {a, b, f, h, i}L2 = {c, f}L3 = {e, g, h}L4 = {d, g}a
b c d e
f g
h
i
L1
L3L2
L4
Lineagens
Quando Lu = [u1, u2, …, um) e Lv = [v1, v2, …, vn) são fundidas:
(1) um arco de seqüenciamento de um a v1
é introduzido no DDG aumentado(2) Lu e Lv são removidos do LIG(3) uma nova lineagem Lw = Lu Lv é inserida no LIG
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
40
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f)
a
b c d e
f g
h
i
L1
L3L5Lineagens
Quantas cores nós precisamos paracolorir o LIG?
Portanto a fusão de L4 com L2 resulta emL5 = [d, g) [c, f)
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Fusão de Lineagens
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
41
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f)
a
b c d e
f g
h
i
L1
L3L5Lineagens
Nós ainda precisamos de três cores.
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Fusão de Lineagens
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
42
Sequenciamento Usando Escalonamento de Lista
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
Grafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
43
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
aGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
44
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a dGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
45
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d eGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
46
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d e gGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
47
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d e g cGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
48
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d e g c bGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
49
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d e g c b fGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
50
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d e g c b f hGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
51
RARBRC
L1
L3L5
L1 = [a, b, f, h, I)L3 = [e, g, h)L5 = [d, g) [c, f) Lineagens
a
b c d e
f g
h
i
a d e g c b f h iGrafo de Dependência de Dados Aumentado
Grafo de Interferência de Lineagens
Registradores
Seqüência
Sequenciamento Usando Escalonamento de Lista
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
52
Sumário do Método de Lineagens
Um “bom” algoritmo para construir o LIG
Um método heurístico efetivo para calcular o HRB
Um método efetivo para escalonamento (sem retentativas)
Grafo de Interfer. de Lineagens (LIG)
Derive HRB
Escalonamento por lista estendido guiado por HRB
DDG
Uma boa seqüência de instruções
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
53
Experiência Implementando no Pro64
Projeto e Plano de ExecuçãoImplementaçãoDepuração e validaçãoAvaliação
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
54
Implementation
Construção do Grafo de DependênciasFormação de LineagensConstrução e coloração do LIGImplementando o algoritmo de
reordenação
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
55
Porting Plan and Design
Entendendo a infra-estrutura do compilador
Entendendo o modelo de registradores (descrito nos arquivos targ_info)p.e.: classes de registradores: (int, float, predicate, app, control) convenções para salvar/restaurar registradores:
caller/callee save, valor de retorno, passagem de argumentos, ponteiro de pilha, etc.
etc.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
56
Register AllocationGRA
Assign_Registers
Fix_LRA_Blues
Falha?
Re-escalona movimento local de códigospill registradores globaisspill registradores locais
Sucesso?
LRA:Nível de bloco
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
57
Implementação Construção do DDG: usa rotinas de
serviço nativas: e.g. CG_DEP_Compute_Graph Colorindo o LIG: usa um pacote
nativo para manipulação de conjuntos (e.g. bitset.c)
Implementação de Escalonamento: usa suporte nativo para manipulação de vetores (e.g. cg_vector.cxx)
Acesso aod grafo de dependências usa funções nativas: ARC_succs, ARC_preds, ARC_kind
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
58
Depuração e Validação
Trace file tt54:0x1. General trace of LRA tt45: 0x4. Dependence graph
building tr53. TOP before LRA tr54. TOP after LRA
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
59
Avaliação
Medidas Estáticas: Fat point -tt54: 0x40
Medidas Dinâmicas Hardware counter in R10k
perfex
Performance: Static Measurements
Compiler Version
Baseline MIPSPro HRB(no fusion) HRB
Benchmark Blocks W/ spill
Average Spills
Blocks W/ spill
Average Spills
Blocks W/ spill
Average Spills
Blocks W/ spill
Average Spills
Benchmarks with Low Register Pressure tomcatv 2 49.5 2 32.5 2 27 2 24
swim 9 3.7 7 4.7 6 7 1 6 su2cor 42 11.2 31 9.2 29 10.2 28 9.1
hydro2d 20 3.1 13 2.3 5 3.8 3 4.7 mgrid 5 7.2 3 8.3 4 6.8 3 2.7
Average 15.6 8.95 11.2 7.8 9.2 9.5 7.4 8.95 Benchmarks with High Register Pressure
applu 73 23.5 68 16.9 64 18.9 61 17.1 turb3d 39 13.8 34 10.4 24 11.8 23 11.3 apsi 118 10.6 87 8.1 68 8.4 54 9.4
fpppp 59 62.9 50 59.6 43 67.5 39 73.2 wave5 146 9.3 111 11.7 79 8.5 62 9.3
Average 87.0 8.95 70.0 18.5 55.6 20.3 47.8 21.9
14 integer registers and 8 FP registers
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
61
Performance: Static Measurements
Compiler Version MIPSPro HRB(no fusion) HRB
Benchmarks Baseline
Spills Spills % reduc. Spills % reduc. Spills % reduc. Benchmarks with Low Register Pressure
tomcatv 99 65 34.3 54 45.5 48 51.5 swim 33 33 0.18 42 -27.2 6 81.8
su2cor 469 286 39 295 37.1 255 45.6 hydro2d 61 30 50.8 19 68.9 14 77 mgrid 36 25 30.6 27 25 8 77.8
Average 140 87.8 37.1 87.4 37.4 66.2 52.6 Benchmarks with High Register Pressure
applu 1717 1148 33.2 1214 29.3 1044 39.2 turb3d 534 355 34.1 284 47.3 260 51.8 apsi 1256 706 43.8 572 54.5 508 59.5
fpppp 3711 2980 19.7 2902 21.8 2853 23.1 wave5 1352 1301 3.78 669 50.5 575 57.5
Average 1715 1298 24.3 1128 34.2 1048 38.9
14 integer registers and 8 FP registers
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 2001
62
Performance: Dynamic Measurements
Compiler Version MIPSPro HRB(no fusion) HRB
Benchmarks Baseline
Time Time % reduc. Time % reduc. Time % reduc. Benchmarks with Low Register Pressure
tomcatv 384 380 1.04 377 1.71 371 3.28 swim 319 316 0.78 312 2.21 308 3.52
su2cor 258 248 3.74 258 0.04 252 2.4 hydro2d 615 618 -0.54 620 -0.77 616 -0.11 mgrid 387 395 -2.26 391 -1.25 391 -1.23
Average 392.6 391.6 0.21 391.6 0.21 387.5 1.25 Benchmarks with High Register Pressure
applu 446 441 1.11 446 0.05 442 0.91 turb3d 508 496 2.32 461 9.12 453 10.8 apsi 276 278 -0.52 264 4.47 263 4.78
fpppp 505 471 6.63 463 8.2 465 7.87 wave5 224 220 1.42 216 3.32 218 2.64
Average 391.6 381.3 2.65 370.1 5.5 368.1 6.0
14 integer registers and 8 FP registers