Cluster

Estado
Slurm Online
OpenMPI Online
GlusterFS Online

Suporte

Suporte por email está disponível através de cluster@rnl.tecnico.ulisboa.pt.

Acesso

O acesso é feito por SSH para a máquina cluster.rnl.tecnico.ulisboa.pt com o ID do Técnico (istxxxxxx).

Esta máquina está limitada a 512MB de RAM por utilizador e não deve ser utilizada para mais do que a submissão dos jobs, que devem ser submetidos para o Cluster através do Slurm ou OpenMPI.

Descrição do serviço

O Cluster da RNL é fornecido pelos computadores dos laboratórios, com arquitetura x86_64, que utilizam a distribuição Ubuntu 20.04.

Dependendo das horas do dia e da atividade dos laboratórios, estão disponíveis entre 40 a 360 cores, com cerca de 2GB de RAM por core.

De momento, existem as seguintes plataformas de computação:

  • Slurm – Workload Manager
  • OpenMPI – High Performance Message Passing Library

Para armazenamento temporário existem os seguintes sistemas de ficheiros:

O software instalado encontra-se na lista de software dos laboratórios. Necessidades de software específicas podem requisitadas por email para rnl@tecnico.ulisboa.pt.

Além da área AFS mantida pela DSI, é também disponibilizado o sistema de ficheiros distribuídos do GlusterFS, que pode ser utilizado para armazenamento temporário.

Uma vez que o cluster da RNL utiliza computadores dos laboratórios, não são feitas garantias de disponibilidade dos mesmos. Os jobs poderão ser afetados pela utilização das máquinas por parte de alunos que, inclusive, poderão reiniciar as mesmas e levar à terminação dos jobs.

Slurm

Estão disponíveis 90 nós com 4 CPUs cada, totalizando 360 cores disponíveis para computação.

Submissão de Jobs

A submissão de jobs no Slurm pode ser feita através de vários métodos. O comando srun é utilizado para uma sessão interativa e bloqueante em que o output é enviado para o terminal. O comando sbatch é utilizado para submeter um shell script com uma sequência de comandos srun que corre em background e redireciona o output para um ficheiro slurm-<job-id>.out, onde <job-id> é o ID do job que é devolvido quando o script é submetido, e que pode ser consultado através do comando squeue. Qualquer um destes comandos recebe vários parâmetros opcionais. Exemplos de parâmetros são:

  • -o define o ficheiro de output
  • -e define o ficheiro de output de erros
  • -n define o número de tarefas a lançar
  • -C restringe o lab onde lançar as tarefas
  • -N define o número de nós onde executar o job
  • -h mostra todas as opções possíveis

Eis um exemplo de utilização:

ist123456@borg$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
compute*     up   infinite     90   idle lab1p[1-10],lab2p[1-20],lab3p[1-10],lab4p[1-10],lab5p[1-22],lab6p[1-9],lab7p[1-9]
ist123456@borg$ sbatch -n 20 run.sh
Submitted batch job 17
ist123456@borg$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                17   compute   run.sh ist123456  R       0:03      5 lab6p[1-5]
ist123456@borg$ srun -C lab6 -N 5 hostname
lab6p3
lab6p2
lab6p4
lab6p1
lab6p5

Quaisquer ficheiros que precisem de ser acedidos pela tarefa submetida devem ser colocados na home de utilizador do GlusterFS.

Cancelamento de Jobs

Caso seja detetado um problema no código que cause a necessidade de cancelar um job, deve ser usado o comando scancel.

ist123456@borg$ scancel <ID do job>

OpenMPI

O lançamento de trabalhos MPI deve ser feito utilizando o Slurm ( srun ou sbatch). O comando mpirun não deve ser utilizado na máquina cluster.rnl.tecnico.ulisboa.pt para a submissão de jobs.

Usando o srun, é possível executar diretamente o ficheiro sem necessidade de utilizar o mpirun. Exemplo:

srun -n <número de nodes> <caminho para o executável>

É possível também utilizar o comando sbatch para executar um script com comandos srun. Exemplo:

ist123456@borg$ cat run.sh
#!/bin/bash

srun -o /mnt/cirrus/users/5/6/ist123456/dataset1.out /mnt/cirrus/users/5/6/ist123456/executavel_de_mpi /mnt/cirrus/users/5/6/ist123456/dataset1.csv
srun -o /mnt/cirrus/users/5/6/ist123456/dataset2.out /mnt/cirrus/users/5/6/ist123456/executavel_de_mpi /mnt/cirrus/users/5/6/ist123456/dataset2.csv
ist123456@borg$ sbatch -n 20 run.sh
Submitted batch job 69

O software na máquina de acesso ao Cluster difere do software no Cluster em si, pelo que software compilado neste pode não funcionar quando submetido. Por isso aconselha-se que os projetos sejam compilados presencialmente nos postos de trabalhos nos laboratórios ou máquinas com a mesma distribuição e versão instalada. O uso de máquinas que não as descritas para compilar os projetos não são suportadas e não são dadas garantias do correto funcionamento dos mesmos neste caso.

Mais informações sobre a utilização do MPI podem ser obtidas nas páginas seguintes:

GlusterFS

No Cluster é disponibilizado o sistema de ficheiros GlusterFS que se encontra montado em:

/mnt/cirrus

A sua área pessoal pode ser acedida em:

/mnt/cirrus/users/y/z/istxxxxyz

O acesso remoto aos dados do GlusterFS pode ser feito por SSH/SCP ou SFTP para cluster.rnl.tecnico.ulisboa.pt com o seu ID do Técnico, na pasta acima mencionada. Exemplos de ferramentas que permitem este tipo de acesso remoto são o FileZilla (SFTP), WinSCP (SFTP e SCP) e PuTTY (SSH/SCP).

Para facilitar o acesso à home do Cluster a partir da área de AFS aconselha-se a criação de um symlink para a mesma da seguinte forma:

ln -s /mnt/cirrus/users/y/z/istxxxxyz ~/cluster-home

Dados para processamento com o Slurm ou OpenMPI devem devem ser sempre colocados no GlusterFS.

Docker

O lançamento de docker containers pode ser efetuado pelo Slurm.
Por motivos de segurança, é necessário seguir os seguintes passos para correr comandos de docker num script fornecido ao Slurm:

  • Incluir source slurm-docker start antes das chamadas ao docker
  • Incluir slurm-docker stop no final para parar o daemon do docker

É importante que o script fornecido seja escrito em bash.

ist123456@borg$ cat /mnt/cirrus/users/5/6/ist123456/run.sh
#!/bin/bash

source slurm-docker start
docker run hello-world
slurm-docker stop
ist123456@borg$ srun /mnt/cirrus/users/5/6/ist123456/run.sh
Hello from Docker!
...