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

De WikiLICC
Ir para: navegação, pesquisa
m (Compilando)
m (Digitando)
Linha 7: Linha 7:
 
  one.matrix_54419 (192.168.0.99)
 
  one.matrix_54419 (192.168.0.99)
 
  cell100.matrix_41888 (192.168.0.100)
 
  cell100.matrix_41888 (192.168.0.100)
 +
 +
Abra um editor de textos e digite o programa abaixo:
 +
[one]$ vi hellompi.f90
 +
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
  
 
== Rodando ==
 
== Rodando ==

Edição das 23h30min de 6 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
[one]$ mpdtrace -l
one.matrix_54419 (192.168.0.99)
cell100.matrix_41888 (192.168.0.100)

Abra um editor de textos e digite o programa abaixo:

[one]$ vi hellompi.f90
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

Rodando

  • Para rodar o programa em um processador
[one]$ mpiexec ./hellompi
  • Rode novamente usando mais processos (e um processador - talvez 2 se for dual-core ?)
[one]$ mpiexec -np 4 ./hellompi
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 one.matrix é 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
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
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

Teste final

No mestre

[one]$ mpdboot -n 2
[one]$ mpdtrace -l
one.matrix_40584 (192.168.0.99)
cell100.matrix_59410 (192.168.0.100)

[one]$ cd fortran/
[one]$ mpiexec -l -n 2 ./hellompi
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

[cell100]$ mpdtrace -l
cell100.matrix_59410 (192.168.0.100)
one.matrix_40584 (192.168.0.99)