NACAD/COPPE-UFRJ

  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.

Novidades

Idiomas

Português (Brasil)English (United Kingdom)
There are no translations available.

Torque

Introdução

O Torque que é semelhante ao PBS (Portable Batch System) permite o melhor gerenciamento dos recursos disponíveis nos servidores do NACAD-COPPE/UFRJ. Por este motivo, nos servidores principais, a utilização dos recursos só será possível através do sistema de fila Torque.

Embora a execução de um programa através de um sistema de fila possa ser feita diretamente da linha de comandos, recomenda-se o uso de scripts PBS.

Alguns comentários sobre o PBS e seus scripts PBS:

- o nome das filas tem normalmente o seguinte formato "b_<recurso 1>_<recurso 2>_...", nos exemplos abaixo as filas estão divididas em dois recursos número de CPUs e tempo de processamento;
- filas que consomem menos recursos (CPU e tempo de processamento) terão prioridade sobre as demais filas;
- linhas iniciadas com #PBS são diretivas de configuração do PBS;
- linhas iniciadas com # + espaço são considerados comentários;
- caso não seja especificado os limites dos recursos (CPU e tempo de processamento) o PBS colocará o job em execução na menor fila;
- nos casos em que o tempo alocado para o programa for insuficiente para sua execução, o mesmo será abortado após o término do tempo estipulado pela fila;
- observar nos programas paralelos que os parâmetro do PBS (#PBS -l ncpus=y ou #PBS -l nodes=x ou #PBS -l nodes=x:ppn=y) deve ser o mesmo solicitado pelo programa.

A seguir serão mostrados os comandos básicos do PBS e exemplos de scripts PBS para os servidores do NACAD.

Onde obter os jobs padrões de cada sistema?

Estes jobs estão disponíveis no diretório /usr/local/scripts/PBS nos respectivos servidores.

 

Comandos Básicos do PBS

- qsub: submete job na fila
sintaxe: qsub <pbs_script>


$ qsub openmp.pbs
61.servidor


- qstat: verifica o status das filas do PBS
qstat -q: retorna uma tabela com informações básias das filas disponíveis
qstat -Q: semelhante ao comando anterior porém com o status de execução de cada fila
qstat -a: lista todos os jobs que estão sendo executados
qstat -f 60: retorna o status completo do jobID identificado por 60


$ qstat -q

server: venus

Queue            Memory CPU Time Walltime Node  Run Que Lm  State
---------------- ------ -------- -------- ----  --- --- --  -----

b_1core_12hs       --      --    12:00:00   --    0   0  6   E R
b_1core_1h         --      --    01:00:00   --    0   0 10   E R
b_1core_6hs        --      --    06:00:00   --    0   0 10   E R
b_1core_unlim      --      --       --      --    2   0  3   E R
b_2cores_12hs      --      --    12:00:00   --    0   0  6   E R
b_2cores_1h        --      --    01:00:00   --    0   0  6   E R
b_2cores_6hs       --      --    06:00:00   --    0   0  6   E R
b_2cores_unlim     --      --       --      --    0   0  2   E R
b_4cores_12hs      --      --    12:00:00   --    0   0  3   E R
b_4cores_1h        --      --    01:00:00   --    0   0  3   E R
b_4cores_6hs       --      --    06:00:00   --    0   0  3   E R
b_4cores_unlim     --      --       --      --    0   0  2   E R
b_8cores_12hs      --      --    12:00:00   --    0   0  3   E R
b_8cores_1h        --      --    01:00:00   --    0   0  3   E R
b_8cores_6hs       --      --    06:00:00   --    0   0  3   E R
b_8cores_unlim     --      --       --      --    0   0  3   E R
b_16cores_12hs     --      --    12:00:00   --    0   0  2   E R
b_16cores_1h       --      --    01:00:00   --    0   0  3   E R
b_16cores_6hs      --      --    06:00:00   --    0   0  2   E R
b_16cores_unlim    --      --       --      --    1   0  2   E R
b_32cores_12hs     --      --    12:00:00   --    0   0  1   E R
b_32cores_1h       --      --    01:00:00   --    0   0  1   E R
b_32cores_6hs      --      --    06:00:00   --    0   0  1   E R
b_32cores_unlim    --      --       --      --    1   3  1   E R
default            --      --       --      --    0   0 64   E R
nacad              --      --       --      --    0   0 --   E R
                                               ----- -----
                                                   4     3


$ qstat -Q

Queue              Max   Tot   Ena   Str   Que   Run   Hld   Wat   Trn   Ext T        
----------------   ---   ---   ---   ---   ---   ---   ---   ---   ---   --- -
b_1core_12hs         6     0   yes   yes     0     0     0     0     0     0 E        
b_1core_1h          10     0   yes   yes     0     0     0     0     0     0 E        
b_1core_6hs         10     0   yes   yes     0     0     0     0     0     0 E        
b_1core_unlim        3     2   yes   yes     0     2     0     0     0     0 E        
b_2cores_12hs        6     0   yes   yes     0     0     0     0     0     0 E        
b_2cores_1h          6     0   yes   yes     0     0     0     0     0     0 E        
b_2cores_6hs         6     0   yes   yes     0     0     0     0     0     0 E        
b_2cores_unlim       2     0   yes   yes     0     0     0     0     0     0 E        
b_4cores_12hs        3     0   yes   yes     0     0     0     0     0     0 E        
b_4cores_1h          3     0   yes   yes     0     0     0     0     0     0 E        
b_4cores_6hs         3     0   yes   yes     0     0     0     0     0     0 E        
b_4cores_unlim       2     0   yes   yes     0     0     0     0     0     0 E        
b_8cores_12hs        3     0   yes   yes     0     0     0     0     0     0 E        
b_8cores_1h          3     0   yes   yes     0     0     0     0     0     0 E        
b_8cores_6hs         3     0   yes   yes     0     0     0     0     0     0 E        
b_8cores_unlim       3     0   yes   yes     0     0     0     0     0     0 E        
b_16cores_12hs       2     0   yes   yes     0     0     0     0     0     0 E        
b_16cores_1h         3     0   yes   yes     0     0     0     0     0     0 E        
b_16cores_6hs        2     0   yes   yes     0     0     0     0     0     0 E        
b_16cores_unlim      2     1   yes   yes     0     1     0     0     0     0 E        
b_32cores_12hs       1     0   yes   yes     0     0     0     0     0     0 E        
b_32cores_1h         1     0   yes   yes     0     0     0     0     0     0 E        
b_32cores_6hs        1     0   yes   yes     0     0     0     0     0     0 E        
b_32cores_unlim      1     4   yes   yes     2     1     1     0     0     0 E        
nacad                0     0   yes   yes     0     0     0     0     0     0 E        
default             64     0   yes   yes     0     0     0     0     0     0 R        



$ qstat -a

servidor: Altix 450
                                                         Req'd  Req'd   Elap
Job ID       Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
------------ -------- -------- ---------- ------ --- --- ------ ----- - -----
60.servidor  lvalente b_8cores script.pbs   8118  --   8 159334 01:00 R 00:51
61.servidor  rnelias  b_8cores openmp.pbs     --  --  --     --    -- Q    --
62.servidor  bino     b_32core mpi         14498  --  32     -- 12:00 R 08:32



$ qstat -f 60
Job Id: 60.servidor
    Job_Name = script.pbs
    resources_used.cpupercent = 718
    resources_used.cput = 05:50:00
    resources_used.mem = 146592kb
    resources_used.vmem = 287248176kb
    resources_used.walltime = 00:51:20
    job_state = R
    queue = b_8cores_1h
    ...



qdel: remove o job da fila


$ qdel 61



pbsnodes: mostra o status de alocação do sistema


$ pbsnodes -a
servidor
     state = free
     np = 70
     ntype = cluster
     jobs = 0/2209.servidor, 0/2211.servidor, 0/1997.servidor, 0/2205.servidor
     status = opsys=linux,uname=Linux servidor 2.6.27.19-5-default #1 SMP 2009-02-28
04:40:21 +0100 ia64,sessions=1651 14488 14966 15838 15921,nsessions=5,nusers=4,
idletime=169579,totmem=141119552kb,availmem=82200768kb,physmem=141119552kb,ncpus=
72,loadave=199.54,netload=421812568,state=free,jobs=2205.servidor 1997.servidor
2211.servidor 2209.servidor,varattr=,rectime=1265981510


Scripts para SGI Altix-450

No Altix o parâmetro #PBS -l ncpus=x é equivalente ao #PBS -l nodes=1:ppn=x.

Job serial
Arquivo serial.pbs:

 

#PBS -S /bin/csh  # Shell usado no job
#PBS -m ae  # Enviar email quando o job for abortado ou acabar
#PBS -M This e-mail address is being protected from spambots. You need JavaScript enabled to view it # E-mail do usuário
#PBS -l ncpus=1  # Limite de recursos: número de CPUs
#PBS -l walltime=06:00:00 # Limite de recursos: tempo máximo de execução do job ([[h:]m:]s)
#PBS -j oe   # Coloca a saída e erro no mesmo arquivo
#PBS -N serial  # Nome do job (na ausência será adotado o nome do arquivo de script)

limit coredumpsize 0  # Define o tamanho máximo do arquivo core
cd $PBS_O_WORKDIR  # PBS_O_WORKDIR: diretório de execução do comando qsub
./prog   # Executa o programa prog


Job paralelo usando OpenMP ou múltiplos threads
Arquivo openmp.pbs:


#PBS -S /bin/csh  # Shell usado no job
#PBS -m ae  # Enviar email quando o job for abortado ou acabar
#PBS -M This e-mail address is being protected from spambots. You need JavaScript enabled to view it # E-mail do usuário
#PBS -l ncpus=4  # Limite de recursos: número de CPUs
#PBS -l walltime=06:00:00 # Limite de recursos: tempo máximo de execução do job ([[h:]m:]s)
#PBS -j oe   # Coloca a saída e erro no mesmo arquivo
#PBS -N openmp  # Nome do job (na ausência ser adotado o nome do arquivo de script)

limit coredumpsize 0  # Define o tamanho miáximo do arquivo core
setenv OMP_NUM_THREADS 4 # Define o número de threads para o OpenMP
cd $PBS_O_WORKDIR  # PBS_O_WORKDIR: diretório de execuço do comando qsub
./prog   # Executa o programa prog em paralelo


Job parelelo usando MPI
Arquivo mpi.pbs:


#PBS -S /bin/csh  # Shell usado no job
#PBS -m ae  # Enviar email quando o job for abortado ou acabar
#PBS -M This e-mail address is being protected from spambots. You need JavaScript enabled to view it # E-mail do usuário
#PBS -l ncpus=4  # Limite de recursos: número de CPUs
#PBS -l walltime=06:00:00 # Limite de recursos: tempo máximo de execução do job ([[h:]m:]s)
#PBS -j oe   # Coloca a saída e erro no mesmo arquivo
#PBS -N mpi  # Nome do job (na ausência ser adotado o nome do arquivo de script)

limit coredumpsize 0  # Define o tamanho máximo do arquivo core
cd $PBS_O_WORKDIR  # PBS_O_WORKDIR: diretório de execução do comando qsub
mpirun -np 4 ./prog  # Executa o programa prog usando o MPI


Scripts para o Altix ICE

Antes de submeter o job o ambiente de programação deve estar carregado, vide item de Module do Guia do Usuário.


Job serial


#PBS -l nodes=1:ppn=1
#PBS -l walltime=12:00:00
#PBS -N serial
#PBS -j oe
#PBS -V
# PBS -m ae
# PBS -M This e-mail address is being protected from spambots. You need JavaScript enabled to view it

# change directory
cd ${PBS_O_WORKDIR}
./prog


Job paralelo usando MPI (MVAPICH2)
Exemplo com 16 cores: 2 nodes com 8 cores cada um


#PBS -l nodes=2:ppn=8       
#PBS -l walltime=12:00:00
#PBS -N mvapich
#PBS -j oe
#PBS -V
# PBS -m ae
# PBS -M This e-mail address is being protected from spambots. You need JavaScript enabled to view it

# change directory
cd ${PBS_O_WORKDIR}
# create list with names from data network
sort ${PBS_NODEFILE} | uniq > /tmp/${PBS_JOBID}
# get the number of processors and nodes
NUM_PROC=`cat ${PBS_NODEFILE} | wc -l`
NUM_NODES=`cat /tmp/${PBS_JOBID} | wc -l`
# start MPD on allocated nodes
mpdboot -n ${NUM_NODES} -f /tmp/${PBS_JOBID} -r rsh
# run on all nodes
mpiexec -n ${NUM_PROC} prog
# stop MPD on allocated nodes
mpdallexit
rm -f /tmp/${PBS_JOBID}


Job paralelo usando MPI (OpenMPI)
Exemplo com 16 cores: 2 nodes com 8 cores cada um


#PBS -l nodes=2:ppn=8                                                                        
#PBS -l walltime=12:00:00
#PBS -N openmpi
#PBS -j oe
#PBS -V
# PBS -m ae
# PBS -M This e-mail address is being protected from spambots. You need JavaScript enabled to view it

# change directory
cd ${PBS_O_WORKDIR}
# get the number of processors and nodes
NUM_PROC=`cat ${PBS_NODEFILE} | wc -l`
# run on all nodes
mpirun -n ${NUM_PROC} prog

 

Destaques

Coppe contra Covid
There are no translations available.

Coppe desenvolve sistema de monitoramento que poderá ajudar no tratamento da Covid-19. Leia Mais.

Intel - IPCC
There are no translations available.

NACAD primeiro centro de computação paralela da Intel no Brasil (IPCC - Intel Parallel Computing Center).

Coppe e Risc
There are no translations available.

A Coppe/UFRJ, por meio do seu Núcleo Avançado de Computação de Alto Desempenho (Nacad), participa do RISC2 - A network for supporting the coordination of Computing research between Europe and Latin America. Leia Mais.