Mudanças entre as edições de "Minicluster:Compilando MPI"
De WikiLICC
m (→Digitando) |
m (→Digitando) |
||
Linha 1: | Linha 1: | ||
* Configure o MPICH conforme [Minicluster:MPICH]. | * Configure o MPICH conforme [Minicluster:MPICH]. | ||
− | == | + | == Conectando == |
− | Conecte-se a máquina '''one''' | + | Conecte-se a alguma máquina do instituto (Ex. hunter,euler,...). |
+ | |||
+ | Conecte-se a máquina '''one''': | ||
[dago@hunter]$ ssh dago@one | [dago@hunter]$ ssh dago@one | ||
− | Verifique quais nós estão | + | Verifique quais máquinas nós estão ativas: |
[dago@one]$ pingcluster | [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 | Abra um editor de textos | ||
[dago@one]$ vi hellompi.f90 | [dago@one]$ vi hellompi.f90 |
Edição das 10h40min de 20 de março de 2012
- Configure o MPICH conforme [Minicluster:MPICH].
Índice
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
- Veja sobre visualizadores em http://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm