Os supercomputadores

supercomputer

No outro extremo da escala de performance temos os supercomputadores, que embora muito grandes e caros, oferecem um poder de processamento milhares de vezes superior ao de qualquer desktop doméstico.

As aplicações são muitas, englobando principalmente pesquisas científicas, aplicações militares e diversos tipos de aplicativos financeiros, meteorológicos e simulações complexas; tarefas que envolvem um volume absurdo de cálculos e são necessárias para governos e instituições que podem pagar vários milhões por um computador o mais rápido possível.

O termo “supercomputador” começou a ser usado na década de 60 para distinguir os sistemas de alto desempenho dos computadores de pequeno e médio porte, destinados a tarefas secundárias. Antes disso, o termo não faria muito sentido, já que todos os computadores eram “super” no sentido de serem muito grandes e caros.

Na época existiam também os “minicomputadores”, que eram sistemas do tamanho de um armário, capazes de executar tarefas especializadas. Como pode imaginar, o termo “microcomputador” foi cunhado com o surgimento dos computadores pessoais, que eram muito menores. Hoje em dia esses termos não fazem muito sentido (afinal, hoje em dia um notebook de 3 kg é considerado “grande”), mas não deixam de ser uma curiosidade interessante.

Voltando ao tema central, o primeiro supercomputador de sucesso comercial foi o CDC 6600, lançado em 1964. Ele oferecia um poder de processamento de cerca de 3 megaflops (similar ao desempenho de um 486), um valor impressionante para a época, considerando que ele ainda era baseado em placas de circuito com transistores individuais e não em microchips.

Para atingir esse nível de desempenho, foi adotado o uso de um conjunto de instruções bastante simples, que permitia que os circuitos de processamento operassem a uma frequência de 10 MHz, compensando a falta de flexibilidade com simplicidade e potência bruta. Esta filosofia levou ao aparecimento dos processadores RISC, cujo legado pode ser encontrado mesmo nos processadores atuais da Intel e AMD, que combinam unidades de execução simplificadas com circuitos de apoio destinados a manter a compatibilidade com as instruções x86.

Assim como outros supercomputadores da época, o CDC 6600 já rodava um sistema operacional primitivo e era usado através de terminais burros, que incluíam teclado e monitor. Isso permitia que ele fosse acessado por vários usuários simultaneamente, ajudando a justificar o custo. Também eram usadas unidades de armazenamento em fita, impressoras, leitores de cartões (cartões perfurados, não cartões de memória… 🙂 e diversos outros periféricos.

super1

Na década de 70 surgiu o microchip, que além de possibilitar o surgimento dos computadores pessoais, fez com que o desempenho dos supercomputadores crescesse assustadoramente. Um bom exemplo é o Cray-1, lançado em 1976.

Ele utilizava uma unidade de processamento composta por cerca de 200 mil transistores, que processava instruções de 64 bits, operava a 80 MHz e utilizava um total de 8 MB de memória RAM. Ele oferecia um desempenho estimado em 160 megaflops, o que é similar ao oferecido por um Pentium III de 600 MHz, porém atingido 23 anos antes.

Como pode imaginar, usar um clock de 80 MHz em um supercomputador composto por várias placas de circuito separadas não era uma tarefa simples. A temporização dos ciclos de clock era tão curta que se aproximava do tempo que o sinal elétrico demorava para percorrer o circuito. Isso levou ao uso de um formato de semi-círculo (para permitir que os componentes ficassem mais próximos) combinado com um sistema de refrigeração baseado em um sistema de gás freon pressurizado. Apesar de tudo, ele era relativamente compacto para um supercomputador, pesando apenas 5.5 toneladas:

cry1

O Cray-1 marcou época e deu origem à uma família bem-sucedida de supercomputadores comerciais, incluindo o Cray XMP/4 de 1983 (que era capaz de quebrar a barreira de 1 gigaflop rodando aplicativos bem otimizados) e o Cray2/8 de 1985, que atingiu a impressionante marca de 2.4 gigaflops.

Durante a década de 90, os supercomputadores migraram para arquiteturas de processamento distribuído (basicamente, eles se tornaram clusters de grande escala), onde em vez de um único sistema (como no caso do Cray-1) são usados vários pequenos servidores, baseados em processadores da Intel, AMD ou (no caso dos supercomputadores da IBM) em processadores PowerPC ou PowerXCell:

ibm

Via de regra, cada nó utiliza de um a quatro processadores e uma quantidade suficiente de memória RAM. Em geral, são utilizadas unidades especializadas de armazenamento (cada uma com vários HDs em RAID e grandes caches de dados) em vez de HDs em cada nó, mas isso não é uma regra.

Um nó sozinho possui poder de processamento similar ao de um servidor (ou mesmo de um PC doméstico) high-end. O grande segredo é a forma como eles são interligados (usando interfaces de rede ou alguma interface proprietária), o que os torna partes do mesmo sistema de processamento, assim como neurônios interligados para formar um cérebro. Com isso, o grande limite passa a ser o capital disponível, já que é possível obter mais processamento adicionando mais nós.

Essa abordagem permitiu simplificar o desenvolvimento e reduzir drasticamente os custos por unidade de processamento. Embora supercomputadores como o Roadrunner e o Jaguar custem dezenas de milhões de dólares, o custo por teraflop de processamento é muitas vezes inferior ao de um PC doméstico. Basicamente, os supercomputadores se tornaram uma opção de processamento “no atacado”, contrabalançando o sistema “de varejo” oferecido pelos desktops.

Outro efeito colateral é que com o processamento distribuído o poder de processamento dos supercomputadores passou a avançar muito mais rápido, com a diferença entre eles e os PCs domésticos aumentando rapidamente em vez de diminuir.

Um bom lugar para se manter informado sobre os avanços na área é a lista do Top500, que duas vezes por ano publica um ranking atualizado dos 500 supercomputadores mais poderosos do mundo: https://www.top500.org/

A performance é estimada através do HPL, uma versão especializada do Linpack destinada a sistemas de processamento distribuído, que mede o desempenho bruto em cálculos de ponto flutuante. Embora não seja perfeito, o teste oferece uma boa estimativa do desempenho em situações reais, já que (diferente do que temos nos PCs domésticos), os softwares usados são quase sempre bem otimizados para cada arquitetura, extraindo o máximo de desempenho do equipamento.

Entre novembro de 2004 e junho de 2008, o computador mais rápido do planeta foi o IBM Blue Gene/L, um descendente do Deep Blue (que derrotou Garry Kasparov no xadrez em 1997). Ele era originalmente composto por de 65.532 processadores Dual PowerPC 440 (131.072 núcleos no total), com 32 terabytes de memória RAM, 1.01 petabytes de armazenamento e um poder de processamento bruto de 280.6 teraflops.

Em vez de utilizar chips x86 e placas-mãe para servidores, a IBM optou por utilizar um layout especializado, privilegiando a densidade. O componente básico são placas (batizadas de “compute cards”) contendo dois processadores PowerPC 440 dual-core (4 núcleos por placa no total) com 1 GB de memória DDR (512 MB por chip) e uma interface de comunicação. Os chips operam a apenas 700 MHz, o que foi uma decisão deliberada para reduzir o consumo e permitir agrupar um maior número de chips por gabinete:

multichip

As placas com os processadores são espetadas em placas de interface (batizadas de “node boards”), cada uma contendo 16 compute cards (ou seja, 32 chips) e mais dois nós de interface, destinados a coordenar a comunicação e executar funções de gerenciamento:

nodeboards

As node boards são então montadas em racks, cada um contendo 32 placas (1024 chips no total), com a comunicação entre as placas e entre os racks sendo feita através de interfaces de rede.

A versão inicial do Blue Gene/L era composta por 64 destes racks, organizados em filas de oito, o que formava um conjunto relativamente pequeno (considerando o enorme número de placas e processadores), que ocupava cerca de 230 metros quadrados. Esta foto de divulgação da IBM mostra parte das instalações:

blue gene

O Blue Gene/L foi atualizado em 2007, o que elevou os totais para 106.496 processadores, 69 TB de memória e 1.9 PB de armazenamento, com um desempenho bruto de 478.2 teraflops. Isso aumentou bastante a sobrevida do sistema, permitindo que ele continuasse por mais um ano no topo da lista.

Em 2008 o Blue Gene/L perdeu o posto de mais rápido para o Roadrunner, outro sistema da IBM, dessa vez baseado em uma combinação de processadores AMD Opteron 2210 e processadores PowerXCell, fabricados pela própria IBM.

O Roadrunner inclui um total de 19.440 processadores, sendo 6480 Opterons dual-core e 12960 PowerXCells, acompanhados por 103.6 TB de memória RAM e processadores adicionais para gerenciamento de dados e comunicação. Isso resultou em um desempenho bruto de 1.1 petaflops (1105 teraflops), mais que o dobro do oferecido pela versão atualizada do Blue Gene/L.

Apesar disso, o Roadrunner não ficou muito tempo no topo da lista. Em 2009 ele foi superado pelo Cray XT5-HE (Jaguar), que oferece um desempenho bruto de 1.76 petaflops

O XT5-HE é também baseado em processadores da AMD, desta vez com o Opteron de 6 núcleos, baseado no core Istambul. Ele inclui um total de nada menos que 37.376 processadores, ou seja, 224.256 núcleos (um quarto de milhão!).

Diferente do Blue Gene/L e do Roadrunner que utilizam uma arquitetura própria, ele utiliza a arquitetura padrão para processadores AMD, com links HyperTransport e chipsets regulares, com dois processadores e 16 GB de memória RAM por nó. A única grande diferença em relação à arquitetura de um servidor típico é que ele utiliza placas especiais, que agrupam 4 nós em cada gabinete, aumentando a densidade. Na foto abaixo temos um dos gabinetes usados no Jaguar, onde você pode notar os quatro pares de processadores espetados na mesma placa:

hackjaguar

O Jaguar inclui nada menos que 4.672 gabinetes como este, ligados através de uma topologia proprietária de rede, com um total de 300 TB de memória e 10 PB de armazenamento centralizado.

Naturalmente, supercomputadores como este são acessíveis apenas para apenas algumas poucas empresas e governos. Uma opção mais barata para instituições que precisam de um supercomputador, mas não possuem muito dinheiro disponível, é usar um sistema de processamento distribuído, ou cluster. Um cluster formado por vários PCs comuns ligados em rede.

O exemplo mais famoso de processamento distribuído é o projeto Seti@Home, onde cada voluntário instala um pequeno programa que utiliza os ciclos de processamento ociosos da máquina para processar as informações relacionadas ao projeto.

Esse tipo de sistema pode ser construído usando, por exemplo, a rede interna de uma empresa. Rodando o software adequado, todos os micros podem fazer parte do sistema, alcançando juntos um poder de processamento equivalente ao de um supercomputador. O mais interessante é que esses PCs poderiam ser usados normalmente pelos funcionários, já que o aplicativo rodaria utilizando apenas os ciclos ociosos do processador.

A tecnologia de cluster mais usada atualmente são os clusters Beowulf, formados por vários computadores interligados em rede. Não é necessário nenhum hardware muito sofisticado: um grupo de PCs parrudos, ligados através de uma rede gigabit já é o suficiente para montar um cluster Beowulf capaz de rivalizar com muitos supercomputadores em poder de processamento. A ideia é criar um sistema de baixo custo, que possa ser utilizado por universidades e pesquisadores com poucos recursos.

O primeiro cluster Beowulf foi criado em 1994 na CESDIS, uma subsidiária da NASA. Ele era formado por 16 PCs 486 DX-100 ligados em rede. Para manter a independência do sistema e baixar os custos, os desenvolvedores optaram por utilizar o Linux.

Os clusters não servem para processar dados em tempo real (um jogo qualquer por exemplo), mas apenas para processar grandes quantidades de dados, que podem ser quebrados em pequenas partes e divididos entre os vários computadores. Uma área onde são populares é na aplicação de efeitos especiais e renderização de imagens para filmes de cinema. Há inclusive casos de filmes como o Shrek e o Final Fantasy, que foram renderizados inteiramente utilizando clusters Beowulf.

Postado por
Siga em:
Compartilhe
Deixe seu comentário
Assine nossa Newsletter
Assine nossa newsletter e receba nossa seleção de conteúdo sobre tecnologia, games, IA e internet em seu email.
Veja também
Publicações Relacionadas
Img de rastreio
Localize algo no site!