pbs [2011/04/06 21:22] orahcio |
pbs [2011/04/08 18:33] (atual) orahcio |
| | | |
| 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 ==== |