segunda-feira, 3 de setembro de 2012

[*]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 

3 comentários:

  1. OK Equipe#4!

    Vocês colocaram o material da apresentação e incluíram as respostas das perguntas que eu fiz.

    Obrigado!

    PS: o post anterior, que continha um anexo, foi excluído, ok? ;-)

    ResponderExcluir
  2. Pessoal, pesquisei mais um pouco sobre Open MPI e encontrei um universo de informações para acrescentar no post:
    Muitas implementações do MPI, têm sido desenvolvidas para suportar
    plataformas de computação de diferentes propósitos, muitas das quais de
    código-aberto. Algumas implementações populares de caráter portável são: MPICH
    [30], OpenMPI [23], e LAM-MPI [10]. Também existem versões de especificações do
    MPI em linguagens não suportadas oficialmente, tais como: Boost.MPI [21] (C++),
    MPI.NET [25] (C#) e MPJ [4] (Java) .
    O MPI fórum suporta atualmente duas versões oficiais, para Fortran e C: MPI-1
    e MPI-2. MPI-2 é uma extensão do MPI-1 com muitas inovações propostas pela
    comunidade de usuários do MPI.Centenas de subrotinas são suportadas, com diferentes propósitos, tais como:
    I comunicação ponto-a-ponto (MPI-1);
    I comunicação coletiva (MPI-1);
    I escopos de comunicação (MPI-1);
    I topologias de processos (MPI-1);
    I tipos de dados (MPI-1);
    I comunicação unilateral (MPI-2);
    I criação diânmica de processos (MPI-2);
    I entrada e saída paralela em arquivos (MPI-2).I comunicação ponto-a-ponto (MPI-1);
    I comunicação coletiva (MPI-1);
    I escopos de comunicação (MPI-1);
    I topologias de processos (MPI-1);
    I tipos de dados (MPI-1);
    I comunicação unilateral (MPI-2);
    I criação diânmica de processos (MPI-2);
    I entrada e saída paralela em arquivos (MPI-2).


    ResponderExcluir
  3. Legal!
    Mais informação é sempre bom!
    :-)

    ResponderExcluir