Mudanças entre as edições de "Minicluster:Usuários"
De WikiLICC
m (→Conectando) |
m (→Usando o MPE) |
||
(11 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
* Configure o MPICH conforme [Minicluster:MPICH]. | * Configure o MPICH conforme [Minicluster:MPICH]. | ||
== Conectando == | == Conectando == | ||
− | * Conecte-se a alguma máquina do instituto (Ex. hunter,euler,...) utilizando o | + | * [[Acesso_aos_computadores_(contas_de_usuário)|Conecte-se]] a alguma máquina do instituto (Ex. hunter,euler,...) utilizando o [[Acesso_aos_computadores_(contas_de_usuário)|Putty]]. |
* No terminal, conecte-se a máquina '''one''': | * No terminal, conecte-se a máquina '''one''': | ||
[dago@hunter]$ ssh dago@one | [dago@hunter]$ ssh dago@one | ||
− | |||
− | |||
+ | * Crie um arquivo de configuração. Cada usuário deve ter um arquivo <code>.mpd.conf</code> no seu diretório <code>/home/usuario/</code> e deve permitir acesso e leitura somente a este usuário. | ||
+ | [dago@one]$ cd | ||
+ | [dago@one]$ vi .mpd.conf | ||
+ | MPD_SECRET_WORD=yours3cr3tw0rd | ||
+ | MPD_USE_ROOT_MPD=yes | ||
+ | [dago@one]$ chmod 600 .mpd.conf | ||
+ | |||
+ | onde | ||
+ | *<code>MPD_SECRET_WORD</code> pode ser única para cada usuário. | ||
+ | *<code>MPD_USE_ROOT_MPD</code> especifica que usuários não irão iniciar se próprio mpd daemons, mas irão usar um já rodando iniciado pelo root. | ||
− | + | ||
− | Verifique quais nós estão | + | * Verifique quais máquinas nós estão ativas (para nós ativos aparecem o último número do ip e para nós inativos aparece [ . ]): |
− | [dago@one]$ pingcluster | + | [dago@one]$ pingcluster.sh |
==================== | ==================== | ||
= MATRIX = | = MATRIX = | ||
Linha 22: | Linha 30: | ||
[120][121][ . ][ . ] | [120][121][ . ][ . ] | ||
==================== | ==================== | ||
+ | |||
+ | * Verifique os testes da sessão [[Minicluster:MPICH]]. | ||
− | + | * Utilize o ssh para conectar-se a um dos nós ativos (nesse caso usamos o cell108) e utilize o comando mpdtrace para verificar se os nós ativos estão conectados através do '''mpd''' formando um anel (os números após o '_' devem mudar): | |
[dago@one]$ ssh cell108 -T "mpdtrace -l" | [dago@one]$ ssh cell108 -T "mpdtrace -l" | ||
cell108_35232 (192.168.0.108) | cell108_35232 (192.168.0.108) | ||
Linha 35: | Linha 45: | ||
cell109_45891 (192.168.0.109) | cell109_45891 (192.168.0.109) | ||
− | Ok. Nós ativos e conectados através do daemon mpd. Cluster pronto para ser usado em paralelo. | + | Ok. Nós ativos e conectados através do daemon mpd. Cluster pronto para ser usado em paralelo (Caso o mpdtrace não der nenhum resultado, tu não poderás usar o cluster em paralelo). |
== Digitando == | == Digitando == | ||
− | Abra um editor de textos (por exemplo o vi ou emacs): | + | Abra um editor de textos (por exemplo o [http://www.unix-manuals.com/refs/vi-ref/vi-ref.htm vi] ou [http://www.gnu.org/software/emacs/manual/emacs emacs]): |
[dago@one]$ vi hellompi.f90 | [dago@one]$ vi hellompi.f90 | ||
e digite o programa abaixo: | e digite o programa abaixo: | ||
Linha 76: | Linha 86: | ||
=== Rodando no cluster === | === Rodando no cluster === | ||
− | * Para rodar em 4 processadores (2 máquinas x 2 processadores) | + | * Para rodar em 4 processadores (2 máquinas x 2 processadores), conecte-se a um dos nós e execute mpiexec |
+ | [dago@one] $ ssh dago@cell108 | ||
[dago@cell108]$ mpiexec -l -n 4 ./hellompi | [dago@cell108]$ mpiexec -l -n 4 ./hellompi | ||
2: Sou o processo 2 de um total de 4 rodando em cell109 | 2: Sou o processo 2 de um total de 4 rodando em cell109 | ||
Linha 82: | Linha 93: | ||
1: Sou o processo 1 de um total de 4 rodando em cell109 | 1: Sou o processo 1 de um total de 4 rodando em cell109 | ||
3: Sou o processo 3 de um total de 4 rodando em cell108 | 3: Sou o processo 3 de um total de 4 rodando em cell108 | ||
+ | * ou utilize o comando ssh para rodar diretamente no nó cell108 | ||
+ | [dago@one] $ ssh cell108 -T "mpiexec -l -n 4 ./hellompi" | ||
== Usando o MPE == | == Usando o MPE == | ||
* Para compilar o programa: | * Para compilar o programa: | ||
− | [one]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog | + | [dago@one]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog |
* Para rodar o programa: | * Para rodar o programa: | ||
− | [ | + | [dago@cell108]$ mpiexec -l -n 4 ./hellompi |
* Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores: | * Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores: | ||
− | [one]$ jumpshot Unknown.clog2 | + | [dago@one]$ jumpshot Unknown.clog2 |
* Veja sobre visualizadores em http://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm | * Veja sobre visualizadores em http://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm |
Edição atual tal como às 13h29min de 16 de abril de 2012
- Configure o MPICH conforme [Minicluster:MPICH].
Índice
Conectando
- Conecte-se a alguma máquina do instituto (Ex. hunter,euler,...) utilizando o Putty.
- No terminal, conecte-se a máquina one:
[dago@hunter]$ ssh dago@one
- Crie um arquivo de configuração. Cada usuário deve ter um arquivo
.mpd.conf
no seu diretório/home/usuario/
e deve permitir acesso e leitura somente a este usuário.
[dago@one]$ cd [dago@one]$ vi .mpd.conf MPD_SECRET_WORD=yours3cr3tw0rd MPD_USE_ROOT_MPD=yes [dago@one]$ chmod 600 .mpd.conf
onde
MPD_SECRET_WORD
pode ser única para cada usuário.MPD_USE_ROOT_MPD
especifica que usuários não irão iniciar se próprio mpd daemons, mas irão usar um já rodando iniciado pelo root.
- Verifique quais máquinas nós estão ativas (para nós ativos aparecem o último número do ip e para nós inativos aparece [ . ]):
[dago@one]$ pingcluster.sh ==================== = MATRIX = ==================== [108][109][ . ][ . ] [112][113][ . ][ . ] [100] <- switch [116][117][ . ][ . ] [120][121][ . ][ . ] ====================
- Verifique os testes da sessão Minicluster:MPICH.
- Utilize o ssh para conectar-se a um dos nós ativos (nesse caso usamos o cell108) e utilize o comando mpdtrace para verificar se os nós ativos estão conectados através do mpd formando um anel (os números após o '_' devem mudar):
[dago@one]$ ssh cell108 -T "mpdtrace -l" cell108_35232 (192.168.0.108) cell121_55680 (192.168.0.121) cell120_58236 (192.168.0.120) cell117_35568 (192.168.0.117) cell116_42441 (192.168.0.116) cell113_39465 (192.168.0.113) cell112_50931 (192.168.0.112) cell109_45891 (192.168.0.109)
Ok. Nós ativos e conectados através do daemon mpd. Cluster pronto para ser usado em paralelo (Caso o mpdtrace não der nenhum resultado, tu não poderás usar o cluster em paralelo).
Digitando
Abra um editor de textos (por exemplo o vi ou emacs):
[dago@one]$ vi hellompi.f90
e digite o programa abaixo:
program hellompi implicit none include "mpif.h" integer :: np, myid, ier,length character*80 :: nome call MPI_Init( ier ) call MPI_Comm_size( MPI_COMM_WORLD, np, ier) call MPI_Comm_rank( MPI_COMM_WORLD, myid, ier) call MPI_Get_processor_name(nome,length,ier) print *,"Sou o processo ", myid," de um total de ", np," rodando em ",nome call MPI_Finalize( ier ) end program
Compilando
- Conectado a máquina one, compile o programa (não compile conectados aos nós para não sobrecarregá-los):
[dago@one]$ mpif90 hellompi.f90 -o hellompi
Rodando em um processador
Para rodar existem duas opções:
- Conecte a um nó e inicie o comando mpiexec neste nó:
[dago@one]$ ssh dago@cell108 [dago@cell108]$ mpdtrace -l cell108_41888 (192.168.0.108) cell109_42454 (192.168.0.109) [dago@cell108]$ mpiexec ./hellompi
- Utilize o comando ssh para rodar o comando mpiexec no nó:
[dago@one]$ ssh cell108 -T "mpiexec ./hellompi"
Rodando no cluster
- Para rodar em 4 processadores (2 máquinas x 2 processadores), conecte-se a um dos nós e execute mpiexec
[dago@one] $ ssh dago@cell108 [dago@cell108]$ mpiexec -l -n 4 ./hellompi 2: Sou o processo 2 de um total de 4 rodando em cell109 0: Sou o processo 0 de um total de 4 rodando em cell108 1: Sou o processo 1 de um total de 4 rodando em cell109 3: Sou o processo 3 de um total de 4 rodando em cell108
- ou utilize o comando ssh para rodar diretamente no nó cell108
[dago@one] $ ssh cell108 -T "mpiexec -l -n 4 ./hellompi"
Usando o MPE
- Para compilar o programa:
[dago@one]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog
- Para rodar o programa:
[dago@cell108]$ mpiexec -l -n 4 ./hellompi
- Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores:
[dago@one]$ jumpshot Unknown.clog2
- Veja sobre visualizadores em http://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm
Problemas:
1) mpdtrace resulta vazio
Caso as máquinas não estejam conectadas através do mpd, o usuário pode formar ele mesmo um anel (Comunique ao Prof.Dagoberto por email para que possa iniciar o serviço). No momento, crie um arquivo ~/.mpd.hosts com os nós ativos (2 máquinas nesse exemplo):
[dago@cell108]$ vi ~/.mpd.hosts cell108:2 cell109:2
e inicie um anel
[dago@cell108]$ mpdboot -n 2 -f ~/.mpd.hosts
Verifique se funcionou.
[dago@cell108]$ mpdtrace -l cell108_41199 (192.168.0.108) cell109_52092 (192.168.0.109)