Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

pbs [2011/04/06 21:22]
orahcio
pbs [2011/04/08 18:33] (atual)
orahcio
Linha 95: Linha 95:
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''. 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''.
 +
 +==== Array Jobs 2 ====
 +
 +Segue um script mais eficaz, que demorou um mês mais ou menos pra a coisa toda funcionar, nesse script usa-se a opção ''-t'' porém cria-se um array adicional no script bash para mudar o parâmetro conforme o ID do núcleo que irá rodar o programa.
 +
 +<code bash>
 +#!/bin/bash
 +#
 +#This is an example script example.sh
 +#
 +#These commands set up the Grid Environment for your job:
 +#PBS -N L1e4_p
 +#PBS -l nice=16,walltime=36:00:00
 +#PBS -M seuemail@if.uff.br
 +#PBS -m abe
 +#PBS -t 0-29
 +
 +# Gerando sementes (só se você quiser gerar sementes)
 +a=$RANDOM
 +if [ $(($a%2)) -eq 0 ]
 +then
 +    a=$(($a+1))
 +fi
 +# Fim do gerador de sementes
 +
 +#p=( 0 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 )
 +p=( 0.5166667 0.5333333 0.5500000 0.5666667 0.5833333 0.6000000 0.6166667 0.6333333 0.6500000 0.6666667 0.6833333 0.7000000 0.7166667 0.7333333 0.7500000 0.7666667 0.7833333 0.8000000 0.8166667 0.8333333 0.8500000 0.8666667 0.8833333 0.9000000 0.9166667 0.9333333 0.9500000 0.9666667 0.9833333 1.0000000 )
 +
 +cd $PBS_O_WORKDIR
 +./opsw 10000 10 ${p[$PBS_ARRAYID]} $a 0.1 -6 0.1 0.49 100 5000 2500
 +</code>
 +
 +Veja que o parâmetro que estou variando pertence ao vetor ''p'', cada núcleo executará o mesmo script porém vai assumir o parâmetro de posição ditada pela variável de ambiente ''%%$%%PBS_ARRAYID''.
 +
 +Fica um gerador de números aleatórios, ímpares, escrito em bash. Claro que uso a variável de ambiente ''%%$%%RANDOM'' para isso.
 +
 +<note important> O terminal deve ser ''bash'' e não ''sh'' como nos demais exemplos, alguma sintaxe desse script não funciona num terminal ''sh''. </note>
 +
 +==== Array Jobs 3 ====
 +
 +Uma forma mais limpa de fazer o script acima é usar:
 +<code bash>
 +#!/bin/bash
 +#
 +#This is an example script example.sh
 +#
 +#These commands set up the Grid Environment for your job:
 +#PBS -N trinta_ps_com_1e4_sitios
 +#PBS -l nice=16,walltime=36:00:00
 +#PBS -M orahcio@gmail.com
 +#PBS -m abe
 +#PBS -t 0-25
 +
 +# Gerando sementes
 +a=$RANDOM
 +if [ $(($a%2)) -eq 0 ]
 +then
 +    a=$(($a+1))
 +fi
 +
 +p=$(echo "scale=10; $PBS_ARRAYID*1/25" | bc)
 +
 +cd $PBS_O_WORKDIR
 +./opsw 100000 10 $p $a 0.1 -6 0.1 0.49 100 5000 2500
 +</code>
 +
 +Dessa forma cada núcleo terá 25 pontos do seu valor de parâmetro no intervalo $$[0,1]$$.
==== Open MPI / Torque ==== ==== Open MPI / Torque ====
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