construindo supercomputadores com linux versão 26-05-13

163
Construindo Supercomputadores com Linux versão 26-05-13

Upload: internet

Post on 17-Apr-2015

122 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Construindo Supercomputadores com Linux versão 26-05-13

Construindo Supercomputadores com Linux

versão 26-05-13

Page 2: Construindo Supercomputadores com Linux versão 26-05-13

1 - Introdução a supercomputação

Page 3: Construindo Supercomputadores com Linux versão 26-05-13

Paralelismo

• Pode ser definido como uma técnica utilizada em grandes e complexas tarefas para obter resultados na forma mais rápida possível, dividindo-se então em tarefas pequenas que serão distribuídas em vários processadores para serem executadas simultaneamente

Page 4: Construindo Supercomputadores com Linux versão 26-05-13

Processamento Paralelo

Page 5: Construindo Supercomputadores com Linux versão 26-05-13

Classificação de Flynn

• SISD

• MISD

• SIMD

• MIMD

Page 6: Construindo Supercomputadores com Linux versão 26-05-13

Arquitetura MIMD

• Memória Compartilhada

• Memória Distribuída

Page 7: Construindo Supercomputadores com Linux versão 26-05-13

MPP - Processadores Paralelos Massivos

Page 8: Construindo Supercomputadores com Linux versão 26-05-13

SMP

• UMA

• NUMA

• COMA

Page 9: Construindo Supercomputadores com Linux versão 26-05-13

CC-NUMA

Page 10: Construindo Supercomputadores com Linux versão 26-05-13

Sistemas Distribuídos

• computação distribuída

• computador paralelo

Page 11: Construindo Supercomputadores com Linux versão 26-05-13

2 - Cluster de Computadores

• Quando se utilizam dois ou mais computadores em conjunto para resolver um problema, você tem um cluster, que do inglês significa agrupamento

Page 12: Construindo Supercomputadores com Linux versão 26-05-13

Categorias dos Clusters

• Alta Disponibilidade (HA - High Availability)– Os clusters HA tem a finalidade de manter um

determinado serviço de forma segura o maior tempo possível

• Alto Desempenho (HPC - High Performance Computing)– configuração designada a prover grande poder

computacional do que somente um único computador poderia oferecer em capacidade de processamento

Page 13: Construindo Supercomputadores com Linux versão 26-05-13

Alta Disponibilidade

• alta disponibilidade garantir a continuidade de operação do sistema de serviços de rede, armazenamento de dados ou processamento, mesmo se houver falhas em um ou mais dispositivos, sejam eles hardware ou software

Page 14: Construindo Supercomputadores com Linux versão 26-05-13

Clusters de Alta Disponibilidade

• Nos clusters de alta disponibilidade os equipamentos são utilizados em conjunto para manter um serviço ou equipamento sempre ativo, replicando serviços e servidores, o que evita máquinas paradas, ociosas, esperando o outro equipamento ou serviço paralisar, passando as demais a responder por ela normalmente

Page 15: Construindo Supercomputadores com Linux versão 26-05-13

Vantagens em usar Cluster de Computadores

• Alto Desempenho

• Escalabilidade

• Tolerância a Falhas

• Baixo custo

• Independência de fornecedores

Page 16: Construindo Supercomputadores com Linux versão 26-05-13

Aplicabilidades

• Servidores da Internet• Segurança• Bases de Dados• Computação Gráfica• Aerodinâmica• Análise de elementos finitos• Aplicações em sensoriamento remoto• Inteligência Artificial e automação• Engenharia Genética

Page 17: Construindo Supercomputadores com Linux versão 26-05-13

Aplicabilidades (2)

• Exploração sísmica

• oceanografia e astrofísica

• previsão do tempo

• pesquisa militares

• problemas de pesquisas básicas

• segurança de reatores nucleares

Page 18: Construindo Supercomputadores com Linux versão 26-05-13

Divisão dos clusters segundo a sua propriedade

• dedicados utilizam seus nós exclusivamente para computação paralela

• não-dedicados as aplicações são executadas baseadas na ociosidade das estações de trabalho

Page 19: Construindo Supercomputadores com Linux versão 26-05-13

Cluster Beowulf (1994)

• 16 computadores pessoais - microprcessador 486

• sistema operacional Linux

• rede padrão Ethernet (10Mbps)

• marca de 70 megaflops (70 milhões de operações de ponto flutuante por segundo)

• custo: aproximadamente US$ 50,000.00

Page 20: Construindo Supercomputadores com Linux versão 26-05-13

Característica chave de um cluster Beowulf

• uso do SO Linux

• uso das bibliotecas de troca de mensagens (PVM e MPI) - de livre distribuição

• “Faça você mesmo o seu próprio supercomputador”

Page 21: Construindo Supercomputadores com Linux versão 26-05-13

O Cluster Beowulf pode ser dividido em duas classes

• Cluster Classe I

• Cluster Classe II

Page 22: Construindo Supercomputadores com Linux versão 26-05-13

Cluster Beowulf

• Um cluster Beowulf é construído de vários nós escravos (back-end) controlados por um computador principal (front-end), ao qual se tem acesso direto, ligados por uma rede fast ethernet e fazendo um gateway entre o cluster e uma rede local (LAN)

Page 23: Construindo Supercomputadores com Linux versão 26-05-13

Cluster Beowulf

• o computador principal é o responsável pela distribuição das tarefas

• os computadores escravos limitam-se a processar os cálculos que lhe são enviados

Page 24: Construindo Supercomputadores com Linux versão 26-05-13

Principais componentes de um cluster de computadores

• Nó ou node• Sistema Operacional• Rede Local• Protocolos• cluster middleware• Ferramentas de Comunicação• Sistemas de Arquivos Paralelos

– PVFS2– Lustre– PNFS– GPFS

Page 25: Construindo Supercomputadores com Linux versão 26-05-13

Redes de interconexão de alta velocidade

• Myrinet

• SCI

• ATM

Page 26: Construindo Supercomputadores com Linux versão 26-05-13

Ferramentas padrão para o processamento distribuído

• TCP/IP

• DCE

• OSF

Page 27: Construindo Supercomputadores com Linux versão 26-05-13

3 - Construindo um Cluster de Alto Desempenho

Page 28: Construindo Supercomputadores com Linux versão 26-05-13

Tipos de Cluster

• Cluster Homogêneo todos os seus nós possuem as mesmas características e a mesma rede de comunicação

• Cluster Heterogêneo seus nós possuem diferentes características ou diferentes redes de comunicação entre grupos de máquinas

Page 29: Construindo Supercomputadores com Linux versão 26-05-13

Top 500

http://www.top500.org/

Page 30: Construindo Supercomputadores com Linux versão 26-05-13

4 - Principais Redes para Clusters

Page 31: Construindo Supercomputadores com Linux versão 26-05-13

• conectividade

• topologia

Page 32: Construindo Supercomputadores com Linux versão 26-05-13

Divisão das redes

• Redes estáticas

• Redes dinâmicas

Page 33: Construindo Supercomputadores com Linux versão 26-05-13

Topologias de redes mais comuns para clusters

• fat tree

• estrela

• malha (mesh)

Page 34: Construindo Supercomputadores com Linux versão 26-05-13

• A latência é inversamente proporcional a eficiência

• A largura de banda é diretamente proporcional a sua eficiência

Page 35: Construindo Supercomputadores com Linux versão 26-05-13

Tecnologias

• Ethernet

• Fast-Ethernet

• Gigabit-Ethernet

Page 36: Construindo Supercomputadores com Linux versão 26-05-13

Outras Tecnologias

• Myrinet

• QsNet

• SCI - Scalable Coherent Interface

• HIPPI - High Performance Parallel Interface

Page 37: Construindo Supercomputadores com Linux versão 26-05-13

5 - Configurando nosso Cluster

Page 38: Construindo Supercomputadores com Linux versão 26-05-13

Roteiro de Configuração

• Configuração dos endereços lógicos (IP) para o controlador mestre e os nós computacionais

• Projetar um ambiente de resolução de nomes, podendo ser utilizado arquivo hosts, NIS ou DNS

• Criar o relacionamento de confiança entre as máquinas

Page 39: Construindo Supercomputadores com Linux versão 26-05-13

Roteiro de Configuração

• Permitir o uso de comandos remotos para colocar as aplicações em execução nos nós

• Distribuir o sistema de arquivos do controlador mestre para os nós escravos via NFS

• Instalar uma aplicação que permita o gerenciamento dos nós

Page 40: Construindo Supercomputadores com Linux versão 26-05-13

Roteiro de Configuração

• Instalação das principais bibliotecas de passagem de mensagens; PVM MPI

• Instalar sistemas de gerenciamento de recursos para aproveitar nós ociosos no cluster

• Instalar bibliotecas de otimização do sistema• Criar um ambiente propicio para um sistema de

arquivos de alta performance para processos de I/O

• Instalar linguagens, compiladores, depuradores, visualizadores

Page 41: Construindo Supercomputadores com Linux versão 26-05-13

1º Passo: definir os endereços IP

• Vamos usar o endereço de rede 192.168.7.x

• Máscara de rede: 255.255.255.0

Page 42: Construindo Supercomputadores com Linux versão 26-05-13

2º Passo: Definição dos hosts

A função do arquivo hosts é resolver o nome da máquina no endereço lógico de rede (IP)

• alterar o arquivo /etc/hosts para resolver o nome das máquinas

Exemplo:

192.168.7.71 mestre

192.168.7.72 escravo1

192.168.7.73 escravo2

192.168.7.74 escravo3

Page 43: Construindo Supercomputadores com Linux versão 26-05-13

3º Passo: Configuração de relacionamento de confiança

• Configurar o relacionamento de confiança entre os hosts

• Ele define a relação de confiança entre os hosts através da equivalência, sem haver necessidade de autenticação por senha

/etc/hosts.equiv

mestreescravo1escravo2escravo3

Page 44: Construindo Supercomputadores com Linux versão 26-05-13

4º Passo: o arquivo .rhosts

• Esse arquivo deverá constar em cada diretório de trabalho do usuário como /home e /root

• Esse arquivo será usado pelo protocolo RSH para execução de comandos remotos e por algumas aplicações de monitoramento

• Ele deverá ser criado nos diretórios: /home e /root.rhostsmestreescravo1escravo2escravo3

Page 45: Construindo Supercomputadores com Linux versão 26-05-13

5º Passo - Instalação do servidor RSH

• instalar o rsh-server, caso ainda não esteja instalado

• Execute os comandos (como root):#yum install rsh-server

#yum install ntsysv

• Execute o ntsysv e habilite os serviços de rsh, rlogin e rexec

Page 46: Construindo Supercomputadores com Linux versão 26-05-13

6º Passo - Configuração dos dispositivos para conexão

O arquivo /etc/securetty permite especificar quais dispositivos tty que o usuário root pode conectar-se

• O formato do arquivo /etc/securetty é a lista de dispositivo tty onde a conexão é permitida

• Acrescentar as entradas ao final do arquivo:– rsh (remote shell)– rlogin (remote login)

Page 47: Construindo Supercomputadores com Linux versão 26-05-13

7º Passo - Habilitar os comando “R”

• Habilite os serviços de rsh, rlogin e rexec com o comando ntsysv

• Inicie o xinetd através do comando:# service xinetd start

Outra opção para iniciar o xinetd é ir até diretório /etc/rc.d/init.d e inicie o xinetd com o comando ./xinetd para que , toda vez que ao iniciar, o supervisor seja carregado automaticamente

Page 48: Construindo Supercomputadores com Linux versão 26-05-13

8º Passo - Replicação

• Todos os arquivos hosts, hosts.equiv, securettty e .rhosts devem ser replicados em todos os computadores que formam o supercomputador (cluster)

Page 49: Construindo Supercomputadores com Linux versão 26-05-13

Configurando o Servidor do Sistema de Arquivos (NFS)

• No computador mestre:

Edite o arquivo /etc/exports/home *(rw,no_root_squash)/etc *(rw,no_root_squash)

onde:rw montagem leitura/escritano_root_squach privilégios de superusuário

Page 50: Construindo Supercomputadores com Linux versão 26-05-13

NFS - Servidor

• Reinicie o daemon do nfs

# service nfs restart• Digite ntsysv e marque a opção para

ativar o servidor NFS automaticamente (serviço nfs)

Page 51: Construindo Supercomputadores com Linux versão 26-05-13

NFS - Cliente

Nas máquinas cliente, podemos fazer os seguintes tipos de montagem:

• montagem manual

• montagem automática

• automontagem

Page 52: Construindo Supercomputadores com Linux versão 26-05-13

NFS - Cliente

Edite o arquivo /etc/fstab e acrescente as seguintes linhas:

#

# o endereço 192.168.7.71 é o endereço do servidor (máquina

# mestre)

#

192.168.7.71:/home /home nfs exec,dev,suid,rw 1 1

192.168.7.71:/usr/local /usr/local nfs exec,dev,suid,rw 1 1

Page 53: Construindo Supercomputadores com Linux versão 26-05-13

Chamadas a Remotas a Procedimentos (RPC)

• Normalmente, os computadores que formam os sistemas distribuídos não compartilham a memória principal em suas comunicações. É comum a comunicação se utilizar de mecanismos de passagem de mensagens (utilizando bibliotecas como PVM, MPI, TCGMSG, Express, P4) e chamadas remotas a procedimentos (utilizando o serviço NFS)

Page 54: Construindo Supercomputadores com Linux versão 26-05-13

Modelo de troca de mensagens

processocliente

processoservidor

request

response

Page 55: Construindo Supercomputadores com Linux versão 26-05-13

Servidores de Tempo

• sincronização de relógios

• relógio lógico

• servidor NTP (Network Time Protocol) - trabalha na porta UDP/123

• O NTP implementa o modelo de sincronização hierárquico distribuído

Page 56: Construindo Supercomputadores com Linux versão 26-05-13

Servidores de Tempo - Configuração

• /etc/ntp.conf

Execute o comando:# touch /etc/ntp.drift

Verifique o status do servidor NTP:# service ntpd status

Page 57: Construindo Supercomputadores com Linux versão 26-05-13

6 - Gerenciando os Clusters

• Ferramentas:– bWatch - permite o monitoramento remoto

dos nós do cluster– Ganglia - é uma ferramenta distribuída que

permite monitorar sistemas de alto desempenho de computação

– Nagios - Gerencia Servidores e Serviços

Page 58: Construindo Supercomputadores com Linux versão 26-05-13

bWatch (Beowulf Watch)

• Permite o monitoramento remoto dos nós do cluster– monitoramento de carga– uso de memória

• Script escrito em Tcl/Tk (linguagem de programação de scripts)

Page 59: Construindo Supercomputadores com Linux versão 26-05-13

Pré-requisitos para uso do bWatch

• assume que na máquina onde ele está sendo executado ele tenha acesso remoto via rsh a todos os computadores do cluster

• assume também que o interpretador wish (do Tcl/Tk) esteja em /usr/bin/wish

Page 60: Construindo Supercomputadores com Linux versão 26-05-13

Instalação do bWatch

• baixe o arquivo do site: http://bwatch.sourceforge.net/

• crie o diretório /usr/local/bWatch-1.1.0.a

• copie o arquivo bWatch-1.1.0a.tar.gz para o diretório /usr/local/bWatch-1.1.0a onde você instala suas aplicações

# cd /usr/local/bWatch-1.1.0a# tar zxvf bWatch-1.1.0a.tar.gz

Page 61: Construindo Supercomputadores com Linux versão 26-05-13

Instalação do bWatch

• Edite o arquivo Makefile• Altere wishx por wish• Digite make bwatch• Inicie a aplicação usando bWatch.tcl (somente

após esse passo é que será criado o arquivo ~/.bWatchrc.tcl)

• Faça o make install para instalá-lo em /usr/local/bin

• Altere a variável listOfHosts localizado no arquivo ~/.bWatchrc.tcl

Page 62: Construindo Supercomputadores com Linux versão 26-05-13

Instalação do bWatch

• Liste o nome da cada host que será monitorado

• Exemplo:set listOfHosts { mestre escravo1 escravo2 escrado3 }

Page 63: Construindo Supercomputadores com Linux versão 26-05-13

Ganglia

• O Ganglia é uma ferramenta distribuída que permite monitorar sistemas de alto desempenho de computação

• É um projeto open source hospedado em http://ganglia.sourceforge.net

Page 64: Construindo Supercomputadores com Linux versão 26-05-13

Ganglia

• Ganglia Monitor Daemon (gmond) aplicação principal de monitoramento do Ganglia

• Ganglia Meta Daemon (gmetad) executado na máquina central coletando e armazenando as informações de estados dos nós

• Ganglia Metad Web Interface

Page 65: Construindo Supercomputadores com Linux versão 26-05-13

Ganglia Monitor Daemon (gmond)

• deve ser instalado em todos os nós do cluster que desejamos monitorar

• principais características:

Page 66: Construindo Supercomputadores com Linux versão 26-05-13

Ganglia Meta Daemon (gmetad)

– Deve ser instalado e executado no webfrontend

– funções: • reunir todos os dados de cada gmond dos nós• armazenar as informações em um banco de dados• fazer o resumo de todos as informações para ser

apresentado pelo nó de gerência

Page 67: Construindo Supercomputadores com Linux versão 26-05-13

Ganglia Metad Web Interface

• utiliza um servidor web

• páginas são dinâmicas

• escrito em PHP

Page 68: Construindo Supercomputadores com Linux versão 26-05-13

Programas

• gmond executado em cada nó do cluster

• gmetad é executado na máquina central coletando todas as informações de estado dos nós

• gstat conecta ao gmond e lista as informações de saída dos nós do cluster

• gexec

Page 69: Construindo Supercomputadores com Linux versão 26-05-13

Ganglia - Instalação

Arquivos necessários para instalação no Ganglia no RHEL 4:

• php-gd• rrdtool-1.2.30-1.el4.wrl.i386.rpm• rrdtool-python-1.2.30-1.el4.wrl.i386.rpm• ganglia-3.0.6-1.el4.i386.rpm• ganglia-gmond-3.0.6-1.el4.i386.rpm• ganglia-gmetad-3.0.6-1.el4.i386.rpm• ganglia-web-3.0.6-1.el4.noarch.rpm

Page 70: Construindo Supercomputadores com Linux versão 26-05-13

Passo 0

Instalação do php-gd:# yum install php-gd

Instalação dos arquivos de dependência:# rpm -ivh rrdtool-1.2.30-1.el4.wrl.i386.rpm

# rpm -ivh rrdtool-python-1.2.30-1.el4.wrl.i386.rpm

Page 71: Construindo Supercomputadores com Linux versão 26-05-13

Passo 1 - Instalação do gmond

• Instalar o gmond em todas as máquinas do cluster

# rpm -ivh ganglia-3.0.6-1.el4.i386.rpm

# rpm -ivh ganglia-gmond-3.0.6-1.el4.i386.rpm

Page 72: Construindo Supercomputadores com Linux versão 26-05-13

Passo 1-a - Configuração do gmond

Abrir o arquivo /etc/gmond.conf e alterar os parâmetros name e owner dentro da “tag” cluster

name=“MyCluster” este nome deve ser único pois identifica o cluster

owner=“Mauro”

Page 73: Construindo Supercomputadores com Linux versão 26-05-13

Passo 1-b - Iniciar o serviço gmond

Levantar o processo em todas as máquinas# service gmond restart

Page 74: Construindo Supercomputadores com Linux versão 26-05-13

Passo 2 - Instalação do gmetad

• Instalar o gmetad apenas no host mestre# rpm -ivh ganglia-gmetad-3.0.6-1.el4.i386.rpm

Page 75: Construindo Supercomputadores com Linux versão 26-05-13

Passo 2-a - Configuração do gmetad

Abrir o arquivo de configuração: /etc/gmetad.conf

• Alterar o parâmetro:

data_source “MyCluster” localhost• Alterar o parâmetro:

gridname “MyGrid”• Levantar o processo daemon no nó de gerencia

# service gmetad start

Page 76: Construindo Supercomputadores com Linux versão 26-05-13

Passo 3 - Configuração do Ganglia Frontend

# rpm -ivh ganglia-web-3.0.6-1.el4.noarch.rpm

• Abra o navegador em: http://localhost/ganglia

Page 77: Construindo Supercomputadores com Linux versão 26-05-13

Passo 4 - Marcar os daemons para execução

Execute o comando ntsysv:

# ntsysv

selecione e marque os serviços gmond e gmetad (se instalado) para que sejam iniciados automaticamente

# service gmond restart

# service gmetad restart (se necessário)

Verificar /var/log/messages se há alguma mensagem de erro

Page 78: Construindo Supercomputadores com Linux versão 26-05-13

Nagios

• Gerencia Servidores e Serviços

Page 79: Construindo Supercomputadores com Linux versão 26-05-13

7 - Automatizando a Construção de Cluster HPC

• O processo de construção e gerenciamento de cluster paralelos envolve diversos fatores:– escolha e instalação do SO– definição de ferramentas para configuração– manutenção– monitoramento– escalonamento de tarefas

Page 80: Construindo Supercomputadores com Linux versão 26-05-13

• nodos de controle

• nodos computacionais

• sistema operacional

• bibliotecas de passagem de mensagens

Page 81: Construindo Supercomputadores com Linux versão 26-05-13

SystemImager

• É um software que visa automatizar instalações Linux, distribuições de software e distribuição (deployments) de soluções como web farms, clusters, database farms, laboratório de informática e ambientes desktops corporativos

Page 82: Construindo Supercomputadores com Linux versão 26-05-13

SystemImager (2)

• servidor de imagens

• golden client

• máquinas clientes

Page 83: Construindo Supercomputadores com Linux versão 26-05-13

Kickstart

• É uma ferramenta da Red Hat para criar um modo de instalação automatizada

• A instalação do Kickstart poderá ser executada através de:– cd-rom local– disco rígido– via rede por meio de NFS, FTP ou HTTP

Page 84: Construindo Supercomputadores com Linux versão 26-05-13

FAI (Fully Automatic Installation)

• Conjunto de scripts e arquivos de configuração para instalar de forma automatizada sistemas em cluster com a distribuição Debian

Page 85: Construindo Supercomputadores com Linux versão 26-05-13

Projeto OSCAR (Open Source Cluster Application Resources)

• É um ambiente para instalação, configuração e gerenciamento de clusters de alto desempenho com software livre

• Permite criar dois tipos de nodos: o nó controlador e os nós computacionais

• Possui interface gráfica como assistente de configuração e realização de tarefas

Page 86: Construindo Supercomputadores com Linux versão 26-05-13

Projeto Rocks

• Permite a construção de pequenos clusters HPC rapidamente

• O Rocks é composto de vários aplicativos divididos em listas (rolls) escolhidas no momento da construção do ambiente

Page 87: Construindo Supercomputadores com Linux versão 26-05-13

8 - Programação Paralela

Page 88: Construindo Supercomputadores com Linux versão 26-05-13

Paralelismo

• Sistemas de computação paralela e distribuída

Page 89: Construindo Supercomputadores com Linux versão 26-05-13

Padronizações

• Forum OpenMP

• equipe do PVM

• Forum MPI

Page 90: Construindo Supercomputadores com Linux versão 26-05-13

Programação Paralela

• Objetivo– É transformar grandes algoritmos complexos

em pequenas tarefas que possam ser executadas simultaneamente por vários processadores, reduzindo assim o tempo de processamento

Page 91: Construindo Supercomputadores com Linux versão 26-05-13

• bibliotecas

• ferramentas automáticas

Page 92: Construindo Supercomputadores com Linux versão 26-05-13

Obstáculos ao Paralelismo

• memória distribuída

• partição de dados

• distribuição de dados

Sincronização dos processos

Page 93: Construindo Supercomputadores com Linux versão 26-05-13

Tempo para coordenar as tarefas

• tempo para se inicializar uma tarefa;

• tempo para sincronizar as tarefas;

• tempo para comunicação entre as tarefas, e

• tempo para finalizar uma tarefa

Page 94: Construindo Supercomputadores com Linux versão 26-05-13

OpenMP

• Criado para desenvolvimento de programas paralelos em máquinas compartilhadas

• Característica Principal:– existência de um único espaço de

endereçamento na memória - cada processador poderá ler e escrever em todo espaço de memória do sistema

Page 95: Construindo Supercomputadores com Linux versão 26-05-13

OpenMP (2)

• É composto por diretivas de compilação e bibliotecas para programação multithreads, suportando o modelo de paralelismo de dados

• Permite paralelismo incremental e combina partes de código escrito na forma serial e paralela num único programa-fonte

Page 96: Construindo Supercomputadores com Linux versão 26-05-13

OpenMP (3)

Page 97: Construindo Supercomputadores com Linux versão 26-05-13

PVM - Máquina Virtual Paralela

• O PVM é uma biblioteca de programação paralela por passagem de mensagens para facilitar o campo de computação paralela homogênea

• o PVM já encontra suporte em linguagens como: Java, Python, Perl, além das linguagens tradicionais como C, C++ e Fortran

Page 98: Construindo Supercomputadores com Linux versão 26-05-13

Componentes do PVM

• Composto por duas partes:– primeira parte: daemon pvmd3– segunda parte: biblioteca de rotinas PVM

Page 99: Construindo Supercomputadores com Linux versão 26-05-13

PVM

• O software PVM deve ser instalado especificamente em cada máquina que é para ser usada em sua “máquina virtual”

• $PVM_ROOT/lib

• $PVM_ROOT/bin

Page 100: Construindo Supercomputadores com Linux versão 26-05-13

Alguns diretórios importantes são:

• bin/$PVM_ARCH/

• conf/

• console/

• doc/

• examples/

• gexamples/

• hoster/

Page 101: Construindo Supercomputadores com Linux versão 26-05-13

Alguns diretórios importantes são:

• include/

• lib/

• lib/$PVM_ARCH/

• libfpvm/

• man/man[13]/

• misc/

• patches/

Page 102: Construindo Supercomputadores com Linux versão 26-05-13

Alguns diretórios importantes são:

• pvmgs/• rm/• shmd/• src/• src/$PVM_ARCH/• tasker/• tracer/• xep/

Page 103: Construindo Supercomputadores com Linux versão 26-05-13

PVM

• pvmd3 daemon executable

• pvm o programa de console

• libpvm3.a (biblioteca de funções em C)

• libfpvm3.a (biblioteca de funções em Fortran)

• As bibliotecas e executáveis são instalados em:

$PVM_ROOT/lib/$PVM_ARCH

Page 104: Construindo Supercomputadores com Linux versão 26-05-13

PVM

• os scripts $PVM_ROOT/lib/pvm e $PVM_ROOT/lib/pvmd são usados para iniciar o console e o daemon PVM

• O PVM poderá ser configurado para usar o ssh ao invés do rsh

Page 105: Construindo Supercomputadores com Linux versão 26-05-13

Instalando e configurando o PVM

Criar o arquivo pvm.sh em /etc/profile.d

export PVM_ROOT=/usr/share/pvm3export PVM_ARCH=LINUXexport PATH=$PATH:$PVM_ROOT/lib:

$PVM_ROOT/lib/$PVM_ARCHexport PATH=$PATH:$PVM_ROOT/lib/pvmdexport XPVM_ROOT=/usr/share/pvm3/xpvm

Page 106: Construindo Supercomputadores com Linux versão 26-05-13

Instalando e configurando o PVM

• altere a permissão do arquivo /etc/profile.d/pvm.sh para 755

# chmod 0755 /etc/profile.d/pvm.sh

Page 107: Construindo Supercomputadores com Linux versão 26-05-13

Instalando e configurando o PVM

• Criar no diretório /root o arquivo /root/.xpvm_hosts e o arquivo pvmhosts com o seguinte conteúdo:

/root/.xpvm_hostsmestreescravo1escravo2escravo3

/root/pvmhostsmestreescravo1escravo2escravo3

Page 108: Construindo Supercomputadores com Linux versão 26-05-13

Utilizando o PVM

Execute o PVM:

#pvm

pvm>add mestre

pvm>add escravo1

pvm>add escravo2

pvm>add escravo3

Page 109: Construindo Supercomputadores com Linux versão 26-05-13

Comandos

• halt encerra todos os processos do PVM, inclusive o próprio PVM

• delete host exclui uma máquina do front-end• conf lista a configuração das máquinas

virtuais– hostname– dtiv (pvmd task id)– arch (tipo de arquitetura)– speed (velocidade relativa)

Page 110: Construindo Supercomputadores com Linux versão 26-05-13

Comandos

• help mostra todos os comandos e suas funções– help comando

• id exibe o id do console• jobs lista os processos em execução• kill usado para encerrar os processos do

PVM• mstat exibe o status dos hosts especificados• ps -a • quit sai do console• reset

Page 111: Construindo Supercomputadores com Linux versão 26-05-13

Comandos

• setenv exibe ou seta variáveis de ambiente

• sig emite um sinal a tarefa

• spawn inicia uma aplicação no PVM

Page 112: Construindo Supercomputadores com Linux versão 26-05-13

Compilando os programas exemplos

• Vá para o diretório $PVM_ROOT/examples

• Todos os exemplos assumem que pvm está instalado e rodando concorrentemente

Page 113: Construindo Supercomputadores com Linux versão 26-05-13

Exemplo: hello + hello_other

• Dois programas que cooperam - mostra como criar uma nova tarefa e passar (trocar) mensagens entre as tarefas

• Para compilar:# aimk hello hello_other

Os arquivos serão gerados em: $PVM_ROOT/bin/LINUX

# hello

Page 114: Construindo Supercomputadores com Linux versão 26-05-13

Exemplo: hello + hello_other

• Como executar a partir do console pvm:

pvm> spawn hello

Exemplo de saída:

i’m t40002

from t40003: hello, world from escravo1

Page 115: Construindo Supercomputadores com Linux versão 26-05-13

Outros exemplos

• Vejam outros exemplos no arquivo Readme

Page 116: Construindo Supercomputadores com Linux versão 26-05-13

Utilizando o XPVM

• É uma interface gráfica desenvolvida para mostrar informações, combinando a capacidade do PVM console com todas as vantagens de uma ambiente gráfico e um único nível de depurador de fácil utilização na interface X-Windows

Page 117: Construindo Supercomputadores com Linux versão 26-05-13

XPVM - Instalação

#yum install pvm-gui

#xpvm

Page 118: Construindo Supercomputadores com Linux versão 26-05-13

MPI (Message Passing Interface)

• É uma biblioteca com funções para troca de mensagens responsável pela comunicação e sincronização de processos em um cluster paralelo

• É portável

• Apresenta aproximadamente 129 funções para programação

Page 119: Construindo Supercomputadores com Linux versão 26-05-13

MPI (Message Passing Interface)

• Implementações:– proprietárias– open source

Page 120: Construindo Supercomputadores com Linux versão 26-05-13

MPI - Especificações

• MPI-1 (1992)

• MPI-1.2

• MPI-2 (1997)

Page 121: Construindo Supercomputadores com Linux versão 26-05-13

Algumas implementações MPI

• MPI-F: IBM• MPICH: ANL/MSU - Argone National Laboratory

e Mississipi State University• UNIFY: Mississipi State University• CHIMP: Edinburgh Parallel Computing Center• LAM: Ohio Supercomputer Center• MPL: IBM• OPEN-MPI: Várias entidades de pesquisas e

empresas

Page 122: Construindo Supercomputadores com Linux versão 26-05-13

Conceitos Importantes

• Rank• Group• Communicator• Application Buffer• System Buffer• Blocking Communication• Non-Blocking Communication• Synchronous Send• Buffered Send• Standard Send• Ready Send

Page 123: Construindo Supercomputadores com Linux versão 26-05-13

Comandos

• Divididos em dois grandes grupos:– primeiro grupo> possui os comandos

relacionados a inicialização, identificação e finalização dos processos

– segundo grupo> possui os comandos de comunicação

• comandos ponto a ponto (ex: MPI_Send, MPI_Recv)

• comandos em grupo (ex: MPI_Bcast, MPI_Reduce)

Page 124: Construindo Supercomputadores com Linux versão 26-05-13

MPICH (MPICHamaleon)

• É uma implementação do padrão MPI (Message Passing Interface)

Page 125: Construindo Supercomputadores com Linux versão 26-05-13

MPICH - Instalação

• tar -zxvf mpich.tar• mv mpich-1.2.7 /usr/local• cd /usr/local/mpich-1.2.7

• Digite os comandos na sequência:#./configure --prefix=/usr/local/mpich-1.2.7

#make

#make install

Page 126: Construindo Supercomputadores com Linux versão 26-05-13

MPICH - Instalação

• Edite o arquivo machine.LINUX em /usr/local/mpich-1.2.7/util/machines/machines.LINUX

• E acrescente os nomes dos computadores que farão parte do cluster:

mestreescravo1escravo2escravo3

Page 127: Construindo Supercomputadores com Linux versão 26-05-13

MPICH - Instalação

• Alterar o arquivo profile no diretório /etc e acrescentar a linha:

export MPIR_HOME=/usr/local/

Page 128: Construindo Supercomputadores com Linux versão 26-05-13

MPICH - Testes

# cd /usr/local/mpich-1.2.7/examples/basic

Compilação do programa CPI (Cálculo do PI)

# mpicc cpi.c -o cpi

Executando a aplicação com 3 processos:

# mpirun -np 3 cpi

Page 129: Construindo Supercomputadores com Linux versão 26-05-13

MPI-Testes

# cd /usr/local/mpich-1.2.7/examples

# cd perftest

Execute os comandos:

# ./configure --with-mpich

# make

Page 130: Construindo Supercomputadores com Linux versão 26-05-13

MPI-Tests

# mpirun -np 2 mpptest -logscale

# mpirun -np 3 mpptest -bisect -logscale

Page 131: Construindo Supercomputadores com Linux versão 26-05-13

MPE - Multi-Processing Environment

• É uma extensão das bibliotecas do MPICH que facilita a geração de arquivos de log, depuradores de rotinas de configuração, rotinas de serialização de sessões de códigos paralelos e uma biblioteca gráfica X.

Page 132: Construindo Supercomputadores com Linux versão 26-05-13

LAM (Local Area Multicomputer)

• É uma outra implementação do MPI

• Instalando o LAM

• Executando o LAM

Page 133: Construindo Supercomputadores com Linux versão 26-05-13

Instalação do LAM

# yum install lam

# yum install lam-devel

# yum install lam-libs

# laminfo verifica a instalação

Diretório de instalação:/usr/lib/lam

Acrescentar ao arquivo /etc/profile:export PATH=$PATH:/usr/lib/lam/bin

Page 134: Construindo Supercomputadores com Linux versão 26-05-13

Instalação do LAM

/usr/lib/lam/etc/lam-bhost.def

/home/<user>/mkdir mpi

cd mpi

vi lamhosts

mestre

escravo1

escravo2

Page 135: Construindo Supercomputadores com Linux versão 26-05-13

OpenMPI - Open Source High Performance Computing

O projeto Open MPI é uma implementação do padrão MPI-2, desenvolvido e mantido por um consórcio formado por universidades, pesquisadores e empresas.

Visa construir uma biblioteca MPI em código aberto

Page 136: Construindo Supercomputadores com Linux versão 26-05-13

OpenMPI - Instalação

# yum install openmpi

# cd /usr/lib/openmpi

# man mpi

Page 137: Construindo Supercomputadores com Linux versão 26-05-13

Comparando o PVM ao MPI-1

• portabilidade

• máquina virtual

• recursos

• topologia

• tolerância a falhas

Page 138: Construindo Supercomputadores com Linux versão 26-05-13

Comparando o PVM ao MPI-1

PVM MPI-1

Portabilidade possui um grau maior de portabilidade

Máquina Virtual coleta máquinas como visão de um único recurso

não utiliza essa abstração

Recursos forma dinâmica forma estática

Topologia exige do programador a visão de agrupamento de tarefas

abstração em ternos de topologia

Tolerância a Falhas

Page 139: Construindo Supercomputadores com Linux versão 26-05-13

Ferramentas auxiliares na programação paralela

• Intel Tracer & Collector

• Cluster Development Kit

• TotalView

• Paragraph

• outras

Page 140: Construindo Supercomputadores com Linux versão 26-05-13

9 - Renderizando Imagens com o POVRay

Page 141: Construindo Supercomputadores com Linux versão 26-05-13

10 - Ferramentas de Análise de Desempenho e Otimizações

Page 142: Construindo Supercomputadores com Linux versão 26-05-13

11 - Sistema de Arquivos Distribuídos

Page 143: Construindo Supercomputadores com Linux versão 26-05-13

Sistemas de Arquivos Distribuídos

• NAS = Networked Attached Storage

• SAN = Storage Area Network

• Storage = armazenamento

Page 144: Construindo Supercomputadores com Linux versão 26-05-13

Formas de sistema de arquivos em um cluster paralelo

• um ou mais servidores NFS para exportar o sistema de arquivos para todos os nodos

• sistema de arquivos puramente paralelo

• usar discos locais para prover um sistema de arquivos separado para cada nodo

Page 145: Construindo Supercomputadores com Linux versão 26-05-13

• NFS• Sistemas de arquivos em rede de alta

performance• openAFS• CODA• Intermezzo• openGFS• Lustre• GPFS• PVFS

Page 146: Construindo Supercomputadores com Linux versão 26-05-13

O Sistema de arquivos NFS

Page 147: Construindo Supercomputadores com Linux versão 26-05-13

12 - Gerenciando Recursos em um Cluster

Page 148: Construindo Supercomputadores com Linux versão 26-05-13

• Queuing

• Escalonamento de Tarefas

• Políticas de Escalonamento

Page 149: Construindo Supercomputadores com Linux versão 26-05-13

13 - Cluster x Grids - Uma visão introdutória

Page 150: Construindo Supercomputadores com Linux versão 26-05-13

Grid Computig

Page 151: Construindo Supercomputadores com Linux versão 26-05-13

Benefícios de um Grid

Page 152: Construindo Supercomputadores com Linux versão 26-05-13

Arquitetura de um Grid

Page 153: Construindo Supercomputadores com Linux versão 26-05-13

Principais Projetos de Grid

• Globus

• Legion

• Condor

Page 154: Construindo Supercomputadores com Linux versão 26-05-13

Conclusão

Page 155: Construindo Supercomputadores com Linux versão 26-05-13

Termos

• computação em cluster• processamento paralelo• aplicações paralelas• processamento distribuído• programas paralelos• programação paralela• ambiente paralelo• paralelismo• dados paralelos• computação baseada em cluster

Page 156: Construindo Supercomputadores com Linux versão 26-05-13

Processamento Paralelo x Distribuído

• processamento paralelo visa resolver um problema em um menor espaço de tempo possível

• processamento distribuído o objetivo também é o poder computacional, mas a visão de alta disponibilidade, migração de processos, transparência aos recursos, dentre outros.

Page 157: Construindo Supercomputadores com Linux versão 26-05-13

Servidor RSH

• Inclui as seguintes funções:– emulador de terminal de comandos (rlogin)– execução remota de comandos (rexec)– copia remota de arquivos (rcp)

Page 158: Construindo Supercomputadores com Linux versão 26-05-13

Links

• https://www.millennium.berkeley.edu/

Ferramenta RRDTool - usada pelo Ganglia– http://www.rrdtool.com/

– http://oss.oetiker.ch/rrdtool/

• gexec– http://ganglia.info/talks/lug_lbl_talk/index.html– http://www.theether.org/gexec/

Page 159: Construindo Supercomputadores com Linux versão 26-05-13

Links

• MPICH– http://www.mcs.anl.gov/research/projects/mpi/– http://www.mcs.anl.gov/research/projects/mpi/

mpich1/docs/mpichman-chp4/mpichman-chp4.htm

– ftp://ftp.mcs.anl.gov/pub/mpi/ 1.2.7

• Atlas– http://math-atlas.sourceforge.net/

Page 160: Construindo Supercomputadores com Linux versão 26-05-13

Links

• FFTW– http://www.fftw.org/

• PVM (Parallel Virtual Machine)– http://www.csm.ornl.gov/pvm/

• LAM (Local Area Multicomputer)– http://www.lam-mpi.org/

• Open-MPI– http://www.open-mpi.org/

Page 161: Construindo Supercomputadores com Linux versão 26-05-13

Links

• http://www.rocketcalc.com/vct/4.html

• XMTV– http://www.lam-mpi.org/software/xmtv/

• Open-MPI– http://www.open-mpi.org/software/ompi/v1.3/

• OpenMP– http://scv.bu.edu/documentation/tutorials/Ope

nMP/

Page 162: Construindo Supercomputadores com Linux versão 26-05-13

Instalação

• criar o arquivo /etc/yum.repos.d/DVDlocal.repo com o seguinte conteúdo:

[DVDlocal]

name=Repositorio Local

baseurl=http://10.0.10.177/repo

enabled=1

gpgcheck=0

Page 163: Construindo Supercomputadores com Linux versão 26-05-13

Instalação

• garantir que a variável http_proxy não esteja habilitada

• execute o comando abaixo:

#unset http_proxy

Crie o diretório temp no diretório /etc/yum.repos.d

Mova os arquivos CentOS-Base, CentOS-Media localizados em /etc/yum.repos.d para o diretório temp