Benchmarks. 1. Introdução

Documentos relacionados
Avaliação de desempenho

Avaliação de Desempenho

Faculdade de Computação Arquitetura e Organização de Computadores 2 Prof. Cláudio C. Rodrigues

Desempenho. Sistemas de Computação

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 7

1. Conceitos Básicos de Computação

Organização de Computadores I

Faculdade de Computação

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Arquitetura de Computadores II

Organização de Sistemas Computacionais Processadores: Organização da CPU

Arquitetura de Computadores

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

PROGRAMAÇÃO I. Introdução

Material baseado nos slides de: Marcos José Santana Regina Helena Carlucci Santana

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho

Conceitos sobre Computadores

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Introdução ao Python. Programa Computacional

SSC546 Avaliação de Sistemas Computacionais Parte 1 -Aula 3 Sarita Mazzini Bruschi

2º Estudo Dirigido CAP 3

Algoritmos Computacionais

ORGANIZAÇÃO DE COMPUTADORES

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Programação Estruturada Aula - Introdução a Linguagem de Programação

Fundamentos Programação

Conceitos Básicos de Programação

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

Arquitectura interna de um computador. Organização de um computador. Organização de um computador. Organização de um computador

Introdução à Programação de Computadores Fabricação Mecânica

Sistemas Operacionais

Introdução à Informática

Organização e Arquitetura de Computadores I

Faculdade de Computação

2. Conceitos Básicos. Introdução à Ciência da Computação.

Programação de Computadores I - PRG1 Engenharia Elétrica

Informática I. Aula /09/2006 1

FUNDAMENTOS DA PROGRAMAÇÃO DE COMPUTADORES BIT / CARACTERE / BYTE/ PALAVRA

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

ESTRUTURA DE DADOS I AULA I

Infraestrutura de Hardware. Desempenho

ORGANIZAÇÃO DE COMPUTADORES

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Arquitetura e organização de computadores Uma visão geral

Introdução a Computação

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC

Sistemas Operacionais. Visão Geral

Introdução à Programação. Apresentação da Disciplina e Conceitos Básicos de Computadores

Unidade Central de Processamento UCP (CPU)

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

Introdução à Programação

Compiladores. Introdução à Compiladores

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Aula 1. Introdução à programação. Prof. Dr. Bruno Honda

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS

Arquiteturas RISC e CISC. Adão de Melo Neto

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?

Organização e Arquitetura de Computadores

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Programação de Computadores:

Informática Aplicada. Introdução

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

Programação de Computadores

SSC0611 Arquitetura de Computadores

Aula 05. Fundamentos de Hardware e Software. Prof. Dr. Dilermando Piva Jr.

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Transcrição:

Benchmarks 1. Introdução Um Benchmark é um programa de teste de desempenho que analisa as características de processamento e de movimentação de dados de um sistema de computação com o objetivo de medir ou prever seu desempenho e relevar os pontos fortes e fracos de sua arquitetura. Benchmarks podem ser classificados de acordo com a classe de aplicação para a qual são voltados como, por exemplo, computação científica, serviços de rede, aplicações multimídia, processamento de sinais entre outros. Neste trabalho utilizaremos os seguintes benchmarks Whetstone, Dhrystone e o Linpack o cluster analisado foi o h3p do núcleo de pesquisa do G3PD UCPeL no qual possui 8 núcleos sendo os nodos h3,h4,h5,h6,h7 e h9 Athlon XP 2400 com o clock interno de 2,0 GHz clock externo 266 MHz com 256MB de RAM, os nodos h3p e h8 Semprom 2400 clock interno de 1,67 GHz clock externo 333 MHz com 256MB de RAM. 2. Whetstone O Whetstone foi o primeiro benchmark sintético na literatura, com fins específicos de medida de desempenho. Sua primeira versão foi publicada na linguagem ALGOL 60 ( apesar de ter sido mais utilizado em FORTRAN), em 1976, por H.J. Curnow e B. A. Wichmann, do Laboratório Nacional de Física na Inglaterra. O Whetstone é um programa com poucas linhas de código, composto de vários módulos. Cada módulo tem um tipo diferente, explora diferentes características da linguagem de programação e é executado várias vezes através de loops FOR. As vantagens deste benchmark são o seu tamanho reduzido e simplicidade no código, além de explorar bastante as operações em ponto-flutuante. Portanto, serve como comparativo para pequenos aplicações científicas em computadores de pequeno e médio porte. Algumas vezes, para fins comerciais, o programa sofre pequenas alterações como retirada dos comandos de impressão, o que pode eliminar partes importantes do código. Para tentar resolver estes tipos de problemas, em 1988, uma nova versão em Pascal foi publicada. O problema com o Whetstone é que só há uma versão oficial, em Pascal. Além disso, a performance medida por este programa depende principalmente da velocidade das funções matemáticas (seno, cosseno, raiz quadrada, etc.). Os resultados obtidos com a aplicação do benchmark Whetstone em alguns nodos do Cluster pode ser visto na Figura 1, onde as variáveis utilizadas são: loop, que indica o número de repetições do laço, Iterations que representa o número de execuções do programa, Time, apresenta o tempo de duração do teste, e por final é apresentado o resultado em MIPS (milhões de instruções por segundo).

Após a execução dos testes nos diferentes nodos pode-se notar que os nodos com processador Athlon obtiveram resultados superiores aos com processadores Semprom. 3. Drystone Figura 1 Resultados Whetstone Este é um benchmark simples para medir o desempenho do processador em inteiros, desenvolvido em 1984. O programa simula chamadas de sistema e operações de leitura e escrita de dados. Vários programas de benchmark atuais entre eles o Sisoft Sandra trazem este benchmark como um dos testes. O resultado indica o número de vezes por segundo que o processador é capaz de executar o conjunto de instruções. Como os processadores atuais são capazes de executar várias instruções por ciclo e dependem muito da velocidade e quantidade de cache, o desempenho varia muito de acordo com o aplicativo. Por isso, o resultado obtido pelo processador no Dhrystone

serve apenas como uma referência de desempenho bruto, que não indica necessariamente o desempenho do processador em aplicativos reais. Entretanto, algumas das vantagens aparentes do Dhrystone também são fraquezas significativas do mesmo. Os números do Dhrystone refletem na verdade o desempenho do compilador da linguagem C e suas bibliotecas, provavelmente mais do que o desempenho do próprio processador. Além disso, seu projeto foi baseado na análise de vários outros programas, escritos em diferentes linguagens e por diferentes autores, porém, voltados à programação de sistemas (sistemas operacionais, compiladores, etc.). Esta é uma característica bastante relevante, pois, diferentes classes de aplicações enfatizam diferentes tipos de operações, como por exemplo, aplicações numéricas utilizam bastante vetores e aritmética de ponto-flutuante; aplicações comerciais utilizam predominantemente atividades de entrada/saída; e programação de sistemas utiliza bastante ponteiros, sentenças "IF ", chamadas de procedimentos, além de conter menos laços e expressões numéricas mais simples. Os resultados obtidos são apresentados na Figura 2 e Figura 3, onde o benchmark foi executado nos nodos h7 e h8 respectivamente. Os testes envolvidos neste benchmark são: testes aritméticos, testes de overhead, leitura/escrita de arquivos, entre outros. Ao final destes testes é apresentado um resumo dos resultados obtidos, onde temos uma variável Baseline, que possui um valor fixo pré-definido afim de atribuir um peso diferente para cada um dos testes executados e uma variável Result no qual apresenta o número de repetições executados durante os testes, na última coluna, está a variável Index a qual é a variável utilizada para apresentar os resultados gerais mais simplificadamente, tornando possível a comparação entre diferentes máquinas com maior facilidade.

Figura 2 Dhrystone nodo h7 Figura 3 Dhrystone nodo H8

4. Linpack O Linpack é um dos mais famosos benchmarks atualmente, utilizado nos testes das 500 máquinas mais rápidas (Top500). O Linpack foi desenvolvido por Jack Dongarra e é para a solução de um sistema de equações lineares denso. O Limpack é utilizado para o Top500 pois é amplamente difundido e apresenta versões para os mais relevantes sistemas. Para o Top500 é utilizado uma versão que permite ao usuário alterar a escala do problema é otimizar o software a fim de conseguir um melhor desempenho total em um determinado sistema. O desempenho não reflete, perfeitamente o desempenho total do sistema, entretanto, como este problema é muito regular, o desempenho obtido é elevado e números obtidos dão uma boa aproximação do desempenho de pico do sistema. As duas características do Limpack são a referenciação de duas rotinas : DGEFA e DGESL (estas são rotina que trabalha com ponto flutuante de 64 bits; já as SGEFA e SGESL trabalham normalmente com expressões de ponto flutuante de 32 bits). DGEFA realiza a decodificação parcial do vetor, e DGESL usa esse tipo de decodificação para resolver um determinado sistema de equações lineares. A maior parte das execuções de ponto flutuante gira em torno de O(n³), este é o tempo gasto em DGEFA. Uma vez que a matriz foi decomposta usando o DGESL, que trabalha com tempo de O(n²) operações de ponto flutuante. Por sua vez DGEFA e DGESL chamam três rotinas que são: DAXPY, IDAMAX, DSCAL. Usando uma proporção de tempo a rotina DAXPY consome 90% do tempo de execução, sua função esta voltada na multiplicação de um escalar α * vetor X, e adicionar os resultados em outro vetor Y. Esta rotina é chamada aproximadamente n²/2 vezes por DGEFA e 2n vezes por DGESL utilizando vetores de comprimento variável. A declaração yi yi+α.xi, que constitui um elemento da DAXPY é executado aproximadamente n³/3+n² vezes o que dá origem a cerca de 2/3n³ operações de ponto flutuante. Assim a referência n=100 requer cerca de 2/3 milhões de operações de ponto flutuante. A declaração yi yi+α.xi, além do ponto flutuante de adição e multiplicação, envolve algumas operações de armazenamento e referências. Enquanto o linpack envolve as rotinas DGEFA e DGESL que referenciam vetores bidimensionais. Uma vez que se diga que o Fortran possui vetores bidimensionais seria armazenado por colunas na memória, o acesso a elementos consecutivos de uma coluna conduz a cálculos de índice simples. As referências a elementos consecutivos são diferenciados por uma palavra, em vez de pela primeira indexação do vetor bidimensional. Os testes de benchmark foram realizados nos nodos h7 e h8 separadamente conforme pode ser visto nas figuras 4 e 5. Para realizar o teste deve-se entrar com o tamanho do array que pode ser no máximo 200. Nos teste apresentados usou-se matrizes de 200x200 e 100x100. As variáveis apresentadas no teste são Reps indica o número de repetições, Time s indica o tempo de execução, DGEFA indica a porcentagem de tempo gasto

com essa rotina, DGESL indica a porcentagem de tempo gasto com essa rotina, OVERHEAD indica a porcentagem de tempo gasto com overhead, KFLOPS indica o numero de operações por segundo realizadas. Figura 4 Linpack nodo H7

Figura 5 Linpack nodo H8