Michael Stanton

WirelessBrasil

Ano 2004       Página Inicial (Índice)    


28/11/2004
Computação distribuída pública

Até uns vinte anos atrás, os únicos computadores em uso eram de empresas, e em geral era máquinas isoladas, não interligadas com outras. No início dos anos 1980 esta situação foi modificada para sempre por duas inovações fundamentais: o computador pessoal (ou PC) e o interconexão de computadores em rede, especialmente a Internet. Já sabemos muito bem o impacto destas inovações em termos de novas facilidades de comunicação agora disponíveis largamente: o correio eletrônico, serviço de mensagens, navegação WWW, troca de músicas e filmes, até telefonia e videoconferência. Todos estes serviços estão, em última análise, dirigidos aos usuários finais, que são as pessoas (físicas) nas suas residências e locais de trabalho.

Esta diversidade de funções de comunicação esconde o fato que as máquinas que usamos são fundamentalmente os mesmos computadores de antes, só que hoje muitas vezes bem mais potentes do que seus antepassados de antes da dupla revolução da computação pessoal e da comunicação em rede. Os usos tradicionais dos computadores eram (e são) de processar informação, e eles podem ser imaginados como possuindo uma memória para armazenar informação e um processador para manusear esta informação. Tipicamente as aplicações são divididas entre aquelas onde predomina o volume de informação manuseada, sendo pouco complexo o manuseio desta informação, e outras onde predomina a complexidade ou extensão do processamento da informação. Para as primeiras vale mais o acesso a grandes bases de informação, como têm, por exemplo, os bancos, enquanto as segundas precisam de computadores velozes para realizar longos cálculos sobre as informações manuseadas.

Esta segunda categoria de aplicações sempre vem exigindo aumentos de capacidade computacional, com computadores sempre mais velozes. É evidente também, que assim que se consiga construir um computador suficientemente rápido para atender um determinado objetivo de velocidade, alguém vai inventar um trabalho ainda mais exigente. Não há limites visíveis à ambição dos usuários destas aplicações.

No Brasil usamos uma série de computadores de "alto desempenho", trazido a grande custo para o país para resolver estes problemas ditos computacionalmente intensivos. Desde os primeiros computadores instalados na PUC do Rio de Janeiro nos anos 60 e 70, até os supercomputadores Cray adquiridos pela UFRJ e pela UFRGS nos anos 1990, e as várias gerações de grandes computadores da marca NEC instalados no Centro de Previsão do Tempo e Estudos Climáticos (CPTEC) do Instituto Nacional de Pesquisas Espaciais (INPE) em Cachoeira Paulista, há um aumento contínuo e significativo de desempenho dos maiores computadores do país. Naturalmente estas soluções são relativamente caras também.

O advento e rápido avanço das tecnologias de comunicação abriram outras alternativas ao grande "supercomputador", através da cooperação através da interconexão em rede de um número potencialmente grande de computadores menores, que juntos possuiriam maior capacidade computacional, a um preço menor, do que os maiores computadores individuais. Aqui tem dois modelos: o "cluster" ou grupo de computadores no mesmo local utilizando entre si conexões de grande capacidade, e o sistema geograficamente distribuído, onde os computadores participantes estão interconectados a distância por meio de uma rede como a Internet. Estes são os casos extremos, pois há outras possibilidades, inclusive a combinação destes dois modelos, onde se usa um coleção de "clusters" interligados em rede de longa distância - a chamada grade computacional.

Vamos nos concentrar aqui no sistema geograficamente distribuído, onde os computadores são de donos diferentes, espalhados geograficamente. O exemplo mais interessante é o caso dos computadores domésticos com conexão à Internet. Hoje em dia há literalmente centenas de milhões de computadores domésticos espalhados pelo mundo, que passam boa parte de cada dia sem uso. (Deve-se notar que vale o mesmo para os computadores usados nos escritórios, onde seus usuários ficam 40 ou 50 horas por semana de 168 horas.) A partir de 1997 várias pessoas independentemente pensaram em maneiras de aproveitar a capacidade computacional ociosa de muitos destes computadores para realizar grandes tarefas. Evidentemente, como os computadores são de propriedade alheia, é necessário conseguir a colaboração voluntária dos seus donos, e isto requer certo trabalho de convencimento.

Os primeiros projetos deste tipo envolviam a resolução de grandes problemas matemáticos, tais como a identificação de novos números primos no projeto GIMPS - "Great Internet Mersenne Prime Search", ou seja, a grande procura pela Internet dos números primos de Mersenne (www.mersenne.org/prime.htm), ou a decifração de mensagens cifradas (www.distributed.net). Participaram nestes trabalhos algumas dezenas de milhares de indivíduos, mas o apelo popular destes projetos é relativamente limitado.

O estouro da boiada veio com o projeto SETI@home, lançado em 1999 (v. setiathome.ssl.berkeley.edu). SETI significa "Search for Extraterrestrial Intelligence" (busca de inteligência extraterrestre), onde os computadores são usados para analisar sinais de rádio captados por radiotelescópios em busca de evidência de origem inteligente. O projeto SETI@home pretendia recrutar para este trabalho os computadores domésticos e sua implementação é muito simpática: substitui o software de protetor de tela por outro que realiza os cálculos quando ninguém está usando o teclado. Além disto, o próprio objetivo do projeto é de apelo popular intrinsecamente maior do que dos projetos anteriores, pois parece um anseio do homem descobrir que não estamos sozinhos neste universo e que existe vida inteligente fora do planeta Terra. A resposta foi muito forte, e milhões de voluntários se apresentaram para participar nesta busca aparentemente exótica.

O software desenvolvido para o projeto SETI@home foi recentemente reformulado e relançado com o nome BOINC (Berkeley Open Infrastructure for Network Computing), que se descreve como "uma plataforma de software para computação distribuída usados recursos computacionais de voluntários" (boinc.berkeley.edu). O objetivo foi torná-lo menos específico, permitindo a fácil criação de outros projetos estruturalmente semelhantes. Alem de SETI@home, o software hoje é usado em diversos outros projetos, incluindo a previsão climática (v. http://climateprediction.net), a detecção das ondas gravitacionais previstas por Einstein - Einstein@home (v. www.physics2005.org/events/einsteinathome), o desenho do novo acelerador do CERN - LHC@home (v. athome.web.cern.ch/athome), e a solução de problemas biomédicos e a investigação de doenças relacionadas a proteínas - Predictor@home (v. predictor.scripps.edu).

Para uma lista mais extensa de projetos semelhantes, usando também outras plataformas além de BOINC, deve-se consultar o verbete "Distributed Computing" (em inglês) da enciclopédia Wikipedia (en.wikipedia.org/wiki/Distributed_computing). Outro artigo interessante sobre aspectos públicos destes projetos (também em inglês) se encontra em boinc.berkeley.edu/talks/madrid_03/madrid.html.

O sítio do software BOINC discute as características de projetos apropriados (v. boinc.berkeley.edu/parallelize.php). Três destas são requisitos técnicos, que permitem a divisão da computação entre grande número de computadores sem comunicação entre si. A quarta é o apelo popular do problema, fundamental para motivar os donos dos computadores a voluntariar sua participação.

Para mim, o mais importante do software BOINC não são necessariamente os projetos já em andamento, mas as possibilidades que ele abre para montar novos projetos, por exemplo para resolver problemas brasileiros usando os recursos computacionais disponíveis no país. Seria muito interessante realizar uma comparação entre o uso de recursos convencionais para a solução de problemas de interesse ao público, e o uso de recursos deste público para a mesma finalidade. Entretanto requer o convencimento já mencionado. Num mundo em que tem tanta exploração mal intencionada dos computadores alheios através do "spam" e de outras moléstias da vida cotidiana, seria realmente refrescante voltar a encorajar novamente o altruísmo dos usuários, através da sua participação numa atividade comunitária para um bem público.