Minicluster:Compilando MPI

De WikiLICC
Revisão de 10h40min de 20 de março de 2012 por Dago (Discussão | contribs) (Digitando)
Ir para: navegação, pesquisa
  • Configure o MPICH conforme [Minicluster:MPICH].

Conectando

Conecte-se a alguma máquina do instituto (Ex. hunter,euler,...).

Conecte-se a máquina one:

[dago@hunter]$ ssh dago@one

Verifique quais máquinas nós estão ativas:

[dago@one]$ pingcluster


Verifique os testes da sessão [Minicluster:MPICH], principalmente o último usando mpiboot. 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
====================
=      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.

Digitando

Abra um editor de textos

[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

  • Para compilar o programa, digite
[one]$ mpif90 hellompi.f90 -o hellompi

Rodando em um processador

  • Inicie o mpd daemon:
[one]$ mpdboot -n 2 -f ~/.mpd.hosts
[one]$ mpdtrace -l
one.matrix_54419 (192.168.0.99)
cell100.matrix_41888 (192.168.0.100)

Caso for utilizado rsh, iniciar o cluster com a opção --rsh=rsh

  • Para rodar o programa em um processador, digite
[one]$ mpiexec ./hellompi

Rodando no cluster

  • Para rodar em 4 processadores (2 máquinas x 2 processadores)
[one]$ mpiexec -l -n 4 ./hellompi
2:  Sou o processo 2  de um total de            4  rodando em one.matrix
0:  Sou o processo 0  de um total de            4  rodando em one.matrix
1:  Sou o processo 1  de um total de            4  rodando em cell100.matrix
3:  Sou o processo 3  de um total de            4  rodando em cell100.matrix

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