|
|
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) |
Linha 1: |
Linha 1: |
− | ==Configurações==
| + | * Criar o arquivo trap.f90 como em [[MPI:Exemplo Trapezoidal]] |
− | * Mude para o seu diretório home | + | [one]$ vi trap.f90 |
− | [usuario@um] cd
| + | [one]$ mpif90 trap.f90 -o trap |
− | * Crie um arquivo ''.mpd.conf'' | + | * Iniciar o anel de nós |
− | [usuario@um] vi .mpd.conf
| + | [one]$ mpdboot -n 2 -f ~/.mpd.hosts |
− | informando uma palavra chave para o MPD
| + | [one]$ mpdtrace -l |
− | MPD_SECRETWORD=senhaparampi
| + | * Executar em 1, 2, 3 e 4 processadores. |
| + | [one]$ mpiexec -l -n 1 ./speed |
| + | [one]$ mpiexec -l -n 2 ./speed |
| + | [one]$ mpiexec -l -n 3 ./speed |
| + | [one]$ mpiexec -l -n 4 ./speed |
| | | |
− | * Mude o acesso para o arquivo | + | * Resultados |
− | [usuario@um] chmod 600 .mpd.conf | + | p WallTime Speedup Eficiência |
− | | + | 1 3.35 s 1 1 |
− | * Crie um arquivo .mpd.hosts
| + | 2 1.66 s 2.02 1.01 |
− | [usuario@um] vi .mpd.hosts | + | 3 1.12 s 2.99 1.00 |
− | | + | 4 0.86 s 3.90 0.97 |
− | informando o nome das máquinas que formam o cluster
| + | 5 1.31 s 2.56 0.51 |
− | um.phantom | + | 8 0.87 s 3.85 0.48 |
− | dois.phantom
| |
− | tres.phantom
| |
− | quatro.phantom | |
− | | |
− | * Crie um arquivo .rhosts
| |
− | [usuario@um] vi .rhosts
| |
− | | |
− | com o nome das máquinas que formam o cluster e o seu nome de usuario informando que esse usuário pode ter acesso a sua conta através de rsh
| |
− | um.phantom usuario | |
− | dois.phantom usuario
| |
− | tres.phantom usuario
| |
− | quatro.phantom usuario | |
− | | |
− | Inicie o serviço ''mpd'' caso não esteja ativo.
| |
− | [user] $ mpd &
| |
| | | |
− | A file named .mpd.conf file must be present in the user's home
| |
− | directory (/etc/mpd.conf if root) with read and write access
| |
− | only for the user, and must contain at least a line with:
| |
− | MPD_SECRETWORD=<secretword>
| |
− | One way to safely create this file is to do the following:
| |
− | cd $HOME
| |
− | touch .mpd.conf
| |
− | chmod 600 .mpd.conf
| |
− | and then use an editor to insert a line like
| |
− | MPD_SECRETWORD=mr45-j9z
| |
− | into the file. (Of course use some other secret word than mr45-j9z.)
| |
− |
| |
− | ==Inicializando o cluster==
| |
− |
| |
− | * Antes de rodar um programa em paralelo é necessário conectar as máquinas em paralelo. Com as máquinas ligadas (apenas uma vez a cada sessão), digite
| |
− | [usuario@um]$ mpdboot -n 4 -f ~/.mpd.hosts --rsh=rsh
| |
− |
| |
− | * Para verificar que tudo está funcionando corretamente, digite
| |
− | [usuario@um]$ mpdtrace
| |
− |
| |
− | A resposta desse comando deve ser algo como a lista das 4 máquinas
| |
− | um
| |
− | dois
| |
− | tres
| |
− | quatro
| |
− |
| |
− | ==Compilando e rodando um programa em paralelo==
| |
− |
| |
− | * Crie um programa inicial, digitando
| |
− |
| |
− | [usuario@um]$ vi hellompi.f90
| |
− |
| |
− | com o seguinte código:
| |
− |
| |
− | program hellompi
| |
− | implicit none
| |
− | include "mpif.h"
| |
− | integer :: np, myid, ier
| |
− |
| |
− | call MPI_Init( ier )
| |
− | call MPI_Comm_size( MPI_COMM_WORLD, np, ier)
| |
− | call MPI_Comm_rank( MPI_COMM_WORLD, myid, ier)
| |
− |
| |
− | print *,"Sou o processo ", myid," de um total de ", np
| |
− | call MPI_Finalize( ier )
| |
− | end program
| |
− |
| |
− | * Para compilar o programa, digite
| |
− | [usuario@um]$ mpif90 hellompi.f90 -o hellompi
| |
− |
| |
− | * Para rodar o programa, digite
| |
− | [usuario@um]$ mpiexec -n 4 ./hellompi &
| |
− |
| |
− | ==Utilizando o MPE==
| |
− |
| |
− | * Para compilar o programa:
| |
− | [usuario@um]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog
| |
− |
| |
− | * Para rodar o programa:
| |
− | [usuario@um]$ mpiexec -n 4 ./hellompi &
| |
| | | |
− | * Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores:
| |
− | [usuario@um]$ jumpshot Unknown.clog2
| |
| | | |
− | ** http://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm
| |
| | | |
| ==Veja também== | | ==Veja também== |
| * http://en.wikibooks.org/wiki/Fortran/Fortran_simple_input_and_output | | * http://en.wikibooks.org/wiki/Fortran/Fortran_simple_input_and_output |