SciELO - Scientific Electronic Library Online

 
vol.25 issue1The uncertainty concept as applied to the measurement process associated with the preparation of a calibration reference solutionEnzymeless biosensors: a novel area for the development of amperometric sensors author indexsubject indexarticles search
Home Pagealphabetic serial listing  

Química Nova

Print version ISSN 0100-4042

Quím. Nova vol.25 no.1 São Paulo Jan./Feb. 2002

http://dx.doi.org/10.1590/S0100-40422002000100020 

Divulgação

TÉCNICAS PARA ANÁLISE DE DESEMPENHO DE COMPUTADORES


Pedro A. M. Vazquez*
Instituto de Química, Universidade Estadual de Campinas, CP 6154, 13083-970 Campinas - SP

*email: vazquez@iqm.unicamp.br

Recebido em 11/1/01; aceito em 18/4/01


 

 

TECHNICS FOR COMPUTER PERFORMANCE ANALYSIS. A series of open source benchmarks for computer performance analysis of personal computers with a focus on computational chemistry calculations is presented. The results returned by these tests are discussed and used to correlate with the actual performance of a set of computers available for research on two computing intensive fields of chemistry, quantum chemical and molecular simulation calculations.

Keywords: performance analysis; computational chemistry; ab initio and molecular dynamics calculations.

 

 

INTRODUÇÃO

Ao longo da última década uma série de técnicas e recursos sofisticados da supercomputação foram incorporados sucessivamente aos microprocessadores utilizados em computadores pessoais e estações de trabalho1. Como resultado da redução dos preços e destes avanços, a distância, em termos de desempenho, que separava os grandes computadores dos equipamentos de uso pessoal diminuiu ao ponto de permitir a popularização de métodos computacionais da química em grande escala. A Tabela 1 resume esta evolução ao longo da década passada, conforme coletada por nosso grupo, para a família de processadores baseados na arquitetura Intel IA32. Ao mesmo tempo que o desempenho computacional acessível ao pesquisador cresceu várias ordens de grandeza, a sua medida ou forma de expressão foi tornando-se gradativamente mais complexa. Enquanto no início da década de 90 o desempenho era expresso adequadamente através do número de operações de ponto flutuante por segundo (FLOP: FLoating point OPeration), nos anos seguintes os fabricantes e organizações buscaram formas de tentar expressar o desempenho computacional do equipamento como um todo e não apenas do processador. Outros aspectos relevantes como o desempenho do sistema de discos, a velocidade de acesso à memória, o desempenho em redes de alta velocidades e a capacidade dos equipamentos executarem diversas tarefas simultaneamente passaram a ser medidos e os resultados obtidos ponderados em índices que expressavam o desempenho geral do equipamento. Testes ou benchmarks consagrados como o Linpack2 deram lugar aos testes desenvolvidos pela Systems Performance Evaluation Cooperative (SPEC)3. Do ponto de vista do químico computacional em vias de adquirir um computador para o qual encontram-se disponíveis os resultados dos testes da SPEC, o problema da análise de desempenho praticamente encerra-se aqui. Basta analisar os valores dos specmarks dos equipamentos e optar por aquele que fornecer o melhor conjunto de índices para o orçamento disponível. Infelizmente na maioria dos casos isto não ocorre, o acesso ao conjunto de testes que compõe o SPEC não é público mas deve ser adquirido a um custo relativamente alto junto à cooperativa, restringindo aos grandes fabricantes como Compaq, IBM, Silicon e SUN a medida e a publicação destes índices. Por outro lado, de meados da década de 90 em diante a relação entre custo e desempenho de computadores pessoais baseados na arquitetura Intel IA32 tornou-os extremamente atrativos como alternativas de menor custo, maior escalabilidade e desempenho que as dispendiosas estações de trabalho. A associação destes computadores de baixo custo com sistemas operacionais gratuitos de alta qualidade e desempenho como o Linux4 ou FreeBSD5 permitiu a criação de clusters6 com desempenho muito superior ao de estações de trabalho e servidores de custo semelhante. A natureza quase artesanal destes sistemas, entretanto, coloca-os à margem de medidas como as realizadas pela SPEC e a avaliação, por parte de um químico computacional, de qual equipamento lhe retornará o melhor desempenho fica extremamente dificultada. Em uma tentativa de simplificar para o grande público a evolução presumida do desempenho de seus processadores, tornou-se comum no final da década alguns fabricantes passarem a utilizar como índice de desempenho unicamente a velocidade do processador em MHz ou GHz. Esta analogia é parcialmente verdadeira quando compara-se processadores de uma mesma família mas tem seus limites como ilustra a tabela 1 para o processador Pentium III de 700 MHz e para o Athlon de 800 MHz. Em outras palavras, em algumas situações o simples aumento da velocidade do processador não se reflete em um aumento proporcional de desempenho, avanços na arquitetura de hardware podem obter saltos de maior impacto e estes saltos só podem ser quantificados através de testes adequados. Adicionalmente, um computador não é constituido apenas pelo seu processador, outros componentes como o sistema de cache, memória e discos são extremamente relevantes para a química computacional e nenhuma informação sobre o seu desempenho pode ser inferida a partir da velocidade do processador.

 

 

O objetivo deste texto é apresentar um pequeno conjunto de programas que meçam o desempenho de computadores sob diversos aspectos de relevância para a química computacional e que permitam a um pesquisador acessar de forma clara índices que expressem a adequação de um dado equipamento à demanda computacional do seu trabalho de pesquisa. O enfoque adotado visa aplicações computacionalmente intensivas nas áreas de química quântica e simulação utilizando computadores pessoais com sistemas operacionais gratuitos. Os resultados obtidos, no entanto, podem ser extrapolados para outras áreas de computação numérica intensiva da química. Inicialmente faremos uma análise dos fatores mais relevantes de desempenho para a química computacional. A seguir serão apresentados os testes correspondentes a cada fator e discutidas as informações fornecidas pelos seus resultados. Finalmente, o uso destas técnicas será exemplificado, uma análise de dois microcomputadores é realizada com estes programas e os resultados obtidos serão discutidos mostrando os limites de cada fator e como o desempenho real para aplicações numéricas pode ser diferente daquele divulgado de forma simplificada por alguns fabricantes.

 

FATORES RELEVANTES PARA O DESEMPENHO COMPUTACIONAL EM QUÍMICA

Os fatores relevantes para um alto desempenho computacional em química analisados neste trabalho são:

• Desempenho de Ponto Flutuante do Processador;

• Desempenho do Sistema de Memória;

• Desempenho do Sistema de Discos;

Outros fatores como o desempenho em aplicações de computação gráfica e visualização, redes de alta velocidade, multimídia, ou desempenho como servidor, embora relevantes, não serão abordados. Em grande parte, o desempenho destas últimas aplicações, no entanto, depende diretamente do balanço adequado do desempenho dos três itens a serem estudados. A seleção destes items busca brindar os três fatores que mais afetam o desempenho de programas de química quântica e simulação. Em ambos os casos a velocidade com que o processador pode realizar cálculos de ponto flutuante reflete-se diretamente no tempo total de execução. A velocidade com que o sistema de memória pode abastecer o processador com dados para os cálculos e armazenar os resultados obtidos, por outro lado, tem se mostrado o maior gargalo às tentativas de aumento de desempenho baseadas unicamente no aumento da velocidade de operação do processador. Por último, naquelas aplicações onde o volume de dados é de tal ordem que não pode ser mantido em memória, tanto a velocidade de acesso aos discos, quanto o impacto sobre o desempenho do processador causado pelos controladores de discos torna-se o gargalo que define o desempenho como um todo do computador. Na medida que estes três fatores sofrem avanços tecnológicos consideráveis e de forma independente em prazos curtos, o equilíbrio entre as três partes necessita ser permanentemente avaliado. Para alguns tipos de aplicações, por exemplo, não há benefício algum em adquirir um sistema com um processador muito rápido associado a um sistema de discos obsoleto e lento, o resultado final pode ser o mesmo de um sistema de menor custo com um processador de desempenho mais modesto.

Análise de Desempenho de Ponto Flutuante

A análise de desempenho de ponto flutuante de um computador pode ser realizada de diversas formas. Se o objetivo for determinar a sua capacidade máxima teórica de cálculos, basta recorrer às especificações do fabricante no que diz respeito ao número máximo de operações de ponto flutuante simultâneas e multiplicar esse valor pela velocidade do processador. Via de regra, este resultado é de pouca valia. Programas em química computacional executam uma grande diversidade de operações de ponto flutuante e dificilmente operarão nas condições ótimas do fabricante. Uma maneira alternativa de análise de desempenho de ponto flutuante tem sido feita através do Linpack2. Neste teste, é medida a velocidade do computador para realizar operações de álgebra linear com matrizes de diferentes dimensões e o resultado é expresso em MFLOPS (Mega FLOPs) para cada dimensão. Uma desvantagem do Linpack é que ele expressa simultâneamente o desempenho do sistema de ponto flutuante e do sistema de memória do computador, não fornecendo de forma clara o desempenho individual destes componentes. Adicionalmente, nos últimos anos têm sido desenvolvidas bibliotecas de álgebra linear de altíssimo desempenho7-10, que podem ser utilizadas com o Linpack, obtendo resultados muito superiores e tornando este teste uma simples comparação de desempenho bibliotecas otimizadas. A partir de 1992, Aburto11, propôs um teste simples para avaliar a capacidade bruta de cálculos de ponto flutuante dos processadores. Neste teste o programa flops calcula oito séries numéricas que exercitam as quatro operações aritméticas de ponto flutuante em precisão dupla de um processador com diferentes frequências. As séries foram construidas de forma a não solicitar desempenho do sistema de memória e apenas refletir o desempenho de ponto flutuante. A Tabela 2 ilustra o balanço de operações de ponto flutuante em cada série. A partir do tempo gasto pelo processador para calcular cada série, é obtido o desempenho em MFLOPS correspondente. Nos processadores atuais, tanto de arquitetura RISC quanto os microprocessadores CISC utilizados em computadores pessoais, as unidades de ponto flutuante são otimizadas para fornecer seu melhor desempenho em adições e multiplicações podendo realizar, em muitos casos, estas operações simultâneamente em expressões da álgebra linear do tipo A=A*X+Y. Em operações de divisão, por outro lado, o desempenho é comparativamente sofrível e uma análise dos resultados da série 7 (com 25% de divisões) deve fornecer um bom indicativo para pesquisadores que realizam, por exemplo, simulações de dinâmica molecular. De posse destas informações é possível utilizar o programa flops para realizar análises comparativas de desempenho de processadores. Na Tabela 3 encontram-se os resultados obtidos (em MFLOPS) para dois processadores diferentes, Athlon AMD K7 e Pentium III, ambos operando a 700 MHz. Em ambos os casos o programa foi compilado com opções idênticas de otimização utilizando o compilador gcc versão 2.95.212. Analisando esta tabela percebemos que ambos os processadores apresentam uma perda de desempenho considerável em operações de divisão. A razão entre o melhor e o pior desempenhos no teste é 3,0 para o Athlon e 3,6 para o Pentium III. Este último processador possui um desequilbrio maior do que o primeiro e qualquer programa de química computacional que efetue divisões com frequência será impactado de forma severa em relação a um computador que utilize o processador Athlon. O mesmo resultado observa-se ao calcular a razão dos desempenhos dos dois processadores em cada série do teste: essa razão sofre um impacto em todos os testes onde são feitas operações de divisão. Analisando o melhor resultado obtido para os dois processadores, a série 3, constata-se a eficiência de ambas arquiteturas em realizar operações do tipo A=A*X+Y em paralelo com subtrações. Esta eficiência neste tipo de operação parece acentuada no Pentium III, como se pode constatar nos resultados do teste 8 onde ele obtém a melhor razão em relação ao Athlon.

 

 

 

Análise de Desempenho de Acesso à Memória

Tomando por base os resultados do programa flops pode-se estimar qual o nível de desempenho do sistema de memória necessário para sustentar a velocidade com que o processador é capaz de executar as operações. No caso do Athlon, o melhor desempenho obtido foi de 494,8 MFLOPS, isto é, 494,8 milhões de operações de precisão dupla por segundo, no caso do Pentium III este valor foi de 319,2 MFLOPS. Para que estes processadores consigam manter este desempenho em aplicações de química computacional, é necessário que o sistema de memória forneça sem restrições a quantidade de dados que o processador é capaz de lidar. Uma variável de precisão dupla possui 8 bytes de tamanho, uma operação matricial do tipo A(i) = A(i)*X+Y, onde X e Y são constantes, necessita realizar um acesso a memória e ler e escrever 8 bytes a cada duas operações de ponto flutuante. Isto implica que o sistema de memória deve ser capaz de transferir 8*494,8/2 = 1979.2 MBytes/s e 8*319.2/2=1276.8 MBytes/s da memória para o processador para manter o desempenho. Estes números são relativamente altos para os sistemas de memória dos microcomputadores atuais. Estes sistemas de memória, por sua vez, variam em desempenho de acordo com a placa mãe utilizada, com as características do processador, dos sistemas de cache de nível 1 e nível 2 e da velocidade da memória do sistema. Um desequilíbrio notável desta natureza é o que caracteriza a linha de processadores Celeron onde, por razão de custos, o cache foi reduzido mas a performance de ponto flutuante do processador é adequada. O maior impacto do desempenho do sistema ocorre sobre programas de química quântica que lidam com matrizes e vetores de grandes dimensões. Já nos programas de simulação, a localidade dos dados minimiza os efeitos resultantes dos atrasos da CPU pela lentidão de acesso à memória principal. O gargalo representado pelo desequilíbrio entre a velocidade do sistema de memória e a velocidade de processamento foi estudado por McCalpin a partir de 199513 através do programa STREAM14. Este programa realiza medidas de desempenho para quatro tipos básicos de operações da álgebra linear comuns em computação científica (A(i), B(i) e C(i) são elementos de vetores de precisão dupla de grandes dimensões e X é uma constante de precisão dupla):

Em um teste típico com o STREAM o programa é compilado após definir um tamanho para os vetores A, B e C suficientemente grande para evitar que o sistema de cache interfira e forneça resultados errados. Em um computador com 128 Mbytes de memória, esse valor corresponderia a 100 Mbytes, por exemplo. O programa deve ser executado em um computador que não esteja realizando nenhum cálculo ou tarefa que requeira acesso intensivo à memória. A análise dos resultados do STREAM obtidos em computadores de diferentes marcas com o mesmo processador permite diferenciar sistemas de memória de forma bastante clara. Na Tabela 4, encontram-se os resultados obtidos para dois microcomputadores com processador Pentium 133 MHz com diferentes sistemas de memória desenvolvidos pela Intel. Torna-se óbvio que o sistema VX é cerca de 34% mais rápido que o sistema FX para o mesmo processador e memória principal e, à época de sua aquisição, seria a opção mais adequada para cálculos que demandassem acessos frequentes a grandes volumes de dados armazenados na memória principal. O STREAM também pode ser utilizado para comparar o desempenho de diferentes sistemas de memória entre processadores diferentes. A Tabela 5 mostra os resultados obtidos para um computador com um processador Athlon de 700 MHz e para um computador com um processador Pentium III. Uma análise desta tabela mostra que o sistema de memória do computador com o processador Athlon é de 10 a 50% mais rápido que o do computador com o processador Pentium III. O pior resultado do Pentium III corresponde à operação de cópia, onde não há uso da unidade aritmética de ponto flutuante, isto indica o quanto o sistema de memória penaliza o processador por não poder atende-lo na velocidade necessária. O melhor resultado obtido pelo Pentium III, por outro lado, corresponde à operação de soma mostrando um equilíbrio adequado quando as transferências de grandes volumes de dados da memória envolvem operações aritméticas de ponto flutuante. Este desempenho em operações desta natureza já havia sido posto em evidência pelos resultados do programa flops na Tabela 3. De uma forma geral o teste confirma a superioridade da tecnologia Compaq/Alpha EV6 do sistema de memória do Athlon frente ao controlador BX Intel.

 

 

 

Análise da Velocidade de Acesso aos Discos

O desempenho dos computadores com relação à velocidade de acesso aos discos torna-se extremamente relevante naqueles métodos computacionais onde o volume de dados excede a capacidade de armazenamento da memória principal. Entre estes destacam-se, por exemplo, as análises de trajetórias de dinâmica molecular e o armazenamento e leitura de integrais em alguns tipos de cálculos ab initio. Vários fatores afetam o desempenho do sistema de discos de um computador. Os mais relevantes do ponto de vista da química computacional são:

• A velocidade dos dispositivos controladores e dos discos;

• A sobrecarga sobre o processador associada ao controle de tarefas de leitura e escrita;

• A tecnologia do sistema operacional para lidar com as operações de leitura e escrita;

Os dispositivos controladores disponíveis no mercado para microcomputadores podem ser dividos entre as tecnologias SCSI e ATA (também denominada IDE). Em uma mesma geração tecnológica, via de regra, a tecnologia SCSI caracteriza-se por ser mais rápida, robusta, menos disponível no mercado e bem mais cara do que a correspondente tecnologia ATA. Esta, por sua vez, caracteriza-se por seu baixo custo, altas capacidades de armazenamento, desempenho razoável e ampla disponibilidade no mercado, vindo incorporada, virtualmente, em todas as placas mãe. Do ponto de vista da química computacional o que define a opção por uma tecnologia ou outra é a relação entre o custo e o desempenho que se pode obter no instante da compra do equipamento para um dado tipo de cálculo. Cálculos de dinâmica molecular demandam pouco desempenho de disco em uma etapa do trabalho, mas este desempenho pode tornar-se um gargalo em outra etapa de análise de trajetórias. Cálculos ab initio oferecem alternativas de métodos diretos que podem ser mais rápidas em um processador veloz do que acessos a uma unidade de disco muito lenta. Neste contexto, em ambos os casos, o que se deseja é obter o máximo uso do processador para cálculos com a menor latência associada ao tempo que o processador aguarda o recebimento ou armazenagem dos dados em disco. Além disto, em ambientes computacionais onde vários usuários ou processos compartilham simultaneamente o sistema de discos, é essencial que este não sofra uma degradação sensível em função dos vários processos acessando diferentes regiões do disco para leitura e escrita. Vários fatores afetam o desempenho de um disco. A forma de acesso, em blocos de dados ou em bytes, e o tamanho dos blocos de dados transferido em cada operação afetam o desempenho do computador. Dependendo da estratégia adotada pelo sistema operacional, este pode agrupar várias operações em um bloco único para minimizar o acesso aos discos. A Figura 1 ilustra a variação de desempenho do sistema de discos em função do tamanho do bloco usado para leitura e escrita. A tecnologia SCSI mostra a menor variação ou sensibilidade ao tamanho do bloco; a tecnologia ATA, Ultra DMA 33 MHz, é a mais afetada. Nos três casos, blocos com tamanhos de 4 a 8 kbytes mostram-se com desempenho adequado e por isso têm sido os tamanhos utilizados pela maioria das aplicações especializadas. Um programa de teste de desempenho que não leve isto em conta pode obter resultados errôneos. O compromisso que o sistema operacional faz entre o uso da memória principal disponível para processos ou disponível para cache de disco de entrada e saida é extremamente variado. Os sistemas operacionais modernos tentam minimizar ao extremo o acesso aos discos. Quando um programa solicita ao sistema operacional a leitura de uma parte de um arquivo em disco, o sistema lerá uma quantidade maior de dados tentando antecipar a próxima solicitação de leitura do mesmo arquivo pelo programa. Em operações de escrita, o sistema operacional procura reter na memória principal o máximo de dados possíveis antes de transferi-los para o disco. Este sistema de cache em memória é tão eficiente quanto a quantidade de memória disponível para o sistema operacional utilizar em operações de leitura e escrita. A Figura 2 ilustra a variação de desempenho de leitura e escrita de um computador com 256 Mbytes de memória para diferentes tamanhos de arquivo entre 10 Mbytes e 1 Gbyte. Fica evidente desta figura que para tamanhos de arquivo menores que a memória principal disponível, qualquer medida de desempenho revela apenas a eficiência da estratégia de cache de leitura e escrita do sistema operacional. De uma forma geral, dos três fatores considerados relevantes para a avaliação de desempenho de um computador, a análise de desempenho do sistema de discos mostra-se o mais complexo e mais difícil de ser reduzido a um ou mais índices de desempenho que permitam comparar dois computadores. Vários programas foram desenvolvidos para tentar quantificar o desempenho de disco sob diferentes situações e visando diferentes aplicações15-18. Neste trabalho nos resumiremos ao programas IOzone16 e Bonnie15. O programa IOzone realiza uma análise automática do desempenho do sistema de discos em função do tamanho do bloco de dados usado para leitura e escrita sequencial produzindo resultados como os da Figura 1. Esta informação depende das características do sistema operacional e da tecnologia do controlador de disco. Conforme discutido acima, esta medida deve ser feita utilizando arquivos de teste de tamanho igual ou superior ao da memória principal do computador para evitar falsos resultados do sistema de cache. O resultado obtido por medidas com este programa reflete como um todo o desempenho do sistema de discos como usado por um programa normal, incluindo a eficiência do sistema operacional e das bibliotecas de leitura e escrita do sistema. O programa Bonnie trabalha com tamanho de bloco fixo e igual a 8192 bytes e realiza as seguintes medidas de desempenho:

• Velocidade de leitura e escrita de caracteres e a porcentagem de uso do processador nestas operações;

• Velocidade de leitura e escrita de blocos de 8 kbytes e a porcentagem de uso do processador nestas operações;

• Velocidade de busca e acesso aleatório aos blocos de um arquivo e a porcentagem de uso do processador nestas operações;

 

 

 

Os resultados obtidos pelo Bonnie não necessariamente indicam o desempenho máximo de um sistema de discos por trabalharem com tamanho de bloco fixo, mas refletem o desempenho médio que um computador terá com programas de uso rotineiro. Isto permite comparar computadores com diferentes marcas e modelos de discos e controladores. A medida do custo computacional das operações, expressa pela porcentagem de uso do processador em cada etapa do teste, permite avaliar a relação real entre velocidade de acesso aos discos e perda de capacidade de processamento para os cálculos enquanto estas operações ocorrem. Um exemplo extremado deste compromisso pode ser encontrado em disquetes Zip que utilizam a porta paralela. Neste caso pode-se consumir até 98% de CPU para transferir um arquivo, inutilizando o computador para outras tarefas. A análise feita pelo Bonnie permite identificar as melhores implementações das tecnologias ATA e SCSI e as melhores combinações de controladores e discos.

 

UM EXEMPLO, ANÁLISE DE DOIS MICROCOMPUTADORES

Todos os três programas descritos podem ser obtidos gratuitamente nos locais indicados nas referências. A sua compilação é simples e exige apenas um compilador C ou Fortran como os da GNU disponíveis no Linux. Em um cenário ideal, onde o pesquisador deseja avaliar ou comparar máquinas de diferentes fabricantes para decidir qual é mais adequada para a sua pesquisa, a execução destes programas em vários modelos de computadores fornecerá as informações necessárias para identificar qual equipamento oferece o melhor desempenho pelo menor custo. Como exemplo do uso destes programas, analisaremos dois computadores adquiridos através de licitação em momentos diferentes pelo grupo de química teórica do IQ Unicamp para realizar cálculos ab initio e simulações moleculares. Um dos computadores possui um processador Celeron da geração Pentium II e opera com velocidade de 400 MHz, o outro possui um processador Pentium III com velocidade de 450 MHz. Ambos são equipados com discos de tecnologia ATA e possuem 128 Mbytes de memória principal. Levando em consideração apenas estes fatores, o senso comum esperaria encontrar no Pentium III o melhor desempenho. Uma análise utilizando o programa IOzone com arquivos de teste de 200 Mbytes mostrou que ambos computadores apresentam um desempenho adequado e semelhante de discos para leitura e escrita com blocos de 8 kbytes embora o Pentium III degrade seu desempenho se comparado ao Celeron. A medida da velocidade de acesso aos discos foi obtida utilizando o programa Bonnie e arquivos de teste de 200 Mbytes. Os resultados mostraram uma ligeira superioridade de 5% do sistema de discos do Celeron em relação ao Pentium III. Nas medidas de desempenho de ponto flutuante com o programa flops espera-se que o Pentium III apresente uma performance igual ou ligeiramente superior a razão das velocidades dos processadores, 450/400 = 1,125. Os resultados obtidos mostram valores entre um mínimo de 1,119 para série número 2 e um máximo de 1.174 para a série número 7 com uma razão média de 1.141, indicando que houve um aprimoramento, por parte do fabricante, na unidade aritmética de ponto flutuante entre a geração Pentium II e Pentium III de processadores. As medidas de velocidade de acesso à memória utilizando o programa STREAM , no entanto, mostraram um desempenho medíocre do computador equipado com o Pentium III em relação ao computador equipado com o Celeron. Enquanto neste último caso as velocidades de acesso situaram-se entre 292 e 340 MBytes/s, as velocidades correspondentes para o outro computador situaram-se apenas entre 90 e 107 MBytes/s. Isto significa que apesar do desempenho superior nos cálculos de ponto flutuante, o sistema de memória do computador equipado com o Pentium III não possui capacidade para sustentar este desempenho em programas que acessem com frequência grandes volumes de dados em memória. Esta diferença de desempenho pode ser atribuida aos controladores de memória. O Celeron utiliza um controlador Intel BX, enquanto que o Pentium III está equipado com um controlador SiS. O desempenho medíocre deste componente terminou invertendo completamente a lógica que atribui ao processador de modelo mais moderno e velocidade maior o melhor desempenho. Dificilmente, entretanto, em compras efetuadas através de licitações públicas, pode-se ditar especificações além de capacidade de discos, memória e modelo de processador. Neste caso, a diferença de preços dos componentes da placa mãe associou um processador rápido a um sistema de discos e memória lentos e inadequados para a computação científica.

 

CONSIDERAÇÕES FINAIS

Ao longo deste texto foram apresentados as técnicas e os componentes básicos para análise de desempenho de computadores utilizando programas públicos e de fácil compilação e execução. A análise dos resultados fornecidos por esses programas fornece indicadores mais consistentes sobre o desempenho esperado de um microcomputador do que a marca, o modelo ou velocidade do processador que o acompanha. Estes indicadores permitem que um pesquisador sinta-se mais à vontade em um processo de seleção e compra de equipamentos de acordo com as demandas do seu projeto de pesquisa. Alguns resultados negativos de desempenho do sistema de memória compromentem cálculos MCSCF ou programas de visualização cientfica, mas podem não afetar o desempenho de cálculos de simulação. Um processador mais rápido pode ser essencial na área de cálculos, mas irrelevante para projetos de automação em química ou edição de textos. Com certeza, existem outros métodos e programas para a análise de desempenho tão ou mais adequados do que os apresentados neste texto. McCormick19 coletou uma série de programas de teste para avaliação dos mais diversos aspectos de desempenho computacional. Para microcomputadores que utilizam sistemas operacionais da Microsoft, também podem ser obtidos diversos testes e resultados associados a este sistema20. A desvantagem destes testes é que eles não permitem comparar um microcomputador de arquitetura Intel com uma estação de trabalho RISC. Do ponto de vista estrito da química computacional, os melhores testes consistem na execução dos programas que o pesquisador utiliza. Infelizmente nem sempre isto é possível nas etapas que antecedem um processo de especificação e compra de um equipamento. Uma estratégia adotada ao longo da década de 90 tentou contornar essa situação fazendo medidas de tempo de execução do programa ab initio GAMESS21 em quatro tipos de cálculos considerados representativos. Estes resultados eram publicados e a sua análise permitia ao pesquisador adquirir uma visão global de desempenho dos mais variados tipos de marcas e modelos de computador. A mesma estratégia pode voltar a ser adotada atualmente. Tanto os programas GAMESS e Dalton22 para cálculos ab initio, quanto os programas moldy23 ou M.Dynamix24 são públicos e gratuitos e podem ser adotados como referências de desempenho entre marcas e modelos diferentes de microcomputadores. A análise criteriosa de desempenho de microcomputadores utilizando as técnicas e programas apresentados neste texto será, sempre, um indicador mais preciso das capacidades dos equipamentos que os índices usados para propaganda tais como velocidade do processador em MHz ou GHz, o modelo ou a tecnologia do disco. Sempre que for possível realizar este tipo de estudo antes da aquisição de um equipamento, será também possível evitar equívocos como a compra do Pentium III que foi analisado acima. Neste caso, um Celeron seria bem mais barato e atenderia adequadamente ao pesquisador. Em projetos de médio ou grande porte e envolvendo um cluster de computadores a soma destes fatores torna-se ainda mais importante.

 

AGRADECIMENTOS

O autor agradece ao Dr. Fábio C. Gozzo e ao Sr. André S. P. Gomes pelo acesso aos seus computadores para realização de algumas das medidas cujos resultados foram apresentados neste trabalho e ao apoio financeiro do FAEP/Unicamp (projeto 0692/00) e NIC/Br.

 

REFERÊNCIAS

1. Dowd, K.; High Performance Computing; O'Reilly & Associates, Inc.; Sebastopol, Ca, EUA, 1 ed.; 1993.         [ Links ]

2. Dongarra, J.; The Linpack Benchmark; UTK & Netlib; 1998; http://www.netlib.org         [ Links ]

3. SPECmarks, spec89, spec92, spec95 e spec99; Systems Performance Evaluation Cooperative; 1989-2000; http://www.spec.org         [ Links ]

4. Torvalds, L.; GNU/Linux The Debian Distribution; Debian Org; 1995; http://www.debian.org         [ Links ]

5. UCB, FreeBSD-Inc., The FreeBSD Project; FreeBSD Inc.; http://www.freebsd.org, 1992.         [ Links ]

6. Becker, D.; Mecker, P.; The Beowulf Project; Scyld Computing Corporation; http://www.beowulf.org, 2000.         [ Links ]

7. Henry, G.; ASCI Red Pentium II BLAS 1.2F; ASCI Red Project Archives; http://www.cs.utk.edu/ghenry/distrib/, 1997.         [ Links ]

8. Dongarra, J.; ATLAS Automatically Tuned Linear Algebra Software; University of Tenesee Kentucky; http://www.netlib.org/atlas, 1999.         [ Links ]

9. Bilmes, J.; Asanovi, K.; Demmel, J.; Lam, D.; Chin, C.; PHiPAC: A Portable, High-Performance, ANSI C Coding Methodology and its application to Matrix Multiply; LAPACK Working Note 111, University of Tennessee, 1996.         [ Links ]

10. Bilmes, J. A.; Asanovic, K.; Vudoc, R.; Iyer, S.; Demmel, J.; Chin, C.; Lam, D.; The PHiPAC, Portable High Performance ANSI C for BLAS3 Compatible Fast Matrix Matrix Multiply; UCB; http://www.icsi.berkeley.edu/bilmes/phipac/, 1997.         [ Links ]

11. Aburto, A.; flops.c Version 2.0; NOSC; 1992; ftp://ftp.nosc.mil/pub/aburto         [ Links ]

12. Free Software Foundation; The GNU project C and C++ Compiler; Cambridge, MA, EUA, 1993-99; http://www.gnu.org.         [ Links ]

13. McCalpin, J. D.; IEEE Technical Committee on Computer Architecture (TCCA) Newsletter 1995; http://www.computer.org/tab/tcca/NEWS/DEC95/DEC95.HTM ,.         [ Links ]

14. McCalpin, J. D.; STREAM: Sustainable Memory Bandwidth; 1995; http://www.cs.virginia.edu/stream/         [ Links ]

15. Bray, T.; Bonnie, a filesystem benchmark; 1991; ftp://ftp.sunet.se/pub/benchmark/Bonnie/Bonnie.tar.Z .         [ Links ]

16. Norcott, W. D.; Capps, D. ; IOzone, Filesystem Benchmark; Iozone Org; 2000, http://www.iozone.org/.         [ Links ]

17. Lehey, G.; Test performance of low-level storage devices; Lemis Inc.; 1999; ftp://ftp.lemis.com/pub/rawio-1.1.tar.gz         [ Links ]

18. Bass, T.; The BYTE benchmark suite; 1991; ftp://ftp.inria.fr/system/benchmark/bytebench-3.1.tar.Z         [ Links ]

19. McCormick, B.; Aburto, A.; Benchmarking; NSCW, 1998; http://www.nswc.navy.mil/cosip/may98/cots0598-1.shtml         [ Links ]

20. Pabst, T. Tom's Hardware Guides; Tom's Hardware Inc.; 2000; http://www.tomshardware.com/#guides         [ Links ]

21. Schmidt, M. W.; Baldridge, K. K.; Boatz, J. A.; Elbert, S. T.; Gordon, M. S.; Jensen, J. H.; Koseki, S.; Matsunaga, N.; Nguyen, K. A.; Su, S. J.; Windus, T. L.; Dupuis, M.; Montgomery, J. A.; J. Comput. Chem. 1993, 14, 1347.         [ Links ]

22. Helgaker, T.; Jensen, H. J. A.; Jorgensen, P.; Olsen, J.; Ruud K.; Agren, H.; Andersen, T.; Bak, K. L.; Bakken, V.; Christiansen, O.; Dahle, P.; Dalskov, E. K.; Enevoldsen, T.; Fernandez, B.; Heiberg, H.; Hettema H; Jonsson, D.; Kirpekar, S.; Kobayashi, R.; Koch, H.; Mikkelsen, V.; Norman, P.; Packer, M. J.; Saue, T.; Taylor, P. R.; Vathras, O.; Dalton, an ab initio electronic structure program, Release 1.0 (1997); University of Oslo, Norway, 1997. http://www.kjemi.uio.no/software/dalton/dalton.html .         [ Links ]

23. Refson, K.; Comput. Phys. Commun. 2000, 126, 310.         [ Links ]

24. Lyubartsev, A. P.; Laaksonen, A.; Comput. Phys. Commun. 2000, 128, 565.         [ Links ]