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
Classificação de Flynn
•
•
•
•
SISD
MISD
SIMD
MIMD
Arquitetura MIMD
• Memória Compartilhada
• Memória Distribuída
MPP - Processadores Paralelos
Massivos
SMP
• UMA
• NUMA
• COMA
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 (HPC - High Performance
Computing)
– 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  seus nós
possuem diferentes características ou
diferentes redes de comunicação entre
grupos de máquinas
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 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
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 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)
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
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
request
processo
cliente
processo
servidor
response
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/bWatch1.1.0.a
• copie o arquivo bWatch-1.1.0a.tar.gz
para o diretório /usr/local/bWatch1.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 para instalá-lo em
/usr/local/bin
• 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)  executado
na máquina central coletando e armazenando
as informações de estados dos nós
• 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.301.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 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”
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 programafonte
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  lista a configuração das máquinas
virtuais
–
–
–
–
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  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
Comandos
• setenv  exibe ou seta variáveis de
ambiente
• 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 (MPICHamaleon)
• É 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/mpich1.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/<user>/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
PVM
Portabilidade
possui um grau maior de
portabilidade
Máquina Virtual
coleta máquinas como
visão de um único
recurso
MPI-1
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
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 - Uma visão
introdutória
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  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.
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/mpichmanchp4.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 com o
seguinte conteúdo:
[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 no diretório
/etc/yum.repos.d
Mova os arquivos CentOS-Base, CentOSMedia localizados em /etc/yum.repos.d
para o diretório temp
Download

Construindo Supercomputadores com Linux