Mudanças entre as edições de "Minicluster:Compilando MPI"

De WikiLICC
Ir para: navegação, pesquisa
m (Compilando)
m
Linha 31: Linha 31:
 
  [one]$ mpif90 hellompi.f90 -o hellompi
 
  [one]$ mpif90 hellompi.f90 -o hellompi
  
== Rodando ==
+
== Rodando em um processador ==
* Para rodar o programa, digite
+
* Para rodar o programa em um processador, digite
[one]$ mpiexec -l -n 2 ./hellompi
 
 
 
== Rodando ==
 
* Para rodar o programa em um processador
 
 
  [one]$ mpiexec ./hellompi
 
  [one]$ mpiexec ./hellompi
  
* Rode novamente usando mais processos (e um processador - talvez 2 se for dual-core ?)
+
== Rodando no cluster ==
[one]$ mpiexec -np 4 ./hellompi
+
* Para rodar em 4 processadores (2 máquinas x 2 processadores)
Sou o processo            0  de um total de            4  rodando em one.matrix
 
Sou o processo            2  de um total de            4  rodando em one.matrix
 
Sou o processo            1  de um total de            4  rodando em one.matrix
 
Sou o processo            3  de um total de            4  rodando em one.matrix
 
onde <code>one.matrix</code> é o nome da máquina (todas no mesmo nó ainda). Para rodar em mais máquinas, primeiro desligue o mpd
 
[usuario@one]$ mpdallexit
 
 
 
== Testando o anel de máquinas ==
 
Um programa hellompi em paralelo
 
 
  [one]$ mpiexec -l -n 4 ./hellompi
 
  [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
 
  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
 
  1:  Sou o processo 1  de um total de            4  rodando em cell100.matrix
2:  Sou o processo 2  de um total de            4  rodando em one.matrix
 
 
  3:  Sou o processo 3  de um total de            4  rodando em cell100.matrix
 
  3:  Sou o processo 3  de um total de            4  rodando em cell100.matrix
  
== Teste final ==
+
== Usando o MPE ==
No mestre
+
* Para compilar o programa:
[one]$ mpdboot -n 2
+
  [one]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog
[one]$ mpdtrace -l
+
 
one.matrix_40584 (192.168.0.99)
+
* Para rodar o programa:
cell100.matrix_59410 (192.168.0.100)
+
  [one]$ mpiexec -l -n 4 ./hellompi  
+
 
[one]$ cd fortran/
+
* Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores:
[one]$ mpiexec -l -n 2 ./hellompi
+
  [one]$ jumpshot Unknown.clog2
1:  Sou o processo            1  de um total de            2  rodando em cell100.matrix
 
0:  Sou o processo            0  de um total de            2  rodando em one.matrix
 
  
Em cell100
+
** http://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm
[cell100]$ mpdtrace -l
 
cell100.matrix_59410 (192.168.0.100)
 
one.matrix_40584 (192.168.0.99)
 

Edição das 00h00min de 7 de julho de 2010

  • Configure o MPICH conforme [Minicluster:MPICH].

Digitando

Conecte-se a máquina one. Verifique os testes da sessão [Minicluster:MPICH], principalmente o último usando mpiboot. Inicie o daemon

[hunter]$ ssh usuario@one
[one]$ mpdboot -n 2 -f ~/.mpd.hosts
[one]$ mpdtrace -l
one.matrix_54419 (192.168.0.99)
cell100.matrix_41888 (192.168.0.100)

Abra um editor de textos

[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

  • 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