Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouYago Cal Alterado mais de 9 anos atrás
1
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José Nelson Amaral University of Alberta Edmonton, AB, Canada http://www.cs.ualberta.ca/~amaral Parte III
2
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20012 Conteúdo zComentários Gerais zEstudo de Caso I: Integração de um novo algoritmo de reordenamento de instruções para minimizar uso de registradores [Govind,Yang,Amaral,Gao2000] zEstudo de Caso II: Projeto e avaliação de um algoritmo para prefetching de ponteiros indutivos [Stouchinin,Douillet,Amaral,Gao2000]
3
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20013 Adaptação do Pro64 para um Novo Processador zCrie uma nova targ_info zAjuste o arquivo de configuração para a Application Binary Interface (ABI) zCrie um novo WHIRL-to-CG-lower para seleção de instruções zAjuste funções de utilidade do CG (p.e., predicação, padrões EBO, custos de SWP, etc.) Advançado Para -O0
4
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20014 Caso I zIntrodução do problema MRIS problem e solução proposta yFormulação do problem yO algoritm proposto zExperiência com o Pro64 yOnde começar? yComo começar? yResultados zResumo
5
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20015 Pesquisadores zR. Govindarajan (Indian Inst. Of Science) zHongbo Yang (Univ. of Delaware) zChihong Zhang (Conexant) zJose Nelson Amaral (Univ. of Alberta) zGuang R. Gao (Univ. of Delaware)
6
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20016 Motivação zProcessadores com o estilo da IA-64 yRedução de spills na fase de alocação local de registradores yRedução de pedidos do Alocador Local de Registradores (LRA) yRedução da pressão por registradores em cada função zProcessadores com Execução fora de ordem yBuffer reordenador de instruções yRenaming de registradores
7
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20017 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 que o uso de registradores seja mínimo.
8
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20018 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 que o uso de registradores seja mínimo.
9
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20019 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 <= 20 end … Código Fonte
10
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200110 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 <= 20 end … (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 B2 B3 B4 B5 Grafo de Fluxo de Controle
11
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200111 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 que o uso de registradores seja mínimo.
12
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200112 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); B3 a
13
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200113 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); B3 a bcde
14
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200114 Grafo de Dependência de Dados B3 a bcde 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);
15
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200115 Grafo de Dependência de Dados B3 a bcdefg (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);
16
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200116 Grafo de Dependência de Dados B3 a bcdefg 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);
17
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200117 Grafo de Dependência de Dados B3 a bcdefg 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);
18
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200118 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 que o uso de registradores seja mínimo.
19
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200119 Seqüência de Instruções a bcdefg 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
20
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200120 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 que o uso de registradores seja mínimo.
21
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200121 (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 t2 t3 t4 t5 t6 t7 t8 t1 t4 t5 t7 t3 t2 t6 t8 Uso de Registradores = 4Uso de Registradores = 3
22
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200122 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 que o uso de registradores seja mínimo.
23
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200123 Intuição para Nossa Solução a bcdefg h i Quais instruções podem/não podem compartilhar registradores neste grafo? Podemos usar o mesmo registrador para 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
24
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200124 Intuição para Nossa Solução a bcdefg 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 em que f e g possam compartilhar o mesmo registrador porque h usa os valores de f e g ao mesmo tempo. Grafo de Dependência de Dados
25
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200125 Intuição para Nossa Solução a bcdefg h i E as instruções c e d podem compartilhar 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
26
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200126 Intuição para Nossa Solução a bcdefg h i Nossa intuição é encontrar subconjuntos de instruções que podem definitivamente compartilhar um registrador. Esta informação é então usada para guiar o algoritmo de geração de seqüências. Grafo de Dependência de Dados
27
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200127 Intuição para Nossa Solução a bc de fg h i Uma lineagem de instruções é uma seqüência de instruções em que um único registrador é passado de uma instrução a outra (exceto a última instrução da lineage). Como podemos assegurar que as instruções a, b, f, e h poderão compartilhar o mesmo registrador? L1 = [a, b, f, h, i) a b f h Grafo de Dependência de Dados
28
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200128 Arcos de Seqüenciamento a bcde fg h i A formação de lineagens impõe uma restrição no escalonamento do DDG: o herdeiro escolhido de uma instrução tem 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
29
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200129 Altura de uma Instrução a bcde fg h i L1 = [a, b, f, h, i) Se um arco de seqüenciamento produzisse um ciclo no DDG, seria impossível encontrar uma seqüê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
30
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200130 Formação de Lineagens a bcde fg h i L1 = [a, b, f, h, i) Para a próxima lineagem, as instruções mais altas que ainda não estã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
31
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200131 Interferência Entre Lineagens L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) Duas lineagens Lu = [u 1, u 2, …, u m ) e Lv = [v 1, v 2, …, v m ) definitivamente interferem se: (i) u 1 alcança v n, e (ii) v 1 alcança u m. a bcde fg h i Grafo de Dependência de Dados Aumentado
32
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200132 Grafo de Interferência de Lineagens L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Quais lineagens definitivamente interferem entre si? Grafo de Dependência de Dados Aumentado
33
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200133 Grafo de Interferência de Lineagens L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Grafo de Interferência de Lineagens Quais lineagens definitivamente interferem entre si? Grafo de Dependência de Dados Aumentado
34
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200134 L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Lineagens Com as restrições de escalonamento impostas pela formação de lineagens, todas as instruções de uma linagem podem compartilhar o mesmo registrador. Seria possível que múltiplas lineagens compartilhassem of mesmo registrador? Como podemos encontrar o número mínimo de registradores se nós considerarmos todas as 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
35
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200135 L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Lineagens Nós podemos colorir of grafo de interferência de lineagens para encontrar um Limite Heurístico de Registradores (HRB) para o DDG. Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Grafo de Interferência de Lineagens
36
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200136 a bcde fg h i L1 L3L2 L4 Lineagens Nós conseguimos colorir o grafo com três cores, portanto devemos encontrar uma seqüência de instruçõ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 de lineagens para encontrar um Limite Heurístico de Registradores (HRB) para o DDG.
37
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200137 Condição para Fusão de Lineagens a bcde fg h i Grafo de Interferência de Lineagens L1 L3L2 L4 Duas lineagens Lu = [u 1, u 2, …, u m ) e Lv = [v 1, v 2, …, v n ) podem ser fundidas em uma única lineagem se: (i) u 1 alcança v n, e (ii) v 1 não alcança u m. L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) Lineagens Grafo de Dependência de Dados Aumentado
38
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200138 L1 = [a, b, f, h, I) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg 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 formar L5 = [d, g) [c, f) Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Condição para Fusão de Lineagens
39
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200139 Fusão de Lineagens L1 = {a, b, f, h, i} L2 = {c, f} L3 = {e, g, h} L4 = {d, g} a bcde fg h i L1 L3L2 L4 Lineagens Quando Lu = [u 1, u 2, …, u m ) e Lv = [v 1, v 2, …, v n ) são fundidas: (1) um arco de seqüenciamento de u m a v 1 é 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
40
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200140 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) a bcde fg h i L1 L3L5 Lineagens Quantas cores nós precisamos para colorir o LIG? Portanto a fusão de L4 com L2 resulta em L5 = [d, g) [c, f) Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Fusão de Lineagens
41
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200141 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) a bcde fg h i L1 L3L5 Lineagens 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
42
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200142 Sequenciamento Usando Escalonamento de Lista RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência
43
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200143 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i a Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
44
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200144 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i ad Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
45
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200145 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i ade Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
46
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200146 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i adeg Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
47
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200147 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i adegc Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
48
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200148 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i adegcb Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
49
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200149 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i adegcbf Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
50
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200150 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i adegcbfh Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
51
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200151 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g) [c, f) Lineagens a bcde fg h i adegcbfhi Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista
52
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200152 Sumário do Método de Lineagens zUm “bom” algoritmo para construir o LIG zUm método heurístico efetivo para calcular o HRB zUm 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
53
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200153 Experiência Implementando no Pro64 zProjeto e Plano de Execução zImplementação zDepuração e validação zAvaliação
54
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200154 Implementation zConstrução do Grafo de Dependências zFormação de Lineagens zConstrução e coloração do LIG zImplementando o algoritmo de reordenação
55
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200155 Porting Plan and Design zEntendendo a infra-estrutura do compilador zEntendendo o modelo de registradores (descrito nos arquivos targ_info) p.e.: yclasses de registradores: (int, float, predicate, app, control) yconvenções para salvar/restaurar registradores: caller/callee save, valor de retorno, passagem de argumentos, ponteiro de pilha, etc. yetc.
56
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200156 Register Allocation GRA Assign_Registers Fix_LRA_Blues Falha? Re-escalona movimento local de código spill registradores globais spill registradores locais Sucesso? LRA: Nível de bloco
57
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200157 Implementação yConstrução do DDG: usa rotinas de serviço nativas: e.g. CG_DEP_Compute_Graph yColorindo o LIG: usa um pacote nativo para manipulação de conjuntos (e.g. bitset.c) yImplementação de Escalonamento: usa suporte nativo para manipulação de vetores (e.g. cg_vector.cxx) yAcesso aod grafo de dependências usa funções nativas: ARC_succs, ARC_preds, ARC_kind
58
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200158 Depuração e Validação zTrace file ytt54:0x1. General trace of LRA ytt45: 0x4. Dependence graph building ytr53. TOP before LRA ytr54. TOP after LRA
59
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200159 Avaliação zMedidas Estáticas: yFat point -tt54: 0x40 zMedidas Dinâmicas yHardware counter in R10k perfex
60
Performance: Static Measurements 14 integer registers and 8 FP registers
61
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200161 Performance: Static Measurements 14 integer registers and 8 FP registers
62
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200162 Performance: Dynamic Measurements 14 integer registers and 8 FP registers
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.