Programação Paralela em Arquiteturas Multi-Core/Aplicações Internet: diferenças entre revisões

[edição não verificada][edição não verificada]
(Atualização banco de dados)
**FAZER
 
=== Computação em gradeGrid ===
 
==== Definição ====
A granularidade de uma aplicação paralela estabelece requerimentos para a plataforma na qual a aplicação é executada. A plataforma de execução de uma aplicação paralela consiste dos processadores usados pela aplicação e também das redes que conectam estes processadores. Aplicações paralelas pesadas demandam plataformas dedicadas (tais como supercomputadores massivamente paralelos) para que o ''overhead'' de comunicação não anule os ganhos decorrentes do paralelismo. Aplicações paralelas leves, ao contrário, podem efetivamente utilizar processadores compartilhados e interconectados por redes de longa distância.
 
Aplicações paralelas leves têm sido foco de muita atenção em indústrias e universidades, devido principalmente a dois importantes fatores. Primeiro, as aplicações paralelas leves representam uma fração respeitável das aplicações paralelas, incluindo [[Wikipedia:|data mining]], pesquisas massivas e várias aplicações de manipulação de imagens(como tumografia), por exemplo. Segundo, o projeto SETI@home [[Wikipediahttp:|SETI//setiathome.ssl.berkeley.edu/]]@home demonstrou que aplicações paralelas leves podem utilizar efetivamente um número grande de processadores conectados à Internet.
 
A computação em grade (do Inglês [[Wikipedia:|grid computing]]) é um modelo computacional capaz de alcançar uma alta taxa de processamento dividindo as tarefas entre diversas máquinas, podendo ser em rede local ou rede de longa distância, que formam uma [[Wikipedia:|máquina virtual]]. Esses processos serão executados no momento em que as máquinas não estão sendo utilizadas pelo usuário, evitando assim o desperdício de processamento da máquina utilizada. A metáfora adotada na computação em grade é a da rede eletrica (grid, em Inglês). Isto é, o poder computacional deveria estar disponível na Internet da mesma forma que energia elétrica está disponível na tomada: sob demanda e de maneira transparente.
 
Uma experiência de integração de processamento distribuído é o projeto SETI@home, uma continuação do projeto da NASA de busca de inteligência extraterrestre. Usando um software que pode ser baixado pela Internet, um microcomputador pode analisar sinais do rádio telescópio de Arecibo. Atualmente, existem 4 milhões de assinantes em 224 países, criando um computador virtual com uma performance de 20 Tflops.
 
Um outro exemplo são as famosas redes peer-to-peer, como Emule (Edonkey), Kazaa, Gnutella, em que se compartilham arquivos por exemplo, mas sem nenhum controle de acesso e não interoperam entre si. Com a evolução dessas aplicações elas acabaram por inter-operar e haverá uma convergência de interesses entre computação ponto a ponto, Internet e computação em grade.
 
A computação em grade é próxima geração da Internet – são protocolos adicionais construídos sobre a tecnologia da Internet. Qualquer recurso que esteja na Grade, também está na Rede.
 
A diferença existente entre a computação distribuída e computação em grade se dá pelo fato de que a computação distribuída é um conceito que vem dos anos 80 e 90, e consiste na possibilidade de resolver um determinado problema computacional através da utilização de diferentes recursos distribuídos geograficamente. A computação distribuída passa a ser uma “Computação em Grade” no momento em que existe uma infra-estrutura física e uma infra-estrutura lógica (software) que permita coordenar os trabalhos que vão ser processados e garantir a sua qualidade de serviço.
 
Grids são construídos como um grupamento de serviços básicos independentes. Um aspecto essencial dos serviços de Grid é que esses estão disponíveis uniformemente através dos ambientes distribuídos na Grid. Os serviços são agrupados em um sistema integrado, também chamado de middleware. Exemplos de ferramentas atuais de Grid incluem Globus, Legion, OpenGrid, AppLeS.
 
O Grid permite também o uso de técnicas de programação paralela por passagem de mensagens. O ambiente MPI (“Message Passing Interface”) está disponível no Grid através da versão MPICH-G2 (versão portátil do MPI para o Globus). O padrão MPI define uma biblioteca de rotinas que implementam uma comunicação ponto a ponto, em que a operação “send” é usada para iniciar uma transferência de dados entre dois programas concorrentes e a operação “receive” é usada para obter dados do sistema no espaço de memória da aplicação; existem ainda operações coletivas envolvendo múltiplos processos. Mas que devido a alta latência provocada na comunicação entre processos, as aplicações devem ser construídas com uma granularidade bem projetada de tal forma que se comuniquem o mínimo possível. Então, as aplicações mais adequadas ao Grid são as que possuem tarefas independentes (bag of tasks), pois as tarefas não dependem da execução de outras e podem ser executadas em qualquer ordem.
 
A Internet surgiu no início da década de 70 com o objetivo de interligar diferentes ambientes computacionais e geograficamente dispersos. Os web sites desenvolvidos pela indústria sempre foram interoperáveis em relação usuário-site, por meio de aplicações criadas neste contexto, em que o usuário dispõe de um menu de serviços fechados. O que ocorre em um ambiente de Grid é o inverso, onde o usuário tem de submeter suas aplicações para serem resolvidas dentro do ambiente por ele montado.
 
Um ambiente de cluster constitui em um sistema formado por hardware e software conectados em um local apenas, servindo a usuários que estão trabalho somente em um projeto, usado exclusivamente para resolver os problemas computacionais de uma determinada organização. Por outro lado, um Grid presta serviços de uma forma geograficamente distribuída. Em um cluster, os recursos são gerenciados por uma entidade central, e os computadores agem como se fosse um único dispositivo. Nas configurações em Grid, cada “organização virtual” faz o gerenciamento de seus recursos não tendo a visão de uma imagem única do sistema. Ou seja, o usuário tem consciência dos diversos serviços disponíveis e que deverá requisitá-los para sua utilização. Portanto, os Grids são mais heterogêneos, complexos e distribuídos.
 
COLOCAR FIGURA DA WIKIPEDIA
 
==== Benefícios ====
 
Um Grid possui muitos benefícios, entre os quais podemos citar:
 
*Organizações podem agregar recursos - a computação em Grid permite que as organizações possam agregar recursos com toda a infraestrutura dos ITs, não importando localização global. Isso elimina situações onde um site esteja sendo executado com sua capacidade máxima, enquanto outros tenham ciclos disponíveis.
 
*Poderosa plataforma de suporte a Organizações Virtuais - organizações podem melhorar dramaticamente sua qualidade e velocidade de produtos e serviços disponibilizados, enquanto os custos de IT são reduzidos por habilitar a colaboração transparente dos recursos compartilhados
 
*Acesso distribuído a diversos tipos de recursos - permite que empresas acessem e compartilhem bases de dados de forma remota. Isto é essencialmente benéfico para as ciências da saúde ou comunidades de pesquisa, onde volumes grandiosos de dados são gerados e analisados durante todo dia.
 
*Colaboração entre centro de pesquisas - possibilita a larga dispersão das organizações para que facilmente possam colaborar em projetos pela criação da habilidade do compartilhamento de tudo, desde aplicações a dados, até projetos de engenharia, etc.
 
*Melhor utilização de largura de banda - pode-se criar a mais robusta e resistente infraestrutura de informações.
 
*Aproveitamento de recursos ociosos – pode-se aproveitar os ciclos de processamento idle disponíveis dos PCs desktops que se encontram em várias localidades pelo planeta. Por exemplo, os computadores que se encontram tipicamente ociosos durante a noite de uma empresa em Tókio pode ser utilizado durante o dia para operações na América do Sul.
 
==== Desafios ====
 
A computação em grade, por ser uma tecnologia ainda muito recente, possui muitos desafios operacionais e de pesquisa a serem combatidos. Apenas para exemplificar, citamos alguns deles:
 
*Localização dos recursos
 
*Reserva de recursos
 
*Capacidade para adaptar- se a mudanças no ambiente
 
*Criação e escalonamento das tarefas
 
*Autonomia de cada grupo participante para definir suas próprias políticas de segurança
 
*Recursos requisitados podem estar em diferentes localidades
 
*Qualidade de serviço exigida por cada aplicação
 
==== Conclusão ====
 
O Grid Computing é um desafio bem maior do que formas mais simples de computação paralela e distribuída. Hoje, a maioria dos projetos de Grid permanecem localizados nos centros de supercomputação e laboratórios universitários. Os centros de pesquisa são ligados a conexões em rede cerca de 20 vezes mais rápidas do que as conexões de banda largas normais, são equipadas com sistemas de armazenamento capazes de lidar com vastos arquivos de dados e com computadores de alta performance. O Grid Computing é um conceito sobre o qual existe ainda uma grande expectativa e que poderá evoluir em diferentes direções, mas que é já hoje entendido como a próxima geração da Web para a comunidade científica.
FINALIZAR FALANDO SOBRE PROJETOS DE PESQUISA, ETC
 
=== P2P ===
40

edições