O cluster Coaraci conta com o sistema de filas instalado para submeter e administrar jobs via scripts.
Para que os recursos computacionais sejam divididos de maneira razoável entre todos os usuários, é necessária uma forma de organizar e priorizar as requisições de uso, comumente chamadas de “jobs”. Para isso, o cluster conta com o sistema de filas SLURM para gerenciar os jobs que serão executados, respeitando as políticas estabelecidas. O SLURM trabalha com o conceito de filas, que são estruturas para classificar e agrupar os jobs e nós computacionais sob critérios como: número de processadores requisitados, quantidade de nós, quantidade de memória RAM, tempo de processamento e assim por diante. Na configuração atual, estão configuradas partições com ordem de prioridade e em que apenas alguns grupos de usuários têm acesso a algumas delas (na seção Filas temos mais detalhes).
É possível exibir as filas do sistema e os seus status com o comando:
[vhpc@coaraci ~]$ sinfo -a
O acesso via SSH aos nós é controlado pelo sistema de filas, ou seja, usuários comuns só serão permitidos acessar os nós se houver(em) job(s) em execução nestes nós.
Diretivas e Variáveis do Job
Dentro dos jobs existem algumas instruções que são dedicadas ao SLURM, entre outras coisas para instruí-lo onde, como e por quanto tempo rodar. Essas instruções são chamadas diretivas, e estão nas linhas que se iniciam com: “#SBATCH”. O SLURM irá considerar todas as diretivas até que encontre uma linha executável, depois deste ponto, será ignorada qualquer outra diretiva.
Diretivas comuns são:
#SBATCH –job-name=<nome> → Nome do job
#SBATCH –ntasks=<número> → Número total de núcleos
#SBATCH –time=<dias-hh:mm:ss> → Tempo de execução (dias-hh:mm:ss)
#SBATCH –partition=<fila> → Fila onde o job será alocado
Além disso, quando o job é submetido, o SLURM coloca à disposição do job algumas variáveis de ambiente que tem o intuito de facilitar algumas operações. Algumas delas, por exemplo são:
$SLURM_JOB_NODELIST → esta variável contém a lista de nós e núcleos que foram alocadas ao job, é útil, por exemplo para ser usada como parâmetro para o “mpirun”:
mpirun -machinefile $SLURM_JOB_NODELIST ./meuprograma
$SLURM_SUBMIT_DIR → esta variável aponta para o diretório de onde o script foi submetido.
$SLURM_JOB_NAME → contém o nome especificado na diretiva “#SBATCH –job-name=”
A lista completa de diretivas, opções e variáveis pode ser encontrada em (em Inglês): https://slurm.schedmd.com/sbatch.html#lbAH.
Filas
As filas são o que permitem um bom desempenho, distribuição e agendamento de uso de recursos. No Coaraci temos apenas as filas configuradas listadas abaixo:
Fila | Nós associados | Observações |
par48-i | r1n[01-56] | CEPID / CCES |
par48-x | r1n[01-56] | Projetos Externos |
par480-i | r2n[01-56], r3n[01-32] | CEPID / CCES |
par480-x | r2n[01-56], r3n[01-32] | Projetos Externos |
paralela | r4n[01-56], r5n[01-56] | CEPID / CCES |
fat | r2fat | CEPID / CCES |
gpu-i | r1gn[01-04],r2gn[01-03],r4gn[01-03],r5gn[01-04] | CEPID / CCES |
gpu-x | r1gn[01-04],r2gn[01-03],r4gn[01-03],r5gn[01-04] | Projetos Externos |