Você está na página 1de 12

Benchmark Linpack

Bruno Colla, Manuel Debarba, Tiago Gasparetto Universidade Regional Integrada do Alto Uruguai e das Misses URI Campus de Erechim RS Brasil Departamento de Engenharias e Cincias da Computao
bruno-colla@hotmail.com, manuelluis@yahoo.com.br, thiago_gaspareto@yahoo.com.br

Abstract. This paper describes the LINPACK Benchmark and some of its variations commonly used to assess performance of computer systems. The latter is frequently used to obtained results for TOP500 submissions. Information is also given on how to interpret results of the LINPACK benchmark and how the results fit into performance evaluation process. Resumo. Este artigo descreve o Benchmark Linpack e algumas de suas variaes geralmente utilizadas para avaliar o desempenho dos sistemas de computadores. Este frequentemente utilizado para obter resultados apresentados no TOP500. emitido tambm a informao em como interpretar os resultados do benchmark LINPACK e de como os resultados se encaixam em processo de avaliao de desempenho.

1. Introduo
Um Benchmark um programa de teste de desempenho que analisa as caractersticas de processamento e de movimentao de dados de um sistema de computao 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 aplicao para a qual so voltados como, por exemplo, computao cientfica, servios de rede, aplicaes multimdia, processamento de sinais, etc. O Benchmark Linpack um dos mais famosos benchmarks atualmente, utilizado inclusive nos testes das 500 mquinas mais rpidas existentes (Top500), por ser o que tem maior nmero de resultados reportados. Originalmente, o Linpack era um pacote de sub-rotinas que tinham por finalidade resolver sistemas de equaes lineares algbricas. O Linpack encaixa-se na classificao de benchmark tipo algoritmo. Ele contm dois conjuntos de rotinas: um para decomposio de matrizes e outro para resolver o sistema de equaes lineares resultantes da decomposio. Os resultados dos testes so reportados em MFLOPS (Millions of Floating Point Operations per Second), GFLOPS (Billions of Floating Point Operations per Second) ou TFLOPS (Trillions of Floating Point Operations per Second). Sua aplicao visivelmente em mquinas que utilizam softwares para clculos cientficos e de engenharia, visto que as operaes mais utilizadas nestes tipos de aplicaes so em ponto-flutuante. Existem verses diferentes para o Linpack cada verso diferencia-se no tamanho das matrizes (a mais utilizada 100x100); na preciso, que pode ser dupla ou simples; e em relao aos tipos de laos (unrolled/ rolled). Os laos unrolled so incrementados de 4 em 4, e o corpo do lao contm sentenas para ndices i, i+1, i+2 e i+3. Em algumas mquinas/compiladores o cdigo executa mais rpido desta maneira. Nas mquinas

vetoriais mais modernas, o compilador j faz isto de maneira mais otimizada e, portanto, elas executam a verso "rolled" (laos incrementados de 1 em 1) mais rapidamente. Com o tempo foram adicionados outros dados de desempenho, chegando a uma coleo de mais de 1300 diferentes sistemas de computadores, alm da expanso do escopo do benchmark, podendo resolver problemas de matrizes de trs nveis e tambm problemas de otimizao. A partir destas evolues, o benchmark LINPACK foi adotado por cientistas do mundo todo para avaliar o desempenho de computadores, especialmente para mquinas com arquiteturas avanadas.

2. O Pacote Linpack
O pacote LINPACK um conjunto de sub-rotinas escrito inicialmente em Fortran para resolver sistemas de equaes lineares, com algoritmo para resolver um sistema de lgebra linear. Ele foi escrito baseado em outro pacote de sub-rotinas chamado Basic Linear lgebra Subprograms, que fazem operaes comuns de vetor escalar, como multiplicao de um vetor por um escalar e operaes entre vetores, por exemplo, produto vetorial, sempre trabalhando com ponto flutuante. Nos ltimos anos, com o surgimento de computadores de processamento paralelo e supercomputadores, as aplicaes de software passaram a ser escalveis, ou seja, capazes de tomar como vantagem a configurao destas supermquinas e resolver grandes problemas com a mesma eficincia. Portanto, foi criada uma nova categoria de regras de testes e ambientes para o benchmark LINPACK, conhecido como Highly Parallel LINPACK (HPL- Linpack altamente paralelo) NxN Benchmark. 2.1. Seleo do algoritmo No Benchmark Linpack, foi usado originalmente uma matriz de tamanho 100, pelo motivo do computador que estava em uso em 1980 possuir limitaes de memria, a matriz tem O(100) ponto flutuante de elementos e poderia ser acomodado na maioria dos ambientes da poca. Resolver um sistema de equaes requer O(n) ponto flutuante de operaes, mais especificamente 2/3n+2n+O(n) ponto flutuante de adies e multiplicaes. Assim, o tempo necessrio para resolver tais problemas em uma determinada mquina pode ser aproximado por timen = time100 . n 100 O algoritmo utilizado baseado na decomposio parcial, o tipo de matriz do tipo real com elementos distribudos aleatoriamente, o gerador de nmeros aleatrio utilizado no benchmark no sofisticado, mas seus principais atributos a sua compactao.

3. Caractersticas do Linpack
As duas caractersticas do Limpack so a referenciao de duas rotinas : DGEFA e DGESL (estas so rotina que trabalha com ponto flutuante de 64 bits; j as SGEFA e SGESL trabalham normalmente com expresses de ponto flutuante de 32 bits). DGEFA realiza a decodificao parcial do vetor, e DGESL usa esse tipo de decodificao para resolver um determinado sistema de equaes lineares. A maior parte das execues 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) operaes de ponto flutuante. Por sua vez DGEFA e DGESL chamam trs rotinas que so: DAXPY, IDAMAX, DSCAL. Usando uma proporo de tempo a rotina DAXPY consome 90% do tempo de execuo, sua funo esta voltada na multiplicao 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 varivel. A declarao yi yi+.xi, que constitui um elemento da DAXPY executado aproximadamente n/3+n vezes o que d origem a cerca de 2/3n operaes de ponto flutuante. Assim a referncia n=100 requer cerca de 2/3 milhes de operaes de ponto flutuante. A declarao yi yi+.xi, alm do ponto flutuante de adio e multiplicao, envolve algumas operaes de armazenamento e referncias. 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 memria, o acesso a elementos consecutivos de uma coluna conduz a clculos de ndice simples. As referncias a elementos consecutivos so diferenciados por uma palavra, em vez de pela primeira indexao do vetor bidimensional. 3.1. Detalhes das Operaes Os resultados refletem em apenas um problema da rea: resolver um sistema de Equaes Lineares usando o linpack no qual em sua primeira verso era programado em ambiente Fortan. Dado que a maior parte do tempo gasto em DAXPY, o ponto de referncias realmente medir o desempenho dos DAXPY. A mdia de durao para decomposio parcial do vetor utilizado 2/3n. Assim no marco de n=10 o tempo de durao decomposio de 66. A fim de resolver este problema inicial necessrio executar quase 700.000 operaes de ponto flutuante. O tempo necessrio para resolver o problema dividido pelo nmero de operaes de ponto flutuante para determinar a taxa de Megaflops. As rotinas DGEFA chamadas de IDAMAX, DSCAL e DAXPY tm como funo: Rotina IDAMAX que calcula o ndice de um vetor com maior mdulo, ex: chama-se 99 vezes essa rotina na execuo de um vetor executando de 2 at 100. Cada chamada para IDAMAX da origem a dupla preciso de n, o valor absoluto da dupla computao n-1. O nmero total de operaes 5364, os valores absolutos de dupla preciso 4950. DSCAL chamada 99 vezes na execuo de um vetor de tamanho de 1 a 99. Cada chamada para DAXPY da origem a uma dupla comparao de preciso com zero. Isso leva a 4950 comparaes contra 0, 328350 adiantamentos e 328350 multiplicaes. Alm disso, o prprio DGEFA faz 99 comparaes de dupla preciso contra zero, e 99 dupla preciso recprocas os valores da operao de contagem DGEFA dada na tabela 1.

Tabela 1. Contagens das operaes de Duplas preciso para Linpack 100x100 da rotina DGEFA.

Tipo de Operao Soma Multiplicao Reciproca Valor absoluto Menor/Igual Diferente de zero

Contador Operaes 328350 333300 99 5364 4950 5247

A rotina DGESL, que utilizada para solucionar um sistema de equaes baseadas na fatorizao de DGEFA, realiza uma quantia menor de operaes de ponto flutuante. Em DGESL, DAXPY posta em duas, uma vez um vetor com tamanho de 1 at 99, e outra com vetor de tamanho 0 at 99. Isso leva a um total de 9900 acrscimos de dupla preciso, o mesmo nmero de multiplicaes de dupla preciso, e 199 contra zero. O DGESL faz 100 divises e 100 negaes. O valor total da operao de contagem DGESL dado na tabela 2.
Tabela 2. Contagens das operaes de Duplas preciso para o Linpack 100x100 da rotina DGESL.

Tipo de Operao Soma Multiplicao Diviso Negativo Diferente de zero

Contador Operaes 9900 9900 100 100 199

Tabela 3. Contagens de operaes de Dupla preciso para o Linpack 100x100.

Tipo Operaes Soma Multiplicao Recproca Diviso Negao Valor Absoluto Menor/Igual Diferente de zero Total

Contador Operaes 338250 343200 99 100 100 5364 4950 5446 697509

Contam para o linpack referencias indicadas na tabela 3, que apontam um total de 697509 operaes de ponto flutuante (o linpack utiliza aproximadamente 2/3n+2n operaes que para n-100 tem o valor de 686667.). instrutivo para olhar apenas a contribuio devida ao DAXPY. Destas Operaes de ponto flutuante, as chamadas para DAXPY de DGEFA e DGESL contam para um total de 338160 acrescenta-se

338160 multiplicaes e 5147 comparaes com zero. Isso da um total de 681467 operaes, ou mais de 97% de todas as operaes de ponto flutuante que so executadas. O tempo total retomado com mais operaes aritmticas. Em particular, h um lote de tempo gasto em carregar e armazenar os operando da operao de ponto flutuante. Podemos estimar o nmero de carregamento e armazenamento, assumindo que todos os operando devem ser armazenados em registradores, mas tambm assumindo que o compilador ir fazer um trabalho razovel de promover lao, de modo que eles no precisam ser carregados dentro do circulo fechado novamente. 3.2. Lao Unrolling observado frequentemente que a maior parte do tempo do processamento de um programa esta localizado em 3% ou menos do cdigo fonte, muitas vezes o cdigo a partir de uma perspectiva temporal construdo por um ou alguns laos, por exemplo, o produto escalar de dois vetores. Em computadores escalares, importante usar tcnicas simples para a otimizao de tais loops. O Loop(lao) unrolling, uma tcnica aplicada para o tempo consumido do lao. Quando um ciclo desenrolado, o seu contedo replicado uma ou mais vezes, com as devidas adaptaes para o ndice do vetor e incrementos do lao. A principal fonte de melhoria em relao aos computadores simples a reduo da sobrecarga. Por exemplo, o lao unrolling poderia permitir mais de uma multiplicao a ser ativo simultaneamente em uma maquina segmentada. Alm disso, esse lao frequentemente aumenta a concorrncia entre as unidades funcionais independentes em computadores to equipados ou aqueles com mltiplas instrues adicionais. Um exemplo o processador IBM Power, que possui unidades independentes e componentes multiplicadores, que pode obter concorrncia entre adio e multiplicao de um elemento para o elemento seguinte, alm de obter a segmentao ao mesmo tempo dentro de cada unidade. No entanto, em maquinas com instrues vetoriais, a tcnica unrolling tem efeito oposto, o compilador tenta detectar as operaes vetoriais no lopp, mas o que dificulta o unrolling que consequentemente o cdigo do vetor poder se tornar escalar, e consequentemente degradar o desempenho. 3.3. Desempenho O desempenho do computador uma questo complicada, possui uma quantidade de muitas funes inter-relacionadas. Estas quantidades incluem a aplicao, o algoritmo, o tamanho do problema, a linguagem de alto nvel, a execuo, os recursos humanos (nvel de esforo utilizado para aperfeioar o programa), o compilador para aperfeioar a capacidade, a verso do compilador, o funcionamento do sistema, a arquitetura do computador, e as caractersticas de hardware. Os resultados dos Benchmarks no devem ser utilizados como medidas de desempenho total do sistema (a no ser que a anlise foi realizada suficiente para a carga de trabalho de um determinado interesse), mas sim como pontos de referncias para novas avaliaes. O desempenho frequentemente medido em termos de Megaflops, Gigaflops, ou Teraflops. Incluem geralmente tanto adies e multiplicaes na contagem das operaes de ponto flutuante por segundo, e os valores dos operandos so assumidos de

64 bits de ponto flutuante. Atualmente, pode se medir o desempenho de um supercomputador chegando a Petaflops (1015flops/s). O fabricante normalmente se refere ao seu desempenho maximo quando descreve um sistema. Este pico de desempenho chega atravs da contagem do numero de adies e multiplicaes de ponto flutuante que pode ser completado em um perodo de tempo, geralmente o tempo de ciclo da maquina. Por exemplo, um Intel Pentium III com um tempo de ciclo de 750 MHz tem dois pontos de unidades flutuante, durante cada ciclo, os resultados tanto do componente ou multiplicador pode ser concludo, e, assim, o pico de desenvolvimento : Rpeak = 1 operao . 750 MHz = 750 Mflop/s 1 ciclo
Tabela 4. Mostra o desempenho mximo de alguns computadores utilizando o Linpack matriz de 100 por 100.

Maquina Intel Pentium III Intel Pentium 4 Intel Itanium AMD Athlon

Tempo ciclo [MHz] 750 2.530 800 1.200

Desempenho Pico [Mflop/s] 750 5.060 3.200 2.400

Desempenho LINPACK 100 por 100 [Mflop/s] 138 1190 600 557

O desempenho de pico terico um limite informado pelo fabricante que garante que os programas no sero superiores a estes valores (informados na tabela acima). O Benchmark Linpack mostra que na prtica pode haver uma diferena significativa entre o desempenho de pico terico e o desempenho real. Analisando o algoritmo Linpack e observando a forma de como os dados so referenciados, vemos que cada passo do processo de fatorizao existe operaes vetoriais que modificam completamente uma sub-matriz de dados. Esta atualizao faz um bloco de dados ser lido, atualizando e escrevendo de volta para a memria principal. O nmero de operaes de ponto flutuante 2 / 3n3, e o numero de dados referenciados, ambos loads e stores, 2 / 3n3. Assim, para cada par soma/multiplicao temos de efetuar um load(carregar) e store(armazenar) dos elementos, infelizmente no obtendo a reutilizao dos dados. Mesmo que as operaes so completamente vetoriais, h uma movimentao significativa dos dados, resultando em um baixo desempenho. Em computadores vetoriais a um desempenho bem inferior ao pico estimado. Em computadores super-escalares isso resulta em uma grande quantidade de dados movimentados e atualizados. Para alcanar taxas de alto desempenho esta operao-memoria-referncia deve ser maior. Em certo sentido um problema simples fazer operaes vetoriais de um vetor ou em maquina super-escalar. O gargalo esta na quantidade de dados em movimento limitando a taxa de execuo. Podemos ver isso atravs da anlise das taxas de transferncias de dados e do desempenho mximo. 3.4. Reestruturaes de Algoritmos Hoje arquiteturas de computadores possuem vrios estgios de memria hierrquica. Os algoritmos reestruturados para explorar essa organizao hierrquica podem obter um alto desempenho. Para chegar a um desempenho mximo, preciso

otimizar a utilizao do nvel mais baixo de memria (ou seja, manter os dados, o mximo possvel, antes do prximo acesso memria principal), obtendo reutilizao tanto quanto possvel. 3.5. Operaes Matriz-Vetor Estas operaes tm a vantagem de reutilizar os dados e conseguir uma maior taxa de execuo do que o vetor equivalente. De fato, o nmero de operaes de ponto flutuante permanece o mesmo, apenas os dados de referncia padro so alterados. Esta mudana resulta em uma operao para memria, taxa de referncia em vetor de computadores de grande efeito, 2 vetores de operaes de ponto flutuante e 1 vetor de memria de referncia. Em Mquinas vetoriais para processamento, um dos objetivos destas implantaes a de manter a durao do vetor tanto tempo quanto possvel, e na maioria dos algoritmos, os resultados so computados num vetor (linha ou coluna) de uma s vez. Alm disso, em registro vetorial o desempenho de maquinas aumentado pela reutilizao dos resultados de registro de um vetor. Infelizmente, esta abordagem de construo do software muitas vezes no se adqua a computadores com uma hierarquia de memria (como memria global, memria cache ou local, e registradores vetoriais) e computadores de processamento paralelo. Para essas arquiteturas, muitas vezes, prefervel particionar a matriz ou matrizes em blocos para realizar a computao pela matriz-matriz sobre esses blocos de operaes. Organizar o clculo dessa forma fornece a mxima reutilizao de dados, enquanto o bloco realizado na cache ou na memria local. Esta abordagem evita a deslocao excessiva dos dados da memria e atribui efeitos para a relao das operaes de circulao de dados. Alm disso, arquiteturas que fornecem processamento paralelo, o paralelismo pode ser explorado de duas formas: primeiro operaes em blocos distintos podem ser realizadas em paralelo, e segundo no mbito das operaes em cada bloco, operaes escalares ou vetoriais podem ser realizadas em paralelo. 3.6. Operaes Matriz-Matriz Existem vrios algoritmos para bloquear tais problemas em matrizes, muitos dos primeiros algoritmos utilizavam uma pequena memria principal, com fita ou disco como armazenamento secundrio, tcnicas semelhantes foram posteriormente utilizadas para a explorao comum de algoritmos page-swapping em mquinas com memria virtual. Essas tcnicas so aplicveis sempre que existe uma hierarquia de armazenamento de dados (em termos de velocidade de acesso). Alm disso, blocos completos (e consequentemente, a multiplicao de matrizes completas) podem aparecer como um subproblema ao manusear grandes sistemas de equaes. Recentemente, vrios pesquisadores tm demonstrado a efetivao de algoritmos em computadores modernos com arquiteturas de processamento vetoriais ou capacidades de processamento paralelo, sobre os quais, potencialmente de alto desempenho podem ser facilmente degradados pela excessiva transferncia de dados entre diferentes nveis de memria (registradores vetoriais, cache, memria local, memria principal, ou estado de discos slidos.

4. Benchmark Linpack Paralelo


Nos ltimos anos, o aparecimento de Memrias Distribudas (MD) em computadores, com seu grande potencial para soluo de grandes problemas numricos levou a pesquisas na anlise comparativa. Exemplos de computadores usando memrias simples IBM Scalable Power Parallel SP-2, Intel Paragon e o Cray T3E, redes e grupos de trabalho (NOWs e COWs). A principal caracterstica de terem atingido um alto desempenho que estes computadores incluem um conjunto de Unidades de Processamento (PUS), onde cada unidade constituda por um processador, as memrias locais so organizadas de maneira hierrquica, e outros dispositivos de apoio. Estes PUS so interligados por uma rede ponto a ponto (direta). Sem modificao da mquina bsica arquitetural, este sistema de memria distribuda capaz de proporcionar aumento de desempenho com o nmero de PUS, sua capacidade de memria e a largura da banda da rede so aumentadas. Computadores com MD so bons, mas so feitas algumas melhorias. Estas melhorias consistem na construo a partir de um pequeno nmero de ns, onde cada n um computador com uma pequena MD(memria distribuda) virtual. Esses nodos so interligados por uma simples interconexo de rede chamada Crossbar (rede no bloqueante). A programao nestas mquinas bem como a sua produo facilitada pela relativa simplicidade nas interligaes de rede. Alm disso, o aumento das capacidades computacionais das PUS parece ser uma tarefa mais fcil do que aumentar o desempenho da rede. A fim de explorar plenamente o crescente poder computacional dos computadores MD, a aplicao software deve ser escalveis, ou seja, capazes de tirar maior proveito da mquina para resolver maiores problemas com a mesma eficincia. O Linpack referncia endereos escalveis por uma introduo de uma nova categoria, essa nova categoria a que se refere ao Linpack altamente paralelo (HPL) benchmark NxN. Exige uma soluo de sistemas de equaes lineares por algum mtodo, o problema o tamanho permitido para variar, e a melhor taxa de execuo de ponto flutuante deve ser satisfatria. Em computao a taxa de execuo, a um nmero de operaes deve ser 2n / 3 + 2n independente do mtodo utilizado. As seguintes quantidades de referncia so relatadas na lista TOP500: Rmax = Desempenho para o maior problema executado em uma mquina(em Gflop/s); Nmax= Tamanho do maior problema executado em uma mquina; N1/2 = Tamanho quando metade de Rmax executado; Rpeak= O pico de desempenho terico para a mquina (em Gflop/s). Para o desempenho do benchmark HPL NxN contribui na eficincia do cdigo executado em uma nica CPU, bem como o algoritmo paralelo, o que torna todos os CPUs cooperar. O antigo pode ser utilizado com o uso de tcnicas de otimizao mencionadas anteriormente.

6. O Cdigo HPL
HPL um pacote de software que resolve um denso sistema de equaes lineares em computadores com memria distribuda. O pacote usa 64-bits aritmtica de ponto flutuante e rotinas portteis para operaes de lgebra linear e passagem de mensagens. Alm disso, ele d a possibilidade de escolher um de vrios algoritmos de fatorizao e fornece o tempo e uma estimativa de preciso da soluo.

Por consequncia, no pode ser considerado como uma aplicao porttil da HPL de referncia NxN. Ele exige implementaes do MPI e BLAS ou a Biblioteca de processamento de imagem (VSIPL). Principais etapas executadas pelo pacote HPL para obter a HPL NxN : - Gerar e partio de dados entre matriz MPI computao nodos. - Todos os ns comeam ao mesmo tempo. MPI_Barrier (...); - Iniciar temporizador. HPL_ptimer (...); - HPL_pdgesv (...); Resolva sistema de equaes. - Parar relgio temporizador. HPL_ptimer (...); - Obter o mximo do tempo relgio. MPI_Reduce (...); - Recolher estatsticas sobre a taxa de desempenho (base na mxima do relgio) e preciso da soluo. 6.1. O Algoritmo A Tabela 5 mostra em 2-D um bloco de distribuio dos dados utilizados pelo HPL. Os dados so distribudos em uma grade bidimensional (de dimenses P por Q) dos processos de acordo com o regime de bloco-cclico para assegurar um bom equilbrio de carga, bem como a escalabilidade do algoritmo. O coeficiente n por n + 1 da matriz logicamente particionado em blocos (cada um de dimenso NB por NB), que so tratadas ciclicamente para o P pelo processo Q da grade. Isto feito em ambas as dimenses da matriz.
Tabela 5. Distribuio utilizada pela HPL.

P0 P2 P0 P2

P1 P3 P1 P3

P0 P2 P0 P2

P1 P3 P1 P3

O nmero de processadores de 4 (denominado P0, P1, P2 e P3), elas esto organizadas em 2 por 2 na grade (P = Q = 2). O nmero de sub-blocos de 4 em ambas as dimenses (N / NB = 4). Numa dada interao do ciclo principal, e por causa da propriedade cartesiana da distribuio deste esquema, cada painel de fatorizao ocorre em uma coluna de processos. Para esta operao, ao usurio forado uma escolha de trs recursos variantes matriz-matriz com base em multiplicao. Depois que o painel fatorizao foi realizado, o painel de colunas fatorado difundido para a outra coluna de processo. So muitos os possveis algoritmos, a difuso de software atualmente oferece as seguintes variantes: - Aumentar o anel, - Modificar o aumento do anel, - Aumento de dois anis, - Modificar o aumento de dois anis, - Redutores,

- Modificar banda de reduo, As modificaes variam para aliviar o prximo processador (o que teria uma participao na fatorizao do painel aps o atual) a partir da carga de envio de mensagens (outro que tem a receber bem como enviar matriz atualizadas dos dados). O anel variante propaga a atualizao de dados em uma nica direo, enquanto que as duas variantes de anel propagam dados em duas direes concomitantemente. A banda de reduo de variantes divide uma mensagem a ser enviada para um nmero de peas e envia-as atravs de uma nica linha da grade de processadores, para que mais mensagens sejam trocadas, mas o volume total da comunicao independente do nmero de processadores. Isto se torna particularmente importante quando a computao nodos relativamente muito mais rpido do que a interconexo. Uma vez que o atual painel foi transmitido (ou durante a operao de difundir) a sub-matriz tem de ser atualizada.

5. A Lista TOP500
Estatsticas sobre computadores de alto desempenho so de grande interesse para os fabricantes, e os potenciais usurios. Eles querem saber no s o nmero de sistemas instalados, mas tambm a localizao dos diversos supercomputadores de alto desempenho e as aplicaes para as quais um sistema de computador est sendo usado. Essas estatsticas podem facilitar a colaborao de sistemas, o intercmbio de dados e software, e fornecer uma melhor compreenso do computador de alto desempenho no mercado. Estatsticas baseadas apenas no nome do fabricante no so mais teis, no entanto novas estatsticas so exigidas para refletir a diversificao de supercomputadores. Para fornecer esta nova base, em 1993 foi criada a lista do TOP500 onde mantida uma lista dos 500 mais poderosos sistemas de computadores. A lista atualizada duas vezes por ano, com a ajuda de especialistas em computadores de alto desempenho, cientistas computacionais, fabricantes, bem como a comunidade da Internet em geral. O ranking TOP500 consiste em uma listagem ordenada dos quinhentos supercomputadores de maior desempenho do mundo, sendo tal medida feita atualmente com o LINPACK Benchmark. O primeiro ranking foi criado em Junho de 1993, e desde ento anualmente so publicadas duas listagens, uma em Junho e outra em Novembro. A idia inicial deste ranking foi a de prover uma nova base estatstica para os supercomputadores atuais, mas atualmente o intuito principal dessa lista a de fornecer informao sobre a evoluo dos supercomputadores. Para se candidatar ao ranking as empresas e usurios fornecem equipe do top500 os resultados de desempenho do seu equipamento no benchmark LINPACK. Porm, para evitar possveis fraudes e corrigir possveis erros, a equipe do TOP500 tenta testar independentemente os resultados. A listagem fornecida gratuitamente no site do TPO500, sendo que grandes empresas como a DELL, IBM, HP, entre outras grandes fabricantes de computadores patrocinam esse projeto. 6.2. Resultados de desempenho A fim de adquirir o melhor desempenho de um determinado sistema, o maior problema era o tamanho de memria a ser usado. A quantidade de memria utilizada pelo HPL basicamente o tamanho do coeficiente da matriz HPL, o mesmo usa NB

tamanho do bloco para a distribuio dos dados, bem como para a granularidade computacional. Distribuio dos dados a partir de um ponto de vista, o menor NB, melhor o equilbrio de carga, assim deve-se evitar valores muito grandes da NB. A partir de um local computacional baseando-se em valores pequeno de NB podem limitar o desempenho computacional por um grande fator porque quase no h dados reutilizados, isso ir ocorrer mais rpido no nvel de hierarquia de memria. O nmero de mensagens tambm ir aumentar a eficincia da matriz multiplicar rotinas, so frequentemente bloqueados internamente. Pequeno mltiplo que bloqueia este fator provvel que sejam tamanhos de bons blocos para HPL. As tabelas 6 e 7 descrevem um cluster baseado no processador Pentium III.
Tabela 6. Descrio do cluster usando processador Pentium.

CPU Memria Interconexo SO Compilador C C ags MPI BLAS

Intel Pentium III 550 Mhz 512 MB Myrinet RedHat Linux 6.1 (kernel 2.2.15) gcc ver. 2.91.66 (egcs-1.1.2 release) fomit-frame-pointer -O3 -funroll-loops MPI GM ver. 1.2.3 ATLAS ver. 3.0 beta

Tabela 7: Desempenho (em Gflops/s) do HPL em um cluster com 16 nodos Pentium.

Dimenses do Processo 2 ate 4 4 ate 4

2000 1.76 2.27

5000 2.32 3.94

Dimenso Matriz 8000 10000 2.51 2.58 4.46 4.68

15000 2.72 5.00

20000 2.73 5.16

6.3 Testes Realizados Este captulo tem por objetivo apresentar os resultados de uma experincia prtica de aplicao do benchmark Linpack utilizando uma matriz de 2000x2000. O teste consistiu em uma comparao de desempenho feita entre vrios computadores de linhas e famlias totalmente distintas, fabricados por indstrias concorrentes e amplamente utilizados no mercado atual de computadores pessoais. Este teste no tinha como objetivo medir o desempenho entre as mquinas, pelo motivo de as mesmas pertencerem a linhas e famlias distintas. Os resultados mostrados a seguir so fruto da execuo de computadores usados no dia a dia, no sofrendo assim nenhuma alterao (software e hardware).
Tabela 8: Desempenho (em Mflops/s) dos testes realizados no Linpack em uma matriz 2000x2000 .

Processador Intel Core 2 Quad Intel Core 2 Duo Intel Core 2 Duo

Frequncia

Tempo Execuo Desempenho (segundos) (Mflops/s) 2.40 GHz 1.04 448.074 2.20 GHz 1.78 375.445 1.66 GHZ 3.56 187.772

7. Concluso
No decorrer deste trabalho nota-se que nos ltimos anos, o Benchmark Linpack tem evoludo a partir de uma simples listagem de um problema para uma matriz expandida que descreve o desempenho em trs nveis de especificaes em centenas de computadores. O referencial hoje utilizado por cientistas no mundo inteiro para avaliar o desempenho de computadores, especialmente para mquinas de arquitetura inovadoras e avanadas. No entanto, uma nota de cautela necessria. Os Benchmarkings no devem ser utilizados indiscriminadamente para julgar o desempenho global de um sistema de computador. O desempenho um tema complexo, dependente de uma variedade de diferentes quantidades incluindo o algoritmo, tamanho do problema, bem como a implementao. O Benchmark Linpack prev trs parmetros distintos que podem ser utilizados para avaliar o desempenho em um computador com um sistema denso de equaes lineares: o primeiro para a matriz de 100 por 100, o segundo de uma matriz de 1000 por 1000. A terceira referncia, em particular, est dependente do algoritmo escolhido pelo fabricante e a quantidade de memria disponvel no computador que est a ser aferido.

8. Referncias
DE ROSE, Cesar A. F.; NAVAUX, Philippe O. A.. Arquiteturas paralelas. Porto Alegre: Sagra Luzzatto, 2003. Frequently Asked Questions, LINPACK Benchmark. Disponvel em: nettlib.bell-labs.com/netlib/benchmark/faq-linpack.html. Acessado em maio de 2009. Top500, Supercomputing Sites. Disponvel na internet via: www. URL:http://www.top500.org. Acessado em de maio de 2009. Jack J. Dongarra, Piotr Luszczek, and Antoine Petitet.. The LINPACK Benchmark: Past, Present, and Future. Disponvel em: http://www.netlib.org/utk/people/JackDongarra/PAPERS/hplpaper.pdf. Verso Java do Benchmark Linpack. Disponvel na internet via: http://www.netlib.org/benchmark/linpackjava/. Acessado em maio de 2009. Wikipedia. Benchmark (Computao). Disponvel na internet via www. URL: http://pt.wikipedia.org/Benchmark_(computao). Acessado em maio de 2009.