Essa é uma revisão anterior do documento!


Submetendo trabalhos no cluster complex

Segue um script básico para o pessoal submeter seus programas no cluster.

#!/bin/sh
#
#This is an example script example.sh
#
#These commands set up the Grid Environment for your job:
#PBS -N NOME_DO_PROGRAMA
#PBS -l nice=16,walltime=36:00:00
#PBS -M SEU_E-MAIL@if.uff.br
#PBS -m abe
cd $PBS_O_WORKDIR
 
./caminho/do/seu/executável

O nome de sua tarefa é dada na linha #PBS -N, mude NOME_DO_PROGRAMA para o nome de sua escolha. Deve ser especificado um tempo de execução máximo no campo walltime=hh:mm:ss, para que não existam procesos esquecidos, lembrem-se que o gerenciador matará o processo que exceder esse tempo.

Finalmente no terminal faça:

qsub nomedoscript

E aguarde o término, para verificar o andamento faça qstat no terminal. Dúvidas perguntem ao Ângelo.

  • Use sempre a merlot pra iniciar os processos;
  • Os processos morrem se excederem o tempo definido em walltime=hh:mm:ss!

Submetendo diversos trabalhos no mesmo script / Array Jobs

Código exemplo:

#!/bin/sh
#
#This is an example script example.sh
#
#These commands set up the Grid Environment for your job:
#PBS -N opsw1
#PBS -l nice=16,walltime=36:00:00
#PBS -M seuemail@if.uff.br
#PBS -m abe
#PBS -d /fiscomp/orahcio/pesquisa/caos_sw/analise
#PBS -t 0-5
 
#Inicio do script
case "$PBS_ARRAYID" in 
	0)
	echo "L=1e6"
	date
	./opsw 1000000 10 89763287 0.1 -6 0.1 0.49 1 0.001 0.01 5 5000 2500
	date
	;;
 
	1)
	date
	./opsw 1000000 10 89763287 0.1 -6 0.1 0.49 1 0.3 1 5 5000 2500
	date
	;;
 
	2)
	echo "L=1e5"
	date
	./opsw 100000 10 89763287 0.1 -6 0.1 0.49 1 0.001 0.01 5 5000 2500
	date
	;;
 
	3)
	date
	./opsw 100000 10 89763287 0.1 -6 0.1 0.49 1 0.3 1 5 5000 2500
	date
	;;
 
	4)
	echo "L=1e4"
	date
	./opsw 10000 10 89763287 0.1 -6 0.1 0.49 1 0.001 0.01 5 5000 2500
	date
	;;
 
	5)
	date
	./opsw 10000 10 89763287 0.1 -6 0.1 0.49 1 0.3 1 5 5000 2500
	date
	;;
esac

Cada linha abaixo do comentário Inicio do script será executada no intervalo de núcleos especificados em #PBS -t 0-5, diga adeus ao nice 16 pois esse script já faz suas tarefas serem executadas com essa prioridade. O comentário #PBS -d especifica o diretório de trabalho para cada núcleo adentrar antes de executar o processo.

O uso do case no bash é interessante se quisermos rodar parâmetros diferentes, devemos usar a variável de ambiente PBS_ARRAYID para usarmos os comandos a serem executados de acordo com o núcleo escolhido pelo gerenciador, os valores dela variam segundo o array que que definimos em #PBS -t.

Open MPI / Torque

Um script para Open MPI seria

 
#!/bin/sh
#PBS -N Nome_do_Programa
#PBS -M SEU_E-EMAIL@if.uff.br
#PBS -m bae
#PBS -l nice=16,nodes=5:ppn=4,walltime=168:00:00 
 
export NPROCS=`wc -l $PBS_NODEFILE |gawk '//{print $1}'`
mpirun -machinefile $PBS_NODEFILE -np $NPROCS /CAMINHO/DO/SEU_PROG_MPI

Monitorando seus processos

Use o comando qstat para ver um resumo dos processos que estão sendo executados e qstat -nt para ver detalhadamente em quais máquinas cada tarefa está rodando. A saída é algo do tipo:

Job ID               Username Queue    Jobname          SessID NDS   TSK Memory Time  S Time
-------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - -----
273[0].merlot.if     orahcio  batch    opsw-0           23786     1   1    --  36:00 R 00:15
   pinot/1
273[1].merlot.if     orahcio  batch    opsw-1           23786     1   1    --  36:00 R 00:15
   pinot/2
273[2].merlot.if     orahcio  batch    opsw-2           23786     1   1    --  36:00 R 00:15
   cabernet/1

Matando seus processos

Use o comando qdel #_do_processo, por exemplo 273[0] se eu for matar o processo que roda na pinot no tópico acima, se quiser matar todo mundo é só dizer qdel 273[].

pbs.1302135743.txt.gz · Última modificação: 2011/04/06 21:22 por orahcio
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0