sexta-feira, 28 de setembro de 2012

quarta-feira, 26 de setembro de 2012

[*]Criando uma Aplicação no Azure

Antes de iniciar, siga os passos e verifique se os itens a seguir estão ativados.

1.       Clique em Iniciar, escolha a opção Painel de Controle
2.       Selecione Programas e Recursos
3.       Ativar ou Desativar recursos do Windows
4.       Dentro da pasta Microsoft .NET Framework, selecione Windows Communication Foundation HTTP Activation.
5.       Dentro da pasta Serviços de Informações da Internet expanda a pasta Serviços da  World Wide Web
6.       Expanda a pasta Recursos de Desenvolvimento de Aplicativos e selecione ASP.NET
7.       Na pasta recursos HTTP selecione Conteúdo Estático
8.       Clique em OK e aguarde a atualização

Começando a utilizar o Azure.

Caso você não tenha nenhum programa do tipo .NET, PHP ou JAVA, acesse o link https://www.windowsazure.com/en-us/develop/downloads/

e escolha o programa de sua preferência, o download feito a partir de algum dos links destacado a cima já vem com todos os requisitos necessários para configurar o Azure  caso já tenha algum desses programas será necessário instalar o Windows Azure SDK.
  
Pare ter acesso a pagina de gerenciamento de aplicativos será necessário criar uma conta no Azure,
Caso já tenha uma conta da Microsoft (Hotmail), poderá utiliza-la, lembrado que será solicitado também o número do cartão de crédito.
Após ter sua conta devidamente criada vocês terão acesso a esta página

Depois disso é só acompanhar o tutorial nesse link,
Nesse tutorial será criado um website com uma interface e um Banco de Dados pré-desenvolvida pelo Visual Studio.


Fontes:



Dicas para fazer apresentações!

Sim! Fazer uma apresentação não é fácil, mas sempre é possível melhorar!

Vejam dicas fantásticas (e simples e divertidas) neste material!

[slideshare id=14346182&doc=yousuckatpowerpoint-byjessedee-120919102217-phpapp01]

Computação Distribuída e Paralela::Implementação do Grid BOINC


[slideshare id=1627198&doc=paperspd-090623132351-phpapp02&type=d]

sexta-feira, 21 de setembro de 2012

sexta-feira, 14 de setembro de 2012

What is World Community Grid?

[*]Windows Azure


É o sistema operacional para serviços na nuvem que é utilizado para o desenvolvimento, hosting e gerenciamento dos serviços dentro do ambiente da plataforma Azure. O Windows Azure provê computação e armazenamento por demanda, com a finalidade de hospedar (Hosting), escalar e gerenciar aplicações Web e serviços através da Internet dentro dos data-centers da Microsoft. A plataforma Windows Azure é uma plataforma como serviços (PaaS – platform as a service) oferecendo recurso para computação de processos (Compute), armazenamento de objetos e dados (Storage), gerenciamento de serviços e recursos contratados (Management). Podemos destacar quatro grandes grupos de capacidades sobre a plataforma Windows Azure, a saber:
  • Windows Azure: com seus recursos para computação, hospedagem de aplicações e serviços, gerenciamento e armazenamento de dados de alta escalabilidade, via o Azure Storage;
  • SQL Azure: com seus recursos para relatórios, persistência de dados relacional, sincronização de dados com o ambiente on-premise e gerenciamento de dados na nuvem;
  • Windows Azure AppFabric: com seus recursos para gerenciamento e publicação de serviços, através do Service Bus, e controle de acesso, através do Access Control. Funcionalidades como o Azure AppFabric Caching oferecem recursos adicionais para aplicação na nuvem de alta performance.
  • Windows Azure DataMarket: finalmente, o Azure DataMarket oferece mecanismos diversos para billing, gerenciamento de pagamentos, subscrição, informações sobre serviços publicados e relatórios para o controle de aplicações oferecidas na nuvem.
Todos esses recursos podem ser consumidos ou utilizados por aplicações, hospedadas no próprio Windows Azure. Aplicações hospedadas no ambiente local (on-premise) de uma empresa também podem consumir esses serviços e recursos na nuvem, criando soluções híbridas poderosas.
Ainda, uma aplicação na plataforma Windows Azure pode se beneficiar de todos os recursos acima descritos, conforme a necessidade, num modelo de contratação conhecimento como “pay as you go”, ou seja, o usuário paga somente pelos recursos efetivamente contratados e utilizados na plataforma.
O SQL Azure
O SQL Azure é um conjunto de serviços que oferece capacidades de processamento e armazenamento de dados relacionais na nuvem, sobre a plataforma Windows Azure.
Usando o SQL Azure, as aplicações podem aproveitar recursos como persistência de dados, business intelligence, sincronização, replicação de dados, relatórios, data mining, etc., a partir de uma infraestrutura de alta escalabilidade e provisionamento dinâmico, que são características nativas de um ambiente em nuvem.
 Entre os benefícios do SQL Azure podemos destacar seu modelo de programação simétrico, que permite ao desenvolvedor trabalhar com o ambiente SQL Server 2008 local (on-premise) e o ambiente de dados do SQL Azure da mesma forma, aproveitando os mesmo recursos do .NET Framework. Outro benefício do SQL Azure é permitir o foco na aplicação, uma vez que o administrador de dados ou DBA – Database Administrator – não precisa se preocupar com atividades relacionadas à infraestrutura do ambiente SQL Azure, como:
  • Compra de repositório e espaço de armazenamento de dados para seu datacenter;
  • Configuração física e lógica de repositórios;
  • Dimensionamento de servidores;
  • Instalação e atualização de software de bancos de dados;
  • Diagnóstico e resolução de falhas de hardware, etc.;
O principal recurso do SQL Azure é sua capacidade de persistência de dados relacionais, da mesma forma que temos no SQL Server 2008 local (on-premise). Além do suporte ao modelo relacional, o serviço SQL Azure suporta acesso direto via ADO.NET, da mesma forma como ocorre em aplicações locais acessando dados em um banco SQL Server local, ou seja, de forma transparente para o desenvolvedor.

Modelo de Provisionamento
O SQL Azure suporta um modelo de provisionamento baseado em contas Azure com servidores e bases de dados (ou instâncias de SQL Azure), o que permite ao usuário do serviço a criação de bases de dados de 1 GB a 50 GB de espaço para armazenamento, permitindo ainda diversas combinações.
 Para o modelo de provisionamento do SQL Azure destacamos seus três componentes:
  • Account (conta): Cada conta Azure tem zero ou mais servidores contratados, sendo o instrumento principal para controle de Billing (pagamento);
  • Server (servidor): Cada servidor tem um ou mais bases de dados, sendo o container principal de nossas instâncias de bases. O servidor ainda contém metadados sobre as bases em uso e informações para autenticação. É através do servidor que nos conectamos em nossas bases de dados no SQL Azure, sendo a unidade de autenticação no modelo. Também, o servidor é a unidade de geo-localização, por onde controlamos o datacenter para hospedagem de nossas bases na plataforma Windows Azure, sendo também acessado através de um nome padrão DNS.
  • Database (base de dados): finalmente, cada database ou base de dados no SQL Azure possui os objetos SQL de nossas aplicações. É a unidade de consistência e multi-tenancy do modelo, contendo nossas informações de usuários, tabelas, views, índices, etc. A base de dados é a unidade granular básica para cobrança no SQL Azure.
Por exemplo, para a conta MyAccount, podemos ter um servidor de nome (Fully Qualified DNS name) xaqpblthd.database.windows.net, que conterá nossas bases de dados para aplicações MyDatabaseApp1 e MyDatabaseApp2.

Tamanho do Banco de Dados no SQL Azure
O SQL Azure oferece dois tipos básicos para contratação de uma base de dados na nuvem:
  • SQL Azure Web Edition – com tamanhos de 1 GB e 5 GB;
  • SQL Azure Business Edition – com tamanhos de 10, 20, 30, 40 e 50 GB;
Para cada limite de base de dados contratado, não consideramos dados de logs, master database, system tables, catálogos do servidor ou réplicas adicionais.
Até o fechamento deste artigo (Abril/2011), não é suportado o auto-particionamento de dados ou fan-out queries.
Isso significa que devemos tratar o particionamento lógico de dados a partir da aplicação, coordenando o uso de uma ou mais instância de base de dados SQL Azure quando necessário, num modelo conhecido como sharding.

O DESENVOLVIMENTO
O Windows Azure suporta as seguintes linguagens de programação: .Net 3.5 SP1 ou 4.0 ou superior, PHP, Ruby, Python e Java. Para desenvolver aplicações para o Azure é necessário um kit de desenvolvimento de software ou SDK, disponível para download no site da Microsoft. Esse kit emula todos os recursos do Azure localmente. Para desenvolver as aplicações é necessária a utilização do Visual Studio ou o Eclipse.

O MERCADO

O Azure não faz a venda dos aplicativos, mas para ajudar as empresas a Microsoft criou o Pinpoint. O Pinpoint é catálogo de aplicativos e soluções onde as empresas podem publicar seus produtos e os clientes possam descobri-los e contratá-los. Já são mais de 31 mil clientes utilizando o Windows Azure no mundo. Ainda não existem números consolidados no Brasil.
OS PLANOS

Agora que você já conheceu a plataforma, deve estar se perguntando: Quanto vai custar para eu ter acesso a todos estes recursos? Existem diversos planos, sendo alguns com quantidade mínima de horas contratadas e outros onde você paga pelo que usar variando entre US$ 0,05 e US$ 0,96 por hora dependendo da capacidade escolhida. Também existe uma versão para testes gratuita.
Embora a plataforma esteja disponível no Brasil é necessário fazer a aquisição dos planos do Windows Azure nos Estados Unidos. Por isso o pagamento é feito em dólares, sendo assim necessário um cartão internacional.
Para fazer a aquisição é muito simples, basta
 acessar www.azure.com escolher um plano e clicar em comprar. Caso não possua uma conta de cliente Microsoft será necessário criar uma.
 

O SUPORTE

Caso você encontre problemas ou dúvidas você poderá acessar os FAQs que abrangem os mais variados temas relacionados ao uso do serviço.(http://www.microsoft.com/brasil/windowsazure/faq/)
Se ainda restarem dúvidas você poderá acessar a página de suporte da plataforma e obter mais detalhes sobre os serviços do Azure. (
http://www.microsoft.com/windowsazure/support/)

SIMULAÇÃO DE CUSTO
Abaixo segue uma tabela com a estrutura aproximada de uma empresa de grande porte com aproximadamente 200 usuários ativos entre sistemas e rede com uma prévia da infra-estrutura, convidamos à todos para acessarem o Link: http://www.windowsazure.com/pt-br/pricing/calculator/?scenario=full e realizar uma simulação de custo desta empresa caso optassem pelo Windows Azure, acrescentamos que o valor de investimento aproximado para a aquisição, implementação, manutenção e substituições giram em torno de R$340.000,00 no ano, lembrando que boa parte do valor envolvido está relacionado com substituições e upgrades dos servidores físicos e parte dos Switchs.
DESCRIÇÃO
QUANTIDADE
ATIVOS DE REDE – ROTEADORES
4
ATIVOS DE REDE – SWITCH
48
ATIVOS DE REDE – SERVIDOR (FÍSICO)
21
SERVIDORES (VIRTUALIZADOS)
43
LARGURA DE BANDA
20 GB
DATABASE
130 GB
SQL REPORT (HORAS)
620
ACTIVE DIRECTORY
200

LINKS ÚTEIS


Blog da Microsoft sobre o Windows
http://blogs.msdn.com/b/windowsazure/ 

Blog da Microsoft sobre o SQL Azure
http://blogs.msdn.com/b/sqlazure/ 

Blog da Microsoft sobre o Azure AppFabric
http://blogs.msdn.com/b/windowsazureappfabric/ 

Básico do Windows Azure pela Microsoft
http://www.microsoft.com/showcase/pt/br/details/28a3a6a7-1f4d-4893-877b-1df619fefc81 

Vou de Azure
http://www.voudeazure.com.br/ 

Fórum de discussão sobre Azure e Cloud Computing
http://azureservicesbr.ning.com/ 

Blog do Luciano Condé
http://blogs.msdn.com/b/conde/ 

Zetks Cards
O que é Windows Azure (Microsoft)

MSDN
Vídeos relacionados

Mais vídeos

quarta-feira, 12 de setembro de 2012

[*]Amazon EC2 (Elastic Cloud Computing)

O que é?

Amazon Elastic Cloud Computing (Amazon EC2) é um serviço da Web que fornece uma capacidade de computação redimensionável na nuvem. É projetado para tornar a escalabilidade computacional de nível de web mais fácil para desenvolvedores. A interface simples de serviço da Web do Amazon EC2 permite que você obtenha e configure a capacidade com mínima fricção. Oferece um controle completo de seus recursos computacionais e permite que você trabalhe no ambiente computacional comprovado da Amazon. O Amazon EC2 reduz o tempo exigido para obter e inicializar novas instâncias do servidor em minutos, permitindo que você rapidamente escalone a capacidade, para mais e para menos, à medida que os requisitos de computação forem alterados. O Amazon EC2 altera a economia da computação ao permitir que você pague somente pela capacidade que realmente utilizar. O Amazon EC2 fornece aos desenvolvedores as ferramentas para construir aplicativos resistentes a falhas e isolá-los de situações de falha comuns.

Como Funciona?

O Amazon EC2 apresenta um verdadeiro ambiente de computação virtual, permitindo que você utilize interfaces de serviço web para iniciar instâncias com uma variedade de sistemas operacionais, carregue-os com seu ambiente de aplicativo personalizado, gerencie permissões de acesso da sua rede e execute sua imagem usando o número de sistemas que você desejar.
Para usar o Amazon EC2, você simplesmente deve:
  • Selecionar um modelo de Amazon Machine Image (AMI) pré-configurada, para começar a usar o serviço imediatamente. Ou crie uma AMI contendo suas aplicações, bibliotecas, dados e definições de configuração associadas.
  • Configurar a segurança e o acesso à rede em sua instância Amazon EC2.
  • Escolher o(s) tipo(s) de instância(s) desejado(s), em seguida, inicie, finalize e monitore quantas instâncias de seu AMI forem necessárias, usando as APIs de serviço web ou a grande variedade de ferramentas de gerenciamento fornecidas.
  • Determinar se você deseja executar em vários locais, utilizar os pontos de extremidade de IP estáticos ou o armazenamento persistente em bloco de conexão para suas instâncias.
  • Pague somente pelos recursos que você realmente utilizar, como transferência de dados ou instância-horas.
Vantagens:

Elastic – O Amazon EC2 permite que você aumente ou diminua a capacidade em minutos e não horas ou dias. É possível comissionar uma, centenas ou até milhares de instâncias do servidor simultaneamente. Naturalmente, como tudo é controlado com os serviços de APIs da web, o aplicativo pode automaticamente se expandir ou se reduzir, dependendo de suas necessidades.

Completamente controlado – Você tem controle total de suas instâncias. Você tem acesso à raiz de cada uma e pode interagir com elas como faria com qualquer máquina. Você pode interromper sua instância, mantendo os dados em sua partição de inicialização e posteriormente reiniciar a mesma instância usando as APIs de serviços web. As instâncias podem ser reiniciadas remotamente usando as APIs de serviços web. Você também tem acesso ao console de saída de suas instâncias.

Flexibilidade – Você pode escolher tipos de várias instâncias, sistemas operacionais e pacotes de software. O Amazon EC2 permite que você selecione uma configuração de memória, CPU, armazenamento de instância e tamanho da partição de inicialização que seja ideal para a sua opção de sistema operacional e aplicativos. Por exemplo, sua escolha de sistemas operacionais inclui várias distribuições de Linux e Microsoft Windows Server.

Projetado para uso com outros Amazon Web Services – O Amazon EC2 trabalha em conjunto com o Amazon Simple Storage Service (Amazon S3), o Amazon Relational Database Service (Amazon RDS), o Amazon SimpleDB e o Amazon Simple Queue Service (Amazon SQS ) para fornecer uma solução completa de computação, processamento de consulta e armazenamento de uma ampla variedade de aplicativos.

Confiável – O Amazon EC2 oferece um ambiente altamente confiável, no qual a substituição de instâncias pode ser rápida e previamente encomendada. O serviço é executado dentro da infraestrutura comprovada de rede da Amazon e Datacenters. O compromisso do Acordo de Nível de Serviço do Amazon EC2 é disponibilidade de 99,95% para cada região do Amazon EC2.

Segurança – O Amazon EC2 fornece vários mecanismos para proteger seus recursos de computação. O Amazon EC2 inclui interfaces de serviços da web para configurar o firewall que controla o acesso de rede para os grupos de instâncias e entre eles.

Ao iniciar os recursos do Amazon EC2 no Amazon Virtual Private Cloud (Amazon VPC), você pode isolar suas instâncias computacionais, especificando a faixa de IP que você deseja usar e conectar à sua infraestrutura de TI existente usando o padrão da indústria VPN Ipsec criptografado.

Você também pode optar por iniciar Instâncias dedicadas em seu VPC. Instâncias dedicadas são instâncias do Amazon EC2 que são executadas em hardwares dedicados a um único cliente para isolamento adicional.

Econômico – O Amazon EC2 repassa para você os benefícios financeiros do dimensionamento da Amazon. Você paga uma taxa muito baixa pela capacidade computacional que você realmente irá utilizar.

Instâncias On-Demand – As instâncias On-Demand permitem que você pague pela capacidade computacional por hora, sem compromissos em longo prazo. Isso exime você dos custos e das complexidades de planejamento, aquisição e manutenção de hardware e transforma o que normalmente são grandes custos fixos em custos variáveis muito menores. As Instâncias On-Demand também eliminam a necessidade de se comprar uma "rede de segurança" com capacidade de lidar com repiques de tráfego periódicos.

Instâncias Reservadas – As Instâncias Reservadas lhe dão a opção de fazer um pagamento único e acessível para cada instância que você deseja reservar e, por sua vez, você recebe um desconto significativo sobre a taxa por hora para essa instância. Existem três tipos de Instância Reservada (Instâncias Reservadas de Utilização Leve, Média e Pesada) que permitem equilibrar o valor inicial pago e o preço efetivo da hora.

Instância Spot – As Instâncias Spot permitem aos clientes negociarem a capacidade não utilizada do Amazon EC2 e executarem essas instâncias durante o período em que sua oferta exceder o Preço Spot atual. O Preço Spot muda periodicamente com base no fornecimento e na demanda, e os clientes cuja proposta atende-o ou ultrapassa-o ganham acesso às Instâncias Spot disponíveis. Se você tem flexibilidade sobre quando os seus aplicativos podem ser executados, as Instâncias Spot podem reduzir significativamente seus custos no Amazon EC2.

Para que serve?

O Amazon EC2 (Elastic Compute Cloud) é um serviço que permite ao usuário alugar os recursos computacionais da Amazon e rodar uma máquina virtual sobre os datacenters deles. Na prática isso quer dizer que você ganha uma máquina (cujo hardware você escolha dentre várias categorias de "poder") sobre a qual você tem total controle. Pode instalar qualquer sistema operacional, acessar remotamente e usá-la para qualquer propósito.

Virtual Core:

Virtual Core é o nome dado à cada unidade correspondente a 1.7GB de memória e 160GB de armazenamento.A Amazon calcula a capacidade computacional por hora utilizada pelo cliente, usando como resultado a unidade Virtual Core e então realiza a cobrança, porém existem vários planos diferentes de cobranças, no seguinte link pode-se consultá-los: http://aws.amazon.com/pt/ec2/pricing/

Empresas que utilizam o ECS:


Referências


Curiosidade

Notícias da invasão contra Sony realizada com uso do EC2:


terça-feira, 11 de setembro de 2012

[*]Viabilidade de Uso de Cloud Computing

Existem muitas definições para o termo "computação em nuvem" ou "cloud computing", dentre os quais destacamos:
  • "Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction." (NIST)
  • "Cloud computing is a general term for anything that involves delivering hosted services over the Internet. These services are broadly divided into three categories: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS). The name cloud computing was inspired by the cloud symbol that's often used to represent the Internet in flowcharts and diagrams." (TechTarget)

Como qualquer tecnologia, o emprego da computação em nuvem incorre em diversas vantagens e desvantagens, de maneira que tal solução não pode ser, indiscriminadamente, aplicada em qualquer empresa ou tipo de negócio.

Conforme a ilustração abaixo:
Fonte: http://calusbr.files.wordpress.com/2011/03/cloud-computing-values.png
Que perguntas deveriam ser feitas para determinar a viabilidade de aplicação da tecnologia de Cloud Computing numa organização?

Sugira sua questão (uma por aluno) como um comentário deste post, indicando também sua natureza (ECONÔMICA, ARQUITETÔNICA ou ESTRATÉGICA), como por exemplo:

[ECONÔMICA] Os custos médios de utilização dos serviços de cloud computing serão inferiores aos de propriedade de um data center?

Ah!
  • Não serão aceitas perguntas repetidas. 
  • Prazo final para comentários: 12/09/2012, 23H59.

quinta-feira, 6 de setembro de 2012

Redes sociais e sistemas distribuídos

Existe alguma correlação entre estes dois assuntos: redes sociais e sistemas distribuídos?
Eis uma questão interessante.
Alguém se arrisca a comentar e discutir?

segunda-feira, 3 de setembro de 2012

Vamos contribuir?


Convido todos os leitores deste blog, alunos ou não, (quanta pretensão aqui, não é mesmo) a se tornarem voluntários de processamento de dados! Ou seja, o convite é para que você utilizem a parte ociosa da capacidade de seus computadores em um projeto global, comunitário e high-tech.

O World Community Grid é como um supercomputador, realmente poderoso, resultado combinado do processamento das máquinas (em geral microcomputadores comuns) de seus voluntários. A iniciativa, patrocinada pela IBM e suportado pela tecnologia BOINC da Universidade de Berkeley, ajuda projetos voltados para o combate de doenças sérias como câncer, câncer infantil, distrofia muscular, esquistossomose, dengue, malária e leishmaniose, além de contribuir para o mapeamento do proteoma humano e uso sustentável de água e energia.


Segue um roteiro (agora despretensioso) bem simples!

1. Associe-se ao World Community Grid

Acesse o site http://www.worldcommunitygrid.org e siga as indicações para associação. É rápido, não tem qualquer custo nem envio de e-mails de anúncios ou promoções.

Para facilitar, use o link abaixo, que permite que você se associe e também se una ao nosso time, o JundSITeam!

http://www.worldcommunitygrid.org/reg/viewRegister.do?teamID=7W9LN8NJ12

Lembre de seu usuário e senha, que serão necessários na próxima etapa.

2. Instale o BOINC

No site do BOINC (http://boinc.berkeley.edu) é possível fazer o download de uma versão compatível do cliente BOINC com seu sistema. Este software é quem realiza a obtenção de tarefas do projeto, controla seu processamento e efetua o envio dos resultados transparentemente.

A instalação é simples. Sugiro que todos aceitem as sugestões default, que permitem uma instalação com impacto mínimo no desempenho de seu equipamento.

Na etapa final, selecione o projeto "World Community Grid" na lista oferecida e depois forneça o usuário e senha que você cadastrou. Pronto!

Você já faz parte do time! ;-)

[*]Open MPI

Open MPI
Open Source High Performance Computing

Histórico: MPI -> Open MPI
Início: Supercomputing no ano de 1992 em empresas como IBM, Cray e Intel
1995: MPI-1.1 / 1997: MPI-1.2 / 1998: MPI-2
Principais Implementações:
MPICH - Argonne National Laboratory (www.mcs.anl.gov/mpi/mpich/)
            Intel MPI
            (http://software.intel.com/en-us/articles/intel-mpi-library/ )
            Sun MPI (http://docs.sun.com/app/docs/doc/817-0085-10)
            OpenMPI - Consórcio (www.open-mpi.org/)

Conceito
·      MPI é a sigla para Message Passing Interface, é um padrão para comunicação de dados em computação paralela. O MPI oferece diversas abstrações que facilitam e padronizam o desenvolvimento de aplicações paralelas. Por exemplo, você pode programar para vários processadores, nós de um cluster, supercomputadores ou Internet utilizando a mesma infraestrutura transparentemente. MPI é uma biblioteca (conjunto de funções) padrão para troca de mensagens (Conjunto de bits), não é uma linguagem ou compilador.
Programação paralela
·      É o modelo em que o mesmo programa é carregado e roda simultaneamente em vários computadores. O programa é feito especialmente com o propósito de rodar em vários computadores e utiliza funções de comunicação entre os computadores (MPI).  Dado um algoritmo, paralelizá-lo é reescrevê-lo de forma que o algoritmo gere o mesmo resultado no final, porém rodando em vários  computadores  simultaneamente.  A vantagem  é um menor tempo de execução.


O que é Open MPI?
O projeto Open MPI é uma implementação open source do MPI. Open MPI (Open Source High Performance Computing) é a combinação de vários projetos MPI já existente, com o objetivo de disponibilizar uma única implementação MPI integrando funcionalidades destes projetos.


Para que serve?
·      O Open MPI é focada no suporte a programação distribuída em vários nós de um cluster, oferecendo uma solução robusta para este tipo de abordagem, sendo um projeto open source baseado no MPI-2 que é suportado por um consórcio de pesquisadores, indústria e universidades.

Arquitetura
·      A arquitetura de Open MPI consiste em três camadas de abstração que, combinadas, provêm todas as suas funcionalidades. A camada mais superior é a OMPI (Open MPI layer), que provê a interface MPI para as aplicações. Logo abaixo, encontra-se a camada ORTE (Open Run-Time Environment), que provê um ambiente de execução paralelo independente das capacidades do sistema. Por fim, a camada OPAL (Open Portable Access Layer) abstrai as peculiaridades específicas do sistema a fim de aumentar a portabilidade das camadas superiores. Abaixo da camada OPAL, está o sistema operacional e os outros serviços que executam no nó local. Tradicionalmente suportado por compiladores de C, C++ e Fortran
 Como Funciona?
A principal forma que ela é usada é a de iniciar um programa a partir do nó mestre e especificar quantos processos você deseja usar, então inicia para cada um desses processos se este é na mesma máquina ou em várias máquinas. Os processos se comunicam usando a biblioteca MPI. Uma das máquinas será o nó mestre, esta é a máquina da qual você irá controlar o cluster e executar seus programas. Os outros nós serão conhecidos como escravos.

Razões para usar MPI
Padronização: MPI é um "padrão por   consenso"
Funcionalidade: mais de 300 rotinas
Disponibilidade: virtualmente todas as plataformas (Sistema Operacionais)
Portabilidade: não necessita alterar o código para cada plataforma
Escalabilidade
Performance
  
Quem usa Open MPI?

Usado em laboratórios de universidades, para estudos e pesquisas variadas.
Usada na maioria dos 500 maiores supercomputadores do mundo, incluindo o Roadrunner (EUA) e o K Computer (JP)

Consórcio das empresas participantes do Projeto K – Computer


Referências

l  www.open-mpi.org 

Minha contribuição no World Community Grid

[*]Aspectos da Distribuição de Processamento

A distribuição de processamento em sistemas multiprocessadores ou multicomputadores, ou seja, a divisão de trabalho entre processadores diferentes localizados no mesmo sistema ou em sistemas diferentes, deve, necessariamente, observar alguns aspectos muito importantes:
  1. Divisão do processamento
  2. Identificação das unidades de processamento
  3. Validação dos resultados
  4. Políticas de distribuição

1. Divisão do processamento

Para que o processamento possa ser distribuído, é requisito fundamental que o trabalho computacional que deve ser realizado possa ser dividido em partes cujo processamento possa se dar de maneira concorrente, ou seja, cada parte deve poder ser processada independentemente, a despeito da ordem de submissão,  processador alocado ou tempo de processamento. Desta maneira, tanto o código a ser executado (algoritmo) como os dados a serem processados, deve ser preparados para possibilitar tal divisão.

É comum em aplicações transacionais (típicas em sistemas de informação operacionais, tais como aplicações web) que os algoritmos envolvidos sejam simples, assim como reduzida a quantidade de dados que são processadas de cada vez, mas em ambientes onde muitas operações (tipicamente milhares) são executadas simultaneamente. Como todas estas transações são independentes, a distribuição de seu processamento entre diferentes processadores de um mesmo host (um sistema multiprocessador) ou entre diferentes processadores de computadores interligados como um mesmo sistema (um sistema multicomputador, tal como um cluster), poderiam oferecer inúmeras vantagens em termos de desempenho. Nesta situação as threads ou processos destes sistemas constituem as unidades de processamento do trabalho pretendido, ou seja, sua divisão por meio das características "naturais" dos sistemas envolvidos.

Já as situações onde os algoritmos envolvidos são complexos ou que a quantidade de dados envolvida é realmente grande requerem preparo programático especial, de maneira que seja possível explorar melhor as características dos sistemas envolvidos (múltiplos processadores no mesmo host ou distribuídos entre diferentes máquinas). Em sistemas multicomputadores é necessário estabelecer como o  código a ser executado será enviado ou compartilhado pelos vários hosts envolvidos, bem como determinar a forma de distribuição dos dados. Cada pacote constituído pelo código (algoritmo) e a fração de dados a ser trabalhada constitui uma unidade de processamento.

2. Identificação das unidades de processamento

Em sistemas multicomputadores é necessário cuidado com a identificação das unidades de processamento de cada trabalho, ou seja, é preciso garantir que cada fragmento do trabalho seja univocamente identificado, permitindo o controle preciso de seu envio e retorno, bem como determinação da situação do processamento global a qualquer instante.

3. Validação dos resultados

Principalmente em sistemas multicomputadores é preciso validar os resultados retornados pelos sistemas participantes pois: erros durante o processamento podem invalidar os resultados; problemas na transmissão dos dados podem corromper os dados retornados; os dados recebidos devem ser aqueles enviados, ou seja, é necessário verificar a autenticidade do conteúdo recebido.

4. Políticas de distribuição

Considerando que o desempenho de cada nó participante de um sistema multicomputador pode ser substancialmente diferente, bem como muito variável e imprevisível a carga de trabalho de cada um destes nós, a distribuição de unidades de processamento deve, sempre que possível, alocar as máquinas de melhor desempenho e, ao mesmo tempo, as mais ociosas do sistema, buscando assim o melhor desempenho global.

Como os nós estão sujeitos a falhas, de duração não determinável, é uma exigência estabelecer um período máximo para retorno dos resultados correspondentes de cada unidade de processamento, de modo que resultados não retornados no prazo disparem a distribuição destas unidades de processamento pendentes para outros nós ainda ativos, garantindo que a tarefa como um todo seja executada. Quanto menores os prazos envolvidos, maior a exigência de capacidade de processamento dos nós envolvidos.


Com isto é possível concluir que a distribuição de processamento em sistemas multicomputadores é uma tarefa bastante complexa, que exige uma infra-estrutura de controle bastante sofisticada, tal como feito pelo Berkeley Open Infra-structure for Network Computing (BOINC), distributed.net ou Globus.