Mudanças entre as edições de "Minicluster:Usuários"

De WikiLICC
Ir para: navegação, pesquisa
m (Conectando)
m (Conectando)
Linha 5: Linha 5:
 
* 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
* Verifique quais máquinas nós estão ativas:
+
 
 +
* 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 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
 
  [dago@one]$ pingcluster.sh
 
  ====================
 
  ====================
Linha 17: Linha 31:
 
  ====================
 
  ====================
  
Verifique os testes da sessão [Minicluster:MPICH], principalmente o último usando '''mpiboot'''. Inicie o daemon
+
* Verifique os testes da sessão [[Minicluster:MPICH]], Inicie o daemon
Verifique quais nós estão ativos (para nós ativos aparecem o último número do ip e para nós inativos aparece [ . ]):
 
[dago@one]$ pingcluster
 
  
  
Verifique se os nós ativos estão conectados através do '''mpd''' formando um anel (os números após o '_' devem mudar):
+
* Verifique 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)

Edição das 15h36min de 11 de abril de 2012

  • Configure o MPICH conforme [Minicluster:MPICH].

Conectando

  • Conecte-se a alguma máquina do instituto (Ex. hunter,euler,...) utilizando o Putty (veja em...).
  • 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 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.

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)
[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

Usando o MPE

  • Para compilar o programa:
 [one]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog
  • Para rodar o programa:
 [one]$ mpiexec -l -n 4 ./hellompi 
  • Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores:
 [one]$ jumpshot Unknown.clog2

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)