sábado, 11 de fevereiro de 2017

Dividindo para conquistar


Você já conhece o World Community Grid? Não? E computação paralela? Também não? Hora de conhecer.




Mas primeiro, o que é computação voluntária/paralela?
Imagine que um cozinheiro tem que fazer um bolo com a seguinte receita:



Massa de Chocolate:
Bata na batedeira com o batedor globo os ovos inteiros e o açúcar até que dobre de volume. Em seguida, junte os líquidos (leite e óleo) e bata por mais 2 minutos. Retire a mistura da batedeira e junte os secos, misturando com o auxilio de um fouet. Pese a massa e divida em 3 formas de 23 cm de diâmetro. Leve para assar em forno pré-aquecido (180ºC) por aproximadamente 15 minutos.

Para o Recheio Cheesecake de baunilha:
Derreta o chocolate e junte a fava de baunilha e o creme de leite. Reserve até esfriar.
Bata o cream cheese e o açúcar por 5 minutos. Junte a mistura de chocolate branco fria e reserve para a montagem.

Para a Cobertura – Buttercream de Frutas Vermelhas:
Bata manteiga, o glaçúcar até obter um creme liso e homogêneo. Junte o cream cheese e bata rapidamente. Junte a pasta e reserve.



Ora, se apenas um cozinheiro preparar a receita, ele terá que fazer cada parte do bolo separadamente, tendo como tempo de preparo a soma dos tempos para fazer cada parte. Porém e se dois assistentes dele se prontificarem a ajudar? Com cada um fazendo uma parte da receita, o bolo seria feito de forma mais rápida e eficiente. Passando para a computação, os computadores são como os cozinheiros e um grande projeto a ser processado, a receita. Se apenas um computador tiver que processar uma grande entrada de dados, o tempo para terminar será demasiado longo, porém ao dividir por meio da Internet pequenos fragmentos de dados entre vários computadores conectados, os resultados sairão em um tempo mais viável.

Voltando ao WCG, o que será que ele é?



O World Community Grid é uma iniciativa da empresa IBM tendo como objetivo criar o maior supercomputador público do mundo usando da computação paralela. Com o uso do programa BOINC -Berkeley Open Infrastucture For Network Computing- desenvolvido pela Universidade de Berkeley, usuários de várias partes do mundo podem doar a carga ociosa de seus computadores para ajudar em projetos como a procura pra cura da Zika (OpenZika) e a pesquisa sobre o vírus da AIDS (FightAIDS@home).



Tendo como base uma proposta inteligente, já que pode ajudar cientistas a pesquisar objetos de diversas áreas como a procura por extraterrestres (SETI@home) e possíveis biomarcadores ligados aos diversos tipos de câncer (Mapping Cancer Markers), o WCG traz com benefícios que são interessantes a ambas as partes, usuários comuns podem se sentir partes de grandes pesquisas (e serem contemplados com pontos que contribuem para um ranking de colaboradores, além de bonitos screensavers), e cientistas terem seus projetos computados sem a necessidade de terem de usar supercomputadores que estejam por perto ou indisponíveis.



Apesar de tudo, nada é perfeito, o uso do BOINC a longo prazo pode acarretar em um aumento na conta de energia nos usuários no final do mês, além disso, necessita de conexão constante com a Internet, então nada de deixar o programa aberto quando em pacote de dados ou fora de um carregador.



Com isso em mente, a World Community Grid se relaciona a Ciência e Engenharia da Computação ao fazer usos de múltiplos núcleos para processamento ao mesmo tempo. Com o uso de algoritmos fortes e que possam distribuir os dados de forma dinâmica entre os núcleos, grandes processamentos podem ser feitos em um tempo mais rápido. Exemplo disso é o Accelerated Computing da empresa NVIDIA: ao usar os múltiplos núcleos da GPU e os núcleos sequenciais da CPU, analíses, aprendizagem profunda para inteligências artificiais e programas de engenharia podem ser acelerados. Outros exemplos mais comuns são os Render Farms: grandes amontoados de núcleos de processamento (ou clusters de computadores) com o objetivo de renderizar animações como Toy Story entre outras. A criação de programas e algoritmos e a manipulação e estudos destes sistemas são exemplos de como um cientista ou engenheiro da computação podem seguir carreira.


Mas e aí? Vai se unir ao WCG? Grandes projetos te aguardam.