Introdução a Computação Paralela e a Montagem de Clusters. Marcelo Souza (marcelo@cebacad.net) Granduando em Sistema da Informação CEBACAD Centro Baiano de Computação de alto Desempenho
Introdução a Computação Paralela e a Montagem de Clusters. Snowflakes are one of nature's most fragile things, but just look at what they can do when they stick together. - Processamento Paralelo - Máquinas Paralelas Virtuais - openmosix vs. Beowulf MPI - Montando um Cluster openmosix - Montando um Cluster Beowulf MPI
Processamento Paralelo - Refere-se ao aumento de velocidade na execução de um programa atráves da divisão deste em pequenos fragmentos. - Obtenção de alto desempenho através da cooperação de processadores na execução simultânea de tarefas. - Necessária em áreas de computação intensiva, tratamento de informações e manipulação de grande volume de dados.
Processamento Paralelo - Grandes Desafios (Grand Challenge) a computação Paralela * Applied Fluid Dynamics * Ecosystem Simulations * Biomedical Imaging and Biomechanics * Molecular Biology * Molecular Design and Process Optimization * Nuclear power and weapons simulations - Executando uma tarefa dividida entre vários processadores se conseguirá executa-la muito mais rápidamente. [DIETZ2000]
Processamento Paralelo - Taxonomia de Flynn: Classificação de Arquiteturas de Computadores baseado no número de streams de instruções e dados: - Single instruction/single data stream (SISD) Computador convencional Sequencial. - Multiple instruction/single data stream (MISD) Não utilizado. - Single instruction/multiple data streams (SIMD) Processadores Vetoriais e/ou Instruções MMX, SSE, SSE2 e etc. - Multiple instruction/multiple data streams (MIMD) Multiplos processadores autonomos processando diferentes instruções em diferentes dados (Computadores Paralelos/Multiprocessados).
Processamento Paralelo
Processamento Paralelo - O conceito de Cluster de computador se refere a um grupo de computadores conectados trabalhando em conjuto. - A idéia foi originalmente desenvolvida pela DEC na década de 80. - n-computadores (n-nodes) interligados e compartilhando recursos possuem n vezes mais recursos.
Processamento Paralelo - Computadores Multiprocessados Vs. Computadores Paralelos. - Computadores Multiprocessados possuem memória compartilhada ente os n-processadores atráves de barramento dedicado e de alta velocidade. - Computadores Paralelos possuem memória distribuida entre os n-nós do Cluster, interligadas atráves de barramento dedicado ou não, geralmente de baixa velocidade.
Processamento Paralelo - Clusters são geralmente utilizados para High Perfomance Computing (HPC) - Clusters podem prover também estrutura para Tolerância a Falha em serviços de missão crítica (two-node cluster). - Buscar-se melhor Custo X Beneficio na Construção de Clusters de Computador.
Processamento Paralelo The Stone SouperComputer http://stonesoup.esd.ornl.gov/
Processamento Paralelo - Top 500 Supercomputers: http://www.top500.org/ - Cluster mais rápido do Mundo: Earth Simulator, simulação de mudanças climáticas. Perfomance de 35.86 Tflops (35.6 trilhões (35,600,000,000,000) de cálculos de ponto flutuante por segundo). - Consiste de 640 nodes, com oito processadores vetoriais, 16 gigabytes de memória em cada node, num total de 5120 processadores e 10 terabytes de memória.
Processamento Paralelo
Máquinas Paralelas Virtuais - Máquinas Paralelas Convencionais são caras e em geral possuem arquitetura fechada. - Alternativa são as Máquinas Paralelas Virtuais (MPV) baseadas em Estações de trabalho (Cluster Computer). - Utilizam de redes de computadores convencionais, locais e/ou remotas, como barramento de comunicação entre nodes.
openmosix vs. Beowulf MPI - São dois os principais paradigmas para a construção de clusters baseados em estações de trabalhos. - OpenMosix e Beowulf baseado em Passagem de Mensagem (MPI). - A solução baseada em passagem de mensagem necessita de codifição explicita com utilização de bibliotecas.
openmosix vs. Beowulf MPI - O Projeto Beowulf foi desenvolvido para a computação de alto desempenho (HPC), utilizando de máquinas de baixo custo interligadas em uma não dedicada (LAN). - Originalmente desenvolvido por Donald Becker nos laboratorios da NASA como solução a recursos escarsos. - Um cluster Beowulf é normalmente um grupo de PCs, identicos, rodando Sistemas Operacionais Livres (GNU/Linux, FreeBSD ou outros). Usando de uma rede TCP/IP e de bibliotecas e programa que permitem o compartilhamento do processamento.
openmosix vs. Beowulf MPI
openmosix vs. Beowulf MPI - O alto custo de desenvolvimento ou adequação de soluções comerciais/ciêntificas existentes dificulta ou impossibilita o uso do Paradigma de Passagem de Mensagem. - openmosix oferece uma solução transparente ao usuário sem necessidade de alteração em códigofonte de qualquer aplicativo.
openmosix vs. Beowulf MPI - openmosix permite a paralelização de processos de maneira transparente ao usuário. - Implementado em forma de Patch no Kernel do Sistema Operacional Linux. - Uma máquina pode se juntar ou sair do cluster a qualquer momento. O openmosix tenta continuamente otimizar o alocamento de recursos.
openmosix vs. Beowulf MPI - Migração Transparente dos Processos do user-space do nó pai (local) para o kernel-space do nó remoto. Não é visivel atráves de ferramentas de controle de processo (ps, top ou outros) - Uso de Algoritmo de Balanceamento de Carga (Load Balance) baseado em lógica do Mercado Financeiro (Menor custo).
openmosix vs. Beowulf MPI - Um Cluster openmosix comporta-se como um sistema multiprocessado distribuindo processos entre os nós do cluster. - Não possibilita a migração de Processos com Memória Compartilhada e/ou ou que possua Multi- Thread. - Processo tem seu mapa de memória destruido e as páginas relacionadas ao nó original recriado no nó remoto.
openmosix vs. Beowulf MPI - migshm é um patch ao openmosix Kernel que possibilita a migração de alguns procesos que utilizam de áreas de memória compartilhada. - Possibilita à migração de processos, tais como Web Servers, Sistemas Gerenciadores de Banco de Dados e outros. - Modelo Eager Release consistency model.
openmosix vs. Beowulf MPI Teste de Perfomance Apache Web Server openmosix + migshm
Montando um Cluster openmosix - Para simular um Cluster podemos utilizar apenas uma máquina atráves da interface de loopback. - Geralmente se utiliza Sistemas Operacionais Unix- Like livres para a construção de Clusters. - O GNU/Linux e/ou FreeBSD são os mais utilizados pois provem um ambiente Robusto, Flexivel, fácil e Barato.
Montando um Cluster openmosix - Download do Kernel 2.4.24: http://www.kernel.org/ - Download do Patch e Ferramantes openmosix: http://openmosix.sourceforge.net/ - Aplicar Patch ao Kernel: patch -p1 < openmosix-2.4.24-om1 - Configurar: make menuconfig
Montando um Cluster openmosix - Configurar/Compilar: openmosixtools - Configurar: openmosix.conf - Configurar: openmosix.map - Ver Script Init: openmosix - Reiniciar o computador - Testar: awk BEGIN { for (i=0;i<10000;i++) for (j=0;j<10000;j++);} - Verificar: mosmon
Montando um Cluster openmosix - openmosix é uma nova solução para a construção dos Computadores de Alta Perfomance e de Baixo Custo com uma abordagem mais transparente ao usuário e altamente eficiente. - Barramento de comunicação tem forte influência na perfomance geral de um Cluster de Computadores. - openmosix ainda não é amplamente utilizado.
Montando um Cluster MPI - MPI (Message Passing Interface) - Sistema de passagem de mensagem padrão. - Clusters visto como um único Sistema de Memória Distribuida. - Mestre e Trabalhador (Paradigma mais utilizado). - Portabilidade. - Baixo Custo.
Montando um Cluster MPI - MPI provê um padrão implementado na forma de Bibliotecas para a construção de Softwares que paralelizem o processamento. - Necessita de codificação explicita. - Solução mais estudada e difundida, permite explorar e desenvolver o conhecimento sobre Computação Paralela. - Utilizado no desenvolvimento de soluções comerciais/ciêntificas. Ex.: MPIBlast, MPIPovray e etc.
Montando um Cluster MPI - Implementação MPICH: http://www-unix.mcs.anl.gov/mpi/mpich/ - Mpich foi desenvolvido durante o processo de padronização do MPI para provê um feedback ao MPI Forum sobre a necessidades destes. - William Gropp e Ewing Lusk
Montando um Cluster MPI - Verificar ssh/sshd - Descompactar: tar -xvzf mpich.tar.gz - Configurar: configure --prefix=/usr -rsh=ssh --with-device=ch_p4 - Compilar: make ; make install
Montando um Cluster MPI - Configurar Chaveiro Confiável : - ssh-keygen -t rsa - cd ~/.ssh - cp id_rsa.pub authorized_keys - Cópia de todas as chaves dos nós - Configurar arquivos: hosts / hosts.allow / hosts.deny
Montando um Cluster MPI - Configurar: machines.linux - Testar: exemplos do mpich
CEBACAD E-Mail: marcelo@cebacad.net http://www.cebacad.net