Por que Algoritmos Suck e Computadores Analógicos são o Futuro
Eu sei que a manchete deste artigo pode soar um pouco provocante, mas é verdade: A computação algorítmica não é muito bem dimensionada quando se trata de problemas que requerem imensa capacidade de processamento.
Veja apenas a última lista Top500 de computadores de alto desempenho. Atualmente, o supercomputador mais poderoso é o Sunway TaihuLight no National Supercomputing Center em Wuxi, China. Este gigantesco super computador oferece 93 petaflops (um petaflop equivale a um quadrilhão de operações de ponto flutuante por segundo), o que é realmente insondável.
Supercomputadores e Consumo de Energia
No entanto, este enorme poder de processamento tem um custo. Neste caso são necessárias 10.649.600 unidades de processamento, os chamados núcleos, que consomem 15.371 megawatts – uma quantidade de eletricidade que poderia alimentar uma pequena cidade de cerca de 16.000 habitantes com base em um consumo médio de energia igual ao de São Francisco.
Se desviarmos nossa atenção dos supercomputadores mais potentes e nos concentrarmos nos mais eficientes em termos energéticos, encontraremos o sistema TSUBAME3.0 no Instituto de Tecnologia de Tóquio no topo da lista Green500. Ele fornece 14,11 gigaflops/watt com um consumo total de energia de “apenas” 142 kilowatts necessários para os seus 36288 núcleos. Em termos de eficiência energética, isto é cerca de 2 vezes melhor que o TaihuLight. Mas 142 kilowatts ainda é uma enorme quantidade de energia elétrica.
Mas não existem supercomputadores que não requerem tanta energia para funcionar? De facto, há: O cérebro humano é um grande exemplo – o seu poder de processamento é estimado em cerca de 38 petaflops, cerca de dois quintos do de TaihuLight. Mas tudo o que ele precisa para funcionar é de cerca de 20 watts de energia. Watts, não megawatts! E ainda assim executa tarefas que – pelo menos até agora – nenhuma máquina foi capaz de executar.
“Não existem supercomputadores que não necessitem desta quantidade de energia para funcionar? De facto, existem: O cérebro humano é um grande exemplo.”
O que causa esta diferença? Primeiro de tudo, o cérebro é um computador especializado, por assim dizer, enquanto sistemas como TaihuLight e TSUBAME3.0 são máquinas de uso muito mais geral, capazes de enfrentar uma grande variedade de problemas.
Máquinas como estas são programadas por meio de um algoritmo, um chamado programa. Basicamente esta é uma sequência de instruções que cada processador executa lendo-as a partir de um subsistema de memória, descodificando instruções, recolhendo operandos, realizando a operação solicitada, armazenando os resultados, etc.
Um supercomputador económico: O cérebro humano
Todos estes pedidos de memória requerem uma quantidade substancial de energia e retardam consideravelmente as coisas. Ter centenas de milhares de núcleos individuais também requer um intrincado tecido de interconexão para trocar dados entre núcleos conforme necessário, o que também aumenta o tempo e a potência necessários para realizar um cálculo.
Um cérebro, por outro lado, trabalha com uma abordagem completamente diferente. Não há nenhum programa envolvido no seu funcionamento. Ele é simplesmente “programado” pelas interconexões entre seus componentes ativos, na maioria chamados de neurônios.
O cérebro não precisa ir buscar instruções ou dados de qualquer memória, decodificar instruções, etc. Os neurônios recebem dados de entrada de outros neurônios, operam sobre esses dados e geram dados de saída que são alimentados para os neurônios receptores. OK – isto é um pouco simplista, mas é suficiente para nos levar às seguintes questões:
- 1. Não existe um equivalente electrónico de tal arquitectura informática?
- 2. Será que precisamos mesmo de supercomputadores de uso geral?
- 3. Poderia um sistema especializado ser melhor para resolver alguns problemas?
A resposta à primeira pergunta é: Sim, existe um equivalente electrónico de tal arquitectura.
Chama-se computador analógico.
Enter Computadores Analógicos
“Analógico” deriva da palavra grega “analogon” que significa “modelo”. E isso é exatamente o que é um computador analógico: Um modelo para um determinado problema que pode então ser usado para resolver esse mesmo problema por meio da sua simulação.
Os chamados analógicos diretos – confiando no mesmo princípio subjacente ao problema que está sendo investigado – formam a classe mais simples de tais métodos analógicos. As bolhas de sabão usadas para gerar superfícies mínimas são um exemplo clássico disso.
“Um computador analógico é um modelo para um determinado problema que pode então ser usado para resolver esse mesmo problema por meio da simulação”.
Uma classe mais geralmente utilizável contém analogias indiretas que requerem um mapeamento entre o problema e o domínio de computação. Tipicamente tais analogias são baseadas em circuitos eletrônicos analógicos como verões, integradores e multiplicadores. Mas eles também podem ser implementados usando componentes digitais, neste caso são chamados de analisadores diferenciais digitais.
As duas abordagens compartilham uma característica: não há um programa armazenado que controla o funcionamento de um computador desse tipo. Ao invés disso, você o programa muda a interconexão entre seus muitos elementos de computação – como um cérebro.
De Analógico para Híbrido Computadores
Protótipo do meu próprio computador analógico, que é um exemplo de um computador analógico-eletrônico clássico. O crisscross de fios pode ser descrito como o programa da máquina. Neste caso ele é configurado para simular o fluxo de ar em torno do chamado airfoil Joukowsky – não uma tarefa trivial.
Todos os elementos de computação da máquina funcionam em completo paralelismo sem memória central ou distribuída para acessar e esperar. Você programa o computador ligando e desligando os cabos de patch. Isto pode ser bastante útil para um único pesquisador e para fins de ensino, mas para um verdadeiro computador analógico de uso geral teria que se livrar deste procedimento manual de remendo.
Felizmente, com a tecnologia eletrônica atual é possível construir circuitos integrados contendo não apenas os elementos básicos de computação, mas também uma barra transversal que pode ser programada a partir de um computador digital conectado, eliminando assim o ninho de fios do rato por completo.
Tantos computadores analógicos atingem uma potência computacional extremamente alta para certas classes de problemas. Entre outros, eles são insuperáveis para resolver problemas baseados em equações diferenciais e seus sistemas – o que se aplica a muitos dos problemas mais relevantes da ciência e tecnologia de hoje.
Por exemplo, em um artigo de 2005, Glenn E. R. Cowan descreveu um Computador Analógico Integrado em Muito Grande Escala (VLSI), ou seja, um computador analógico em um chip, por assim dizer. Este chip forneceu 21 gigaflops por watt para uma certa classe de equações diferenciais, o que é melhor do que o sistema mais eficiente em termos de energia da lista Green500.
The Analog Future of Computing
Analog computing, que foi a forma predominante de computação de alto desempenho até os anos 70, tem sido largamente esquecida desde que os computadores digitais de programa armazenados de hoje tomaram posse. Mas chegou a hora de mudar isso.
“As aplicações de amanhã exigem potências de computação mais fortes a níveis de consumo de energia muito mais baixos. Os computadores digitais não podem fornecer isso.”
As aplicações do futuro exigem potências computacionais mais fortes com níveis de consumo de energia muito mais baixos. Mas os computadores digitais simplesmente não podem fornecer isso fora da caixa. Então já é hora de começar a desenvolver modernos co-processadores analógicos que tiram a carga de resolver complexas equações diferenciais dos computadores tradicionais. O resultado seria os chamados computadores híbridos.
Estas máquinas poderiam oferecer maior potência computacional do que os supercomputadores atuais com consumo de energia comparável ou poderiam ser usadas em áreas onde apenas pequenas quantidades de energia estão disponíveis, como controladores implantados na medicina e outros sistemas incorporados.
Desafios futuros
Computação claramente analógica tem grande promessa para o futuro. Um dos principais problemas a resolver será que a programação de computadores analógicos difere completamente de tudo o que os estudantes aprendem na universidade hoje.
Nos computadores analógicos não há algoritmos, não há loops, nada como eles o conhecem. Em vez disso, há um par de elementos computacionais básicos, mas poderosos, que precisam ser interconectados inteligentemente para configurar um analógico eletrônico de algum problema descrito matematicamente.
Desafios tecnológicos, como poderosas interconexões ou elementos computacionais altamente integrados, mas precisos, parecem menores em comparação a este desafio educacional. No final, mudar a forma como as pessoas pensam sobre programação será o maior obstáculo para o futuro da computação analógica.