Construindo Supercomputadores com Linux

Download Report

Transcript Construindo Supercomputadores com Linux

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

1 Introdução a supercomputação

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

Processamento Paralelo

• SISD • MISD • SIMD • MIMD

Classificação de Flynn

Arquitetura MIMD

• Memória Compartilhada • Memória Distribuída

MPP - Processadores Paralelos Massivos

• UMA • NUMA • COMA

SMP

CC-NUMA

Sistemas Distribuídos

• computação distribuída • computador paralelo

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

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

Computing) (HPC - High Performance – configuração designada a prover grande poder computacional do que somente um único computador poderia oferecer em capacidade de processamento

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

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

Vantagens em usar Cluster de Computadores • Alto Desempenho • Escalabilidade • Tolerância a Falhas • Baixo custo • Independência de fornecedores

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

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

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

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

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”

O Cluster Beowulf pode ser dividido em duas classes • Cluster Classe I • Cluster Classe II

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)

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

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

Redes de interconexão de alta velocidade • Myrinet • SCI • ATM

Ferramentas padrão para o processamento distribuído • TCP/IP • DCE • OSF

3 - Construindo um Cluster de Alto Desempenho

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

possuem diferentes características ou diferentes redes de comunicação entre grupos de máquinas  seus nós

Top 500

http://www.top500.org/

4 - Principais Redes para Clusters

• conectividade • topologia

Divisão das redes

• Redes estáticas • Redes dinâmicas

Topologias de redes mais comuns para clusters • fat tree • estrela • malha (mesh)

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

Tecnologias

• Ethernet • Fast-Ethernet • Gigabit-Ethernet

Outras Tecnologias

• Myrinet • QsNet • SCI - Scalable Coherent Interface • HIPPI - High Performance Parallel Interface

5 - Configurando nosso Cluster

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

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

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

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

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 nome das máquinas para resolver o Exemplo: 192.168.7.71 mestre 192.168.7.72 escravo1 192.168.7.73 escravo2 192.168.7.74 escravo3

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

mestre escravo1 escravo2 escravo3

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 .rhosts

mestre escravo1 escravo2 escravo3

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

6º Passo - Configuração dos dispositivos para conexão O arquivo /etc/securetty quais dispositivos tty permite especificar que o usuário

root

pode conectar-se • O formato do arquivo /etc/securetty de dispositivo tty é a lista onde a conexão é permitida • Acrescentar as entradas ao final do arquivo: – rsh (remote shell) – rlogin (remote login)

7º Passo - Habilitar os comando “R” • Habilite os serviços de rsh , rlogin rexec com o comando ntsysv • Inicie o xinetd através do comando: # service xinetd start e 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

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)

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/escrita no_root_squach  privilégios de superusuário

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 )

NFS - Cliente

Nas máquinas cliente, podemos fazer os seguintes tipos de montagem: • montagem manual • montagem automática • automontagem

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

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)

Modelo de troca de mensagens

processo cliente request response processo servidor

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

Servidores de Tempo Configuração • /etc/ntp.conf

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

Verifique o status do servidor NTP: # service ntpd status

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

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)

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

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

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 /usr/local/bin para instalá-lo em • Altere a variável listOfHosts localizado no arquivo ~/.bWatchrc.tcl

Instalação do bWatch

• Liste o nome da cada host que será monitorado • Exemplo: set listOfHosts { mestre escravo1 escravo2 escrado3 }

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

Ganglia

• Ganglia Monitor Daemon (

gmond

)  aplicação principal de monitoramento do Ganglia • Ganglia Meta Daemon (

gmetad

)  na máquina central coletando e armazenando as informações de estados dos nós executado • Ganglia Metad Web Interface

Ganglia Monitor Daemon (gmond) • deve ser instalado em todos os nós do cluster que desejamos monitorar • principais características:

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

Ganglia Metad Web Interface

• utiliza um servidor web • páginas são dinâmicas • escrito em PHP

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 

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

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

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

Passo 1-a Configuração do gmond Abrir o arquivo /etc/gmond.conf

os parâmetros name e owner e alterar dentro da “tag” cluster

name=“MyCluster”

este nome deve ser único pois identifica o cluster owner=“Mauro”

Passo 1-b Iniciar o serviço gmond Levantar o processo em todas as máquinas # service gmond restart

Passo 2 Instalação do gmetad

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

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

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

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

Nagios

• Gerencia Servidores e Serviços

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

• nodos de controle • nodos computacionais • sistema operacional • bibliotecas de passagem de mensagens

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

SystemImager (2)

• servidor de imagens • golden client • máquinas clientes

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

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

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

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

8 Programação Paralela

Paralelismo

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

Padronizações

• Forum OpenMP • equipe do PVM • Forum MPI

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

• bibliotecas • ferramentas automáticas

Obstáculos ao Paralelismo

• memória distribuída • partição de dados • distribuição de dados Sincronização dos processos

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

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

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

OpenMP (3)

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

Componentes do PVM

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

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

Alguns diretórios importantes são: • bin/$PVM_ARCH/ • conf/ • console/ • doc/ • examples/ • gexamples/ • hoster/

Alguns diretórios importantes são: • include/ • lib/ • lib/$PVM_ARCH/ • libfpvm/ • man/man[13]/ • misc/ • patches/

Alguns diretórios importantes são: • pvmgs/ • rm/ • shmd/ • src/ • src/$PVM_ARCH/ • tasker/ • tracer/ • xep/

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

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

Instalando e configurando o PVM Criar o arquivo pvm.sh

em /etc/profile.d

export PVM_ROOT=/usr/share/pvm3 export PVM_ARCH=LINUX export PATH=$PATH:$PVM_ROOT/lib:$PVM_ROOT/lib /$PVM_ARCH export PATH=$PATH:$PVM_ROOT/lib/pvmd export XPVM_ROOT=/usr/share/pvm3/xpvm

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

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_hosts

mestre escravo1 escravo2 escravo3 /root/pvmhosts mestre escravo1 escravo2 escravo3

Utilizando o PVM

Execute o PVM: #pvm pvm>add mestre pvm>add escravo1 pvm>add escravo2 pvm>add escravo3

Comandos

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

host

 exclui uma máquina do front-end • conf  virtuais lista a configuração das máquinas – hostname – dtiv (pvmd task id) – arch (tipo de arquitetura) – speed (velocidade relativa)

Comandos

• help  mostra todos os comandos e suas funções – help comando • id  exibe o id do console • jobs  • ps -a  lista os processos em execução • kill  usado para encerrar os processos do PVM • mstat  exibe o status dos hosts especificados • quit  • reset sai do console

Comandos

• setenv  ambiente exibe ou seta variáveis de • sig  emite um sinal a tarefa • spawn  inicia uma aplicação no PVM

Compilando os programas exemplos • Vá para o diretório $PVM_ROOT/examples • Todos os exemplos assumem que pvm está instalado e rodando concorrentemente

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

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

Outros exemplos

• Vejam outros exemplos no arquivo Readme

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

XPVM Instalação

#yum install pvm-gui #xpvm

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

MPI (Message Passing Interface) • Implementações: – proprietárias – open source

MPI Especificações

• MPI-1 (1992) • MPI-1.2

• MPI-2 (1997)

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

Conceitos Importantes

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

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)

MPICH (

MPICH

amaleon)

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

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

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: mestre escravo1 escravo2 escravo3

MPICH Instalação

• Alterar o arquivo profile no diretório /etc e acrescentar a linha: export MPIR_HOME=/usr/local/

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

MPI-Testes

# cd /usr/local/mpich-1.2.7/examples # cd perftest Execute os comandos: # ./configure --with-mpich # make

MPI-Tests

# mpirun -np 2 mpptest -logscale # mpirun -np 3 mpptest -bisect -logscale

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.

LAM (Local Area Multicomputer)

• É uma outra implementação do MPI • Instalando o LAM • Executando o LAM

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

Instalação do LAM

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

/home//mkdir mpi cd mpi vi lamhosts mestre escravo1 escravo2

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

OpenMPI Instalação

# yum install openmpi # cd /usr/lib/openmpi # man mpi

Comparando o PVM ao MPI-1

• portabilidade • máquina virtual • recursos • topologia • tolerância a falhas

Comparando o PVM ao MPI-1

Portabilidade Máquina Virtual PVM MPI-1 possui um grau maior de portabilidade coleta máquinas como visão de um único recurso forma dinâmica não utiliza essa abstração forma estática Recursos Topologia Tolerância a Falhas exige do programador a visão de agrupamento de tarefas abstração em ternos de topologia

Ferramentas auxiliares na programação paralela • Intel Tracer & Collector • Cluster Development Kit • TotalView • Paragraph • outras

9 - Renderizando Imagens com o POVRay

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

11 - Sistema de Arquivos Distribuídos

Sistemas de Arquivos Distribuídos • NAS = Networked Attached Storage • SAN = Storage Area Network • Storage = armazenamento

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

• NFS • Sistemas de arquivos em rede de alta performance • openAFS • CODA • Intermezzo • openGFS • Lustre • GPFS • PVFS

O Sistema de arquivos NFS

12 - Gerenciando Recursos em um Cluster

• Queuing • Escalonamento de Tarefas • Políticas de Escalonamento

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

Grid Computig

Benefícios de um Grid

Arquitetura de um Grid

Principais Projetos de Grid

• Globus • Legion • Condor

Conclusão

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

Processamento Paralelo x Distribuído • •

processamento paralelo

tempo possível  visa resolver um problema em um menor espaço de

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.

Servidor RSH

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

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/

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/

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/

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/

Instalação

• criar o arquivo /etc/yum.repos.d/DVDlocal.repo

seguinte conteúdo: com o [DVDlocal] name=Repositorio Local baseurl=http://10.0.10.177/repo enabled=1 gpgcheck=0

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 /etc/yum.repos.d

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

para o diretório temp