Mudanças entre as edições de "Cluster do LICC"
(→Transferência de arquivos) |
m (→Compilando e rodando um programa em paralelo) |
||
(18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | O LICC-IM/UFRGS conta também com um "cluster" de quatro processadores Pentium IV 2GHz com 256MBytes de memória e 20GBytes em disco cada, interligados através de um "switch" a 100Mbps e dotado de compiladores de alto desempenho HPF, Fortran90/95 e C, para o desenvolvimento de pesquisas na área de computação paralela, nas áreas de álgebra linear computacional e dinâmica de fluidos computacional. | + | O [[LICC]]-IM/UFRGS conta também com um "cluster" de quatro processadores Pentium IV 2GHz com 256MBytes de memória e 20GBytes em disco cada, interligados através de um "switch" a 100Mbps e dotado de compiladores de alto desempenho HPF, Fortran90/95 e C, para o desenvolvimento de pesquisas na área de computação paralela, nas áreas de álgebra linear computacional e dinâmica de fluidos computacional. |
O cluster é composto por 4 máquinas que possuem o mesmo hardware: tunnan, lansen, draken, viggen (alguns softwares estão instalados apenas em alguma das máquinas, p.ex., o programa jumpshot está instalado na viggen.) | O cluster é composto por 4 máquinas que possuem o mesmo hardware: tunnan, lansen, draken, viggen (alguns softwares estão instalados apenas em alguma das máquinas, p.ex., o programa jumpshot está instalado na viggen.) | ||
Linha 5: | Linha 5: | ||
==Instruções para utilizar o cluster em paralelo== | ==Instruções para utilizar o cluster em paralelo== | ||
− | # Requisitar uma conta de usuário nas 4 máquinas: tunnan, lansen, draken, viggen. | + | # Requisitar uma conta de usuário nas 4 máquinas: tunnan, lansen, draken, viggen. Veja [[Acesso aos computadores (contas de usuário)]]. |
# Conectar-se a uma máquina através de uma das 3 alternativas: | # Conectar-se a uma máquina através de uma das 3 alternativas: | ||
#* localmente: utilize uma das 4 máquinas diretamente fornecendo o usuário e senha. | #* localmente: utilize uma das 4 máquinas diretamente fornecendo o usuário e senha. | ||
Linha 36: | Linha 36: | ||
==Configurações== | ==Configurações== | ||
− | + | * Mude para o seu diretório home | |
− | |||
[usuario@viggen] cd | [usuario@viggen] cd | ||
− | + | * Crie um arquivo .mpd.conf | |
− | |||
− | |||
[usuario@viggen] vi .mpd.conf | [usuario@viggen] vi .mpd.conf | ||
− | |||
informando uma palavra chave para o MPD | informando uma palavra chave para o MPD | ||
− | |||
MPD_SECRETWORD=senhaparampi | MPD_SECRETWORD=senhaparampi | ||
− | |||
− | |||
− | |||
− | + | * Mude o acesso para o arquivo | |
− | + | [usuario@viggen] chmod 600 .mpd.conf | |
+ | * Crie um arquivo .mpd.hosts | ||
[usuario@viggen] vi .mpd.hosts | [usuario@viggen] vi .mpd.hosts | ||
informando o nome das máquinas que formam o cluster | informando o nome das máquinas que formam o cluster | ||
− | |||
tunnan.mat.ufrgs.br | tunnan.mat.ufrgs.br | ||
draken.mat.ufrgs.br | draken.mat.ufrgs.br | ||
viggen.mat.ufrgs.br | viggen.mat.ufrgs.br | ||
lansen.mat.ufrgs.br | lansen.mat.ufrgs.br | ||
− | |||
− | + | * Crie um arquivo .rhosts | |
[usuario@viggen] vi .rhosts | [usuario@viggen] 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 | 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 | ||
− | |||
tunnan.mat.ufrgs.br usuario | tunnan.mat.ufrgs.br usuario | ||
draken.mat.ufrgs.br usuario | draken.mat.ufrgs.br usuario | ||
viggen.mat.ufrgs.br usuario | viggen.mat.ufrgs.br usuario | ||
lansen.mat.ufrgs.br usuario | lansen.mat.ufrgs.br usuario | ||
− | |||
==Inicializando o cluster== | ==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@viggen]$ mpdboot -n 4 -f ~/.mpd.hosts --rsh=rsh | [usuario@viggen]$ mpdboot -n 4 -f ~/.mpd.hosts --rsh=rsh | ||
− | + | * Para verificar que tudo está funcionando corretamente, digite | |
− | |||
[usuario@viggen]$ mpdtrace | [usuario@viggen]$ mpdtrace | ||
A resposta desse comando deve ser algo como a lista das 4 máquinas | A resposta desse comando deve ser algo como a lista das 4 máquinas | ||
− | |||
tunnan | tunnan | ||
viggen | viggen | ||
draken | draken | ||
lansen | lansen | ||
− | |||
==Compilando e rodando um programa em paralelo== | ==Compilando e rodando um programa em paralelo== | ||
− | + | * Crie um programa inicial, digitando | |
[usuario@viggen]$ vi hellompi.f90 | [usuario@viggen]$ vi hellompi.f90 | ||
Linha 107: | Linha 92: | ||
include "mpif.h" | include "mpif.h" | ||
integer :: np, myid, ier | integer :: np, myid, ier | ||
− | + | ||
call MPI_Init( ier ) | call MPI_Init( ier ) | ||
call MPI_Comm_size( MPI_COMM_WORLD, np, ier) | call MPI_Comm_size( MPI_COMM_WORLD, np, ier) | ||
call MPI_Comm_rank( MPI_COMM_WORLD, myid, ier) | call MPI_Comm_rank( MPI_COMM_WORLD, myid, ier) | ||
− | + | ||
print *,"Sou o processo ", myid," de um total de ", np | print *,"Sou o processo ", myid," de um total de ", np | ||
call MPI_Finalize( ier ) | call MPI_Finalize( ier ) | ||
end program | end program | ||
− | |||
− | |||
− | |||
+ | * Para compilar o programa, digite | ||
[usuario@viggen]$ mpif90 hellompi.f90 -o hellompi | [usuario@viggen]$ mpif90 hellompi.f90 -o hellompi | ||
− | + | * Para rodar o programa, digite | |
− | |||
[usuario@viggen]$ mpiexec -n 4 ./hellompi & | [usuario@viggen]$ mpiexec -n 4 ./hellompi & | ||
==Utilizando o MPE== | ==Utilizando o MPE== | ||
− | + | * Para compilar o programa: | |
+ | [usuario@viggen]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog | ||
− | + | * Para rodar o programa: | |
+ | [usuario@viggen]$ mpiexec -n 4 ./hellompi & | ||
− | + | * Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores: | |
+ | [usuario@viggen]$ jumpshot Unknown.clog2 | ||
− | |||
− | + | == Ligações externas == | |
+ | *[http://www.cacr.caltech.edu/beowulf/tutorial/building.html http://www.cacr.caltech.edu/beowulf/tutorial/building.html] | ||
− | + | * http://abax.if.usp.br/drupal5/files/delyra_cluster.pdf | |
+ | * http://abax.if.usp.br/drupal5/files/ |
Edição atual tal como às 14h27min de 18 de maio de 2010
O LICC-IM/UFRGS conta também com um "cluster" de quatro processadores Pentium IV 2GHz com 256MBytes de memória e 20GBytes em disco cada, interligados através de um "switch" a 100Mbps e dotado de compiladores de alto desempenho HPF, Fortran90/95 e C, para o desenvolvimento de pesquisas na área de computação paralela, nas áreas de álgebra linear computacional e dinâmica de fluidos computacional.
O cluster é composto por 4 máquinas que possuem o mesmo hardware: tunnan, lansen, draken, viggen (alguns softwares estão instalados apenas em alguma das máquinas, p.ex., o programa jumpshot está instalado na viggen.)
Índice
Instruções para utilizar o cluster em paralelo
- Requisitar uma conta de usuário nas 4 máquinas: tunnan, lansen, draken, viggen. Veja Acesso aos computadores (contas de usuário).
- Conectar-se a uma máquina através de uma das 3 alternativas:
- localmente: utilize uma das 4 máquinas diretamente fornecendo o usuário e senha.
- em uma das máquinas do departamento de matemática: utilize o SSH para conectar-se a uma das 4 máquinas.
- fora do departamento de matemática: utilize o SSH para conectar-se a euler (ou outra máquina do DMPA que permita acesso externo). Depois, utilize o SSH para conectar-se a uma das máquinas do cluster (note que o usuário e senha da euler pode ser diferente).
Utilizando o SSH
Conectando-se remotamente a uma máquina: login
- Em Linux: utilize um cliente SSH (p.ex. openssh); exemplo de uso:
ssh usuario@euler.mat.ufrgs.br
- Em Windows: utilize um cliente PUTTY; (256Kb ) (mostre-me)
Transferência de arquivos
- Em Linux: SCP, um serviço embutido no mesmo cliente openssh; Ex. uso:
scp arquivo.txt usuario@euler.mat.ufrgs.br:~
scp usuario@euler.mat.ufrgs.br:~/arquivo.txt
scp -r usuario@euler.mat.ufrgs.br:~/diretorio .
- Em Windows, tecnologia SFTP, via cliente PSFTP da distribuição PUTTY; (412Kb)
- Em Windows, tecnologia SFTP, via cliente WINSCP da distribuição FREEWARE WinSCP; (1.48Mb)
- Em sistemas com Java instaldo (JDK), tecnologia SFTP combinada com Java, via cliente MindTerm (bin-1.2Mb, doc-1.6Mb)
Configurações
- Mude para o seu diretório home
[usuario@viggen] cd
- Crie um arquivo .mpd.conf
[usuario@viggen] vi .mpd.conf
informando uma palavra chave para o MPD
MPD_SECRETWORD=senhaparampi
- Mude o acesso para o arquivo
[usuario@viggen] chmod 600 .mpd.conf
- Crie um arquivo .mpd.hosts
[usuario@viggen] vi .mpd.hosts
informando o nome das máquinas que formam o cluster
tunnan.mat.ufrgs.br draken.mat.ufrgs.br viggen.mat.ufrgs.br lansen.mat.ufrgs.br
- Crie um arquivo .rhosts
[usuario@viggen] 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
tunnan.mat.ufrgs.br usuario draken.mat.ufrgs.br usuario viggen.mat.ufrgs.br usuario lansen.mat.ufrgs.br usuario
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@viggen]$ mpdboot -n 4 -f ~/.mpd.hosts --rsh=rsh
- Para verificar que tudo está funcionando corretamente, digite
[usuario@viggen]$ mpdtrace
A resposta desse comando deve ser algo como a lista das 4 máquinas
tunnan viggen draken lansen
Compilando e rodando um programa em paralelo
- Crie um programa inicial, digitando
[usuario@viggen]$ 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@viggen]$ mpif90 hellompi.f90 -o hellompi
- Para rodar o programa, digite
[usuario@viggen]$ mpiexec -n 4 ./hellompi &
Utilizando o MPE
- Para compilar o programa:
[usuario@viggen]$ mpif90 hellompi.f90 -o hellompi -mpe=mpilog
- Para rodar o programa:
[usuario@viggen]$ mpiexec -n 4 ./hellompi &
- Depois de rodar o programa, um arquivo Unknows.clog2 foi criado. Para visualizar a iteração entre os computadores:
[usuario@viggen]$ jumpshot Unknown.clog2