Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José Nelson Amaral University of Alberta Edmonton, AB, Canada Parte III
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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]
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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)
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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);
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro (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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Experiência Implementando no Pro64 zProjeto e Plano de Execução zImplementação zDepuração e validação zAvaliação
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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.
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 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
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Avaliação zMedidas Estáticas: yFat point -tt54: 0x40 zMedidas Dinâmicas yHardware counter in R10k perfex
Performance: Static Measurements 14 integer registers and 8 FP registers
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Performance: Static Measurements 14 integer registers and 8 FP registers
Workshop em Sistemas Computacionais de Alto Desempenho, Setembro Performance: Dynamic Measurements 14 integer registers and 8 FP registers