Title: Construindo Supercomputadores com Linux
1Construindo Supercomputadores com Linux
21 - Introdução a supercomputação
3Paralelismo
- 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
4Processamento Paralelo
5Classificação de Flynn
6Arquitetura MIMD
- Memória Compartilhada
- Memória Distribuída
7MPP - Processadores Paralelos Massivos
8SMP
9CC-NUMA
10Sistemas Distribuídos
- computação distribuída
- computador paralelo
112 - 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
12Categorias 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
13Alta 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
14Clusters 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
15Vantagens em usar Cluster de Computadores
- Alto Desempenho
- Escalabilidade
- Tolerância a Falhas
- Baixo custo
- Independência de fornecedores
16Aplicabilidades
- 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
17Aplicabilidades (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
18Divisã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
19Cluster 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
20Caracterí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
21O Cluster Beowulf pode ser dividido em duas
classes
- Cluster Classe I
- Cluster Classe II
22Cluster 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)
23Cluster 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
24Principais 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
25Redes de interconexão de alta velocidade
26Ferramentas padrão para o processamento
distribuído
273 - Construindo um Cluster de Alto Desempenho
28Tipos 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
29Top 500
304 - Principais Redes para Clusters
31 32Divisão das redes
- Redes estáticas
- Redes dinâmicas
33Topologias de redes mais comuns para clusters
- fat tree
- estrela
- malha (mesh)
34- A latência é inversamente proporcional a
eficiência - A largura de banda é diretamente proporcional a
sua eficiência
35Tecnologias
- Ethernet
- Fast-Ethernet
- Gigabit-Ethernet
36Outras Tecnologias
- Myrinet
- QsNet
- SCI - Scalable Coherent Interface
- HIPPI - High Performance Parallel Interface
375 - Configurando nosso Cluster
38Roteiro 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
39Roteiro 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
40Roteiro 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
411º 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
422º 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
433º 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
444º 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
455º 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
466º 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)
477º 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
488º Passo - Replicação
- Todos os arquivos hosts, hosts.equiv, securettty
e .rhosts devem ser replicados em todos os
computadores que formam o supercomputador
(cluster)
49Configurando 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
50NFS - 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)
51NFS - Cliente
- Nas máquinas cliente, podemos fazer os seguintes
tipos de montagem - montagem manual
- montagem automática
- automontagem
52NFS - 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
53Chamadas 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)
54Modelo de troca de mensagens
request
processo cliente
processo servidor
response
55Servidores 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
56Servidores de Tempo - Configuração
- /etc/ntp.conf
- Execute o comando
- touch /etc/ntp.drift
- Verifique o status do servidor NTP
- service ntpd status
576 - 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
58bWatch (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)
59Pré-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
60Instalaçã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
61Instalaçã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
62Instalação do bWatch
- Liste o nome da cada host que será monitorado
- Exemplo
- set listOfHosts mestre escravo1 escravo2
escrado3
63Ganglia
- 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
64Ganglia
- 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
65Ganglia Monitor Daemon (gmond)
- deve ser instalado em todos os nós do cluster que
desejamos monitorar - principais características
66Ganglia 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
67Ganglia Metad Web Interface
- utiliza um servidor web
- páginas são dinâmicas
- escrito em PHP
68Programas
- 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 ?
69Ganglia - 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
70Passo 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.rp
m
71Passo 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
72Passo 1-a - Configuração do gmond
- Abrir o arquivo /etc/gmond.conf e alterar os
parâmetros name e owner dentro da tag cluster - nameMyCluster ? este nome deve ser único pois
identifica o cluster - ownerMauro
73Passo 1-b - Iniciar o serviço gmond
- Levantar o processo em todas as máquinas
- service gmond restart
74Passo 2 - Instalação do gmetad
- Instalar o gmetad apenas no host mestre
- rpm -ivh ganglia-gmetad-3.0.6-1.el4.i386.rpm
75Passo 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
76Passo 3 - Configuração do Ganglia Frontend
- rpm -ivh ganglia-web-3.0.6-1.el4.noarch.rpm
- Abra o navegador em http//localhost/ganglia
77Passo 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
78Nagios
- Gerencia Servidores e Serviços
797 - 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
80- nodos de controle
- nodos computacionais
- sistema operacional
- bibliotecas de passagem de mensagens
81SystemImager
- É 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
82SystemImager (2)
- servidor de imagens
- golden client
- máquinas clientes
83Kickstart
- É 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
84FAI (Fully Automatic Installation)
- Conjunto de scripts e arquivos de configuração
para instalar de forma automatizada sistemas em
cluster com a distribuição Debian
85Projeto 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
86Projeto 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
878 - Programação Paralela
88Paralelismo
- Sistemas de computação paralela e distribuída
89Padronizações
- Forum OpenMP
- equipe do PVM
- Forum MPI
90Programaçã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
91- bibliotecas
- ferramentas automáticas
92Obstáculos ao Paralelismo
- memória distribuída
- partição de dados
- distribuição de dados
- Sincronização dos processos
93Tempo 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
94OpenMP
- 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
95OpenMP (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
96OpenMP (3)
97PVM - 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
98Componentes do PVM
- Composto por duas partes
- primeira parte daemon pvmd3
- segunda parte biblioteca de rotinas PVM
99PVM
- 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
100Alguns diretórios importantes são
- bin/PVM_ARCH/
- conf/
- console/
- doc/
- examples/
- gexamples/
- hoster/
101Alguns diretórios importantes são
- include/
- lib/
- lib/PVM_ARCH/
- libfpvm/
- man/man13/
- misc/
- patches/
102Alguns diretórios importantes são
- pvmgs/
- rm/
- shmd/
- src/
- src/PVM_ARCH/
- tasker/
- tracer/
- xep/
103PVM
- 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
104PVM
- 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
105Instalando e configurando o PVM
- Criar o arquivo pvm.sh em /etc/profile.d
- export PVM_ROOT/usr/share/pvm3
- export PVM_ARCHLINUX
- export PATHPATHPVM_ROOT/libPVM_ROOT/lib/PVM
_ARCH - export PATHPATHPVM_ROOT/lib/pvmd
- export XPVM_ROOT/usr/share/pvm3/xpvm
106Instalando e configurando o PVM
- altere a permissão do arquivo /etc/profile.d/pvm.s
h para 755 - chmod 0755 /etc/profile.d/pvm.sh
107Instalando 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
108Utilizando o PVM
- Execute o PVM
- pvm
- pvmgtadd mestre
- pvmgtadd escravo1
- pvmgtadd escravo2
- pvmgtadd escravo3
109Comandos
- 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)
110Comandos
- 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
111Comandos
- setenv ? exibe ou seta variáveis de ambiente
- sig ? emite um sinal a tarefa
- spawn ? inicia uma aplicação no PVM
112Compilando os programas exemplos
- Vá para o diretório PVM_ROOT/examples
- Todos os exemplos assumem que pvm está instalado
e rodando concorrentemente
113Exemplo 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
114Exemplo hello hello_other
- Como executar a partir do console pvm
- pvmgt spawn ? hello
- Exemplo de saída
- im t40002
- from t40003 hello, world from escravo1
115Outros exemplos
- Vejam outros exemplos no arquivo Readme
116Utilizando 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
117XPVM - Instalação
118MPI (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
119MPI (Message Passing Interface)
- Implementações
- proprietárias
- open source
120MPI - Especificações
- MPI-1 (1992)
- MPI-1.2
- MPI-2 (1997)
121Algumas 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
122Conceitos Importantes
- Rank
- Group
- Communicator
- Application Buffer
- System Buffer
- Blocking Communication
- Non-Blocking Communication
- Synchronous Send
- Buffered Send
- Standard Send
- Ready Send
123Comandos
- Divididos em dois grandes grupos
- primeiro grupogt possui os comandos relacionados a
inicialização, identificação e finalização dos
processos - segundo grupogt possui os comandos de comunicação
- comandos ponto a ponto (ex MPI_Send, MPI_Recv)
- comandos em grupo (ex MPI_Bcast, MPI_Reduce)
124MPICH (MPICHamaleon)
- É uma implementação do padrão MPI (Message
Passing Interface)
125MPICH - 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
126MPICH - Instalação
- Edite o arquivo machine.LINUX em
/usr/local/mpich-1.2.7/util/machines/machines.LINU
X - E acrescente os nomes dos computadores que farão
parte do cluster - mestre
- escravo1
- escravo2
- escravo3
127MPICH - Instalação
- Alterar o arquivo profile no diretório /etc e
acrescentar a linha - export MPIR_HOME/usr/local/
128MPICH - 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
129MPI-Testes
- cd /usr/local/mpich-1.2.7/examples
- cd perftest
- Execute os comandos
- ./configure --with-mpich
- make
130MPI-Tests
- mpirun -np 2 mpptest -logscale
- mpirun -np 3 mpptest -bisect -logscale
131MPE - 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.
132LAM (Local Area Multicomputer)
- É uma outra implementação do MPI
- Instalando o LAM
- Executando o LAM
133Instalaçã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 PATHPATH/usr/lib/lam/bin
134Instalação do LAM
- /usr/lib/lam/etc/lam-bhost.def
- /home/ltusergt/mkdir mpi
- cd mpi
- vi lamhosts
- mestre
- escravo1
- escravo2
135OpenMPI - 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
136OpenMPI - Instalação
- yum install openmpi
- cd /usr/lib/openmpi
- man mpi
137Comparando o PVM ao MPI-1
- portabilidade
- máquina virtual
- recursos
- topologia
- tolerância a falhas
138Comparando 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
139Ferramentas auxiliares na programação paralela
- Intel Tracer Collector
- Cluster Development Kit
- TotalView
- Paragraph
- outras
1409 - Renderizando Imagens com o POVRay
14110 - Ferramentas de Análise de Desempenho e
Otimizações
14211 - Sistema de Arquivos Distribuídos
143Sistemas de Arquivos Distribuídos
- NAS Networked Attached Storage
- SAN Storage Area Network
- Storage armazenamento
144Formas 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
145- NFS
- Sistemas de arquivos em rede de alta performance
- openAFS
- CODA
- Intermezzo
- openGFS
- Lustre
- GPFS
- PVFS
146O Sistema de arquivos NFS
14712 - Gerenciando Recursos em um Cluster
148- Queuing
- Escalonamento de Tarefas
- Políticas de Escalonamento
14913 - Cluster x Grids - Uma visão introdutória
150Grid Computig
151Benefícios de um Grid
152Arquitetura de um Grid
153Principais Projetos de Grid
154Conclusão
155Termos
- 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
156Processamento 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.
157Servidor RSH
- Inclui as seguintes funções
- emulador de terminal de comandos (rlogin)
- execução remota de comandos (rexec)
- copia remota de arquivos (rcp)
158Links
- 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/
159Links
- MPICH
- http//www.mcs.anl.gov/research/projects/mpi/
- http//www.mcs.anl.gov/research/projects/mpi/mpich
1/docs/mpichman-chp4/mpichman-chp4.htm - ftp//ftp.mcs.anl.gov/pub/mpi/ ? 1.2.7
- Atlas
- http//math-atlas.sourceforge.net/
160Links
- 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/
161Links
- 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/OpenMP/
162Instalação
- criar o arquivo /etc/yum.repos.d/DVDlocal.repo
com o seguinte conteúdo - DVDlocal
- nameRepositorio Local
- baseurlhttp//10.0.10.177/repo
- enabled1
- gpgcheck0
163Instalaçã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