A expansão da internet e a pervasão da computação são um dos principais fatores de incentivo à computação distribuída, por permitir a construção de frameworks como o Berkeley Open Infrastructure for Network Computing, mais conhecido pela sigla BOINC, capazes de fornecer um conjunto de funcionalidades para facilitar implementação de projetos baseados em computação voluntária, de forma que estes estejam ao alcance do usuário comum. Atualmente existem no mínimo uma dezena de projetos baseados neste framework, entre os quais encontra-se o Big Ugly Rendering Project, reconhecido pela sigla BURP, que visa a formação de uma Grade de Computação para renderização de imagens tridimensionais (3D) - e cuja utilização será analisada neste artigo.
Palavras-chave: Renderização, Renderização de imagens 3D, Sistemas distribuídos, BOINC, BURP.
Renderização é a última etapa do processo de modelagem de imagens 3D, entretanto, esse processo não é tão trivial e dependendo da infra-estrutura utilizada pode levar semanas ou até meses para ser concluído. Para amenizar esse problema, foi desenvolvido o Big Ugly Rendering Project - BURP, um projeto que tem como ambição formar uma rede para aproveitar os ciclos ociosos das CPUs dos computadores para a renderização dessas imagens. Ele faz uso do Berkeley Open Infrastucture For Network Computing - BOINC, uma plataforma com uma arquitetura em grid, criada para facilitar a implementação de sistemas de computação voluntária.
A proposta desse documento é apresentar a ferramenta BURP e avaliar a utilização desse tipo de ferramenta no processo de renderização de imagens 3D. Para tanto, organizou-se o conteúdo em três seções, incluindo a Introdução que apresenta o mesmo. A seção dois, BOINC, destina-se a apresentar o framework BOINC e suas principais características no contexto de sistemas distribuídos. Já a terceira e ultima seção, BURP, é aquela destinada a atender o propósito desse trabalho, uma vez que apresenta o projeto BURP e os passos necessários para sua utilização, fala da sua integração com o BOINC e dos conceitos envolvidos no processo de renderização 3D.
É um projeto opensurse, em escala mundial, que foi desenvolvido pela universidade de Berkeley e tem como foco computação voluntaria (PREVEDELLO e ANTONIOLI). De acordo com a Wikipédia1, ele constitui uma plataforma, na forma de um framework, para computação distribuída e capaz de suportar aplicações diversas. Na sua essência, o BOINC é um programa cliente que roda nos computadores de voluntários e realiza o processamento de unidades de trabalho recebidas de um servidor central que esta associado ao projeto. Sempre que as estações voluntarias não estiverem utilizando toda sua capacidade de processamento, ele entra em ação consumindo os ciclos ociosos de CPU e posteriormente enviando os resultados processados ao servidor que delegou a tarefa (PREVEDELLO e ANTONIOLI).
O BOINC tem como característica principal, ser um sistema de computação em forma de grid, o que lhe confere alto grau de heterogeneidade ao permitir a adição de diferentes tipos de recursos computacionais (ARBEX). Seu funcionamento é embasado no paradigma de computação voluntária, uma idéia surgida em meados de 1990 (PREVEDELLO e ANTONIOLI) que fala da criação de uma supercomputação através do uso da CPU ociosa dos voluntários, o que, segundo Prevedello e Antonioli, poderia ser aproveitado em projetos científicos que demandam grandes capacidades de processamento, tais como o SETI@home, cujo fim é descobrir vida em outras galáxias através da analise de sinais de rádio captados pela NASA.
A idéia de grid, ou grade computacional, não deve ser confundida com a de computação voluntaria, apesar de terem o objetivo comum de utilizar os recursos de computação existentes. Uma grade computacional é, segundo Prevedello e Antonioli (2000), aquela capaz de suportar muitos sistemas comerciais e normalmente orientados à pesquisa acadêmica, alem de fornecer mecanismos para a descoberta, acesso e compartilhamento de recursos. Por outro lado, a computação voluntaria requer muito poder de processamento e pouca entrada e saída. Entretanto, a principal diferença entre essas duas idéias está no fato de a computação voluntária utilizar-se apenas dos processadores dos computadores voluntários, enquanto que a grade computacional compartilha todos os recursos. Com isso, pode-se concluir que o BOINC consiste de uma grade computacional que facilita computação voluntária.
De acordo com Privedello, o BOINC contempla uma série de funcionalidades que o tornam cada vez mais confiável e de fácil interação, tais como mecanismos computação redundante que consiste no envio de uma unidade de trabalho para mais de uma pessoa e posterior comparação dos resultados, o que ajuda a diminuir a taxa de resultados errôneos. Outra função implementada pela ferramenta é a criação de um delay, o que diminui as chances de sobrecarga de um servidor devido a um número muito grande de tentativas de conexão. Alem desses, o BOINC também implementa mecanismos de segurança como o a assinatura de código, para impedir a distribuição de aplicações forjadas, e limite do tamanho máximo do arquivo de saída, para impedir ataques do tipo de negação de serviço.
BURP é um projeto que visa desenvolver um sistema para renderização 3D utlizando processamento distribuído pela internet. Segundo o Unofficial Boinc Wiki2, ele é uma opção barata e eficiente frente aos grandes investimentos em equipamentos de informática utilizados por sistemas comerciais. Uma de suas vantagens é o crescimento exponencial da internet, potencializando a largura de banda de rede em todo mundo e tornando este processo ainda mais interessante ao longo do tempo.
Uma das principais carceterísticas do BURP é o uso do framework BOINC como plataforma, segundo Prevedello e Anatonioli, cada usuário que participa do BURP, deve possuir o BOINC instalado em sua máquina, e configurar o grau de recursos que serão disponibilizados para o projeto, tal como CPU e espaço em disco. Após esta configuração, serão disponibilizados recursos da máquina para que o serviço de renderização seja executado.
De acordo com a wikipedia3 renderização — do inglês to render — é a última etapa do processo de geração de uma imagem 3D a partir de um modelo matemático utilizando programas de computador. Este modelo é a descrição de um objeto em uma estrutura de dados, a qual pode conter geometria, ponto de vista, textura, iluminação e informações sobre sombreamento. A imagem gerada pode ser utilizada em diversas áreas tais como Arquitetura, Entretenimento, Medicina, Engenharia, etc.
O processo de renderização tem início a partir de uma pré-imagem ou wireframe4 conforme a Ilustração 1, uma vez obtida esta imagem o software renderizador age sobre a mesma aplicando várias técnicas como adição de textura, simulação de ressalto em pequena escala sobre superfície, tecnicamente conhecido como bump-mapping, . Ilustração 2. Além de aplicação de sombras, luzes, reflexão,transparência, etc; resultando numa imagem completa e realística. O processamento digital de imagens consome muitos recursos de CPU e dependendo do grau de detalhamento da imagem e da capacidade de processamento da máquina pode levar dias para ser concluído. Visando prover ao usuário comum o poder de processamento necessário para concepção dessas imagens, surgiu o projeto BURP.
O Burp funciona de uma forma bastante simples, que resume-se basicamente em envio, recepção, processamento e reenvio de dados. De acordo com o Burp Render Farming, as pessoas que desejarem participar do projeto devem seguir os seguintes passos:
Através dos estudos realizados é possível perceber que a criação de uma rede de computação a nível mundial tem se mostrado como uma solução extremamente eficiente para muitos projetos que demandam alto poder de processamento e que até então eram inviáveis devido à limitação de processamento. Para o problema da renderização de imagens não é diferente, o tratamento de uma imagem com o BURP reduz significativamente o tempo, se o compararmos com um computador simples. Atualmente videogames e telefones celulares de última geração já estão equipados com processadores, estes quando ociosos poderiam estar cooperando com o progresso da ciência.
Boinc. Site Oficial. Disponível em: . Acesso em: 17 abr. 2010.
Como funciona o burp: Disponível em: . Acesso em: 17 abr. 2010.
PREVEDELLO, Jeferson Librelotto ; ANTONIOLI, Rafael. BOINC - Um Sistema para Computação Voluntária. PUCRS.
ARBEX, Wagner. Introdução aos Sistemas Distribuídos para Análise de Sistemas e
Sistemas de Informação. Juiz de Fora, v. 10.1, p. 1-14.
TANENBAUM, A. S.; STEEN, M. V. Sistemas distribuídos: princípios e paradigmas. 2. ed. São Paulo: Pearson Prentice Hall, 2007.
Alex Egídio. Bacharel em Sistemas de Informação.
Cristiney Costa Campos. Bacharel em Sistemas de Informação.
Fabrício Souza Costa. Bacharel em Sistemas de Informação.
João Paulo Carvalho. Bacharel em Sistemas de Informação.