Cluster

De Instituto de Física - UFRGS

Cluster Ada - Instituto de Física UFRGS

O Cluster está localizado no Instituto de Física da UFRGS, em Porto Alegre.

O que é um Cluster?

Cluster é um aglomerado de computadores que trabalham em conjunto realizando tarefas e balanceando cargas de processamento entre si.

Existem vários tipos de Cluster, uns com baixo poder de processamento, e outros com alto (grandes instituições de pesquisa científica (ex: CERN) fazem muito uso desses).

Certas tarefas (simulação de moléculas/ecossistemas, análise de dados astronômicos, etc) exigem muito processamento. E grande parte das vezes um PC comum está muito longe de realizar estas tarefas de forma rápida. Nesse caso um Cluster é necessário, pois ele oferece processamento de maior desempenho, e junto com isso, a possibilidade de adicionar mais nodes e balancear cargas dinamicamente.

Infraestrutura

Software de gerenciamento

Slurm Workload Manager

Site :https://slurm.schedmd.com/

Hardware dos nodes

CPU: x86_64
RAM: varia entre 4 GB - 8 GB
GPU: alguns nodes possuem NVIDIA CUDA
Storage: storage em rede com quota de 50 GB por usuário, os nodes não possuem HD local 

Software nos nodes

OS: Debian 8 (Jessie) x86_64
Pacotes instalados:
 gcc
 python2
 python3

Como utilizar

Conectar-se ao cluster-slurm

O cluster é acessível através do server cluster-slurm. Para acessar o server via SSH, use:

ssh usuario@cluster-slurm.if.ufrgs.br

Caso você não tenha cadastro ou não é vinculado ao Instituto de Física, solicite o cadastro enviando um email para fisica-ti@ufrgs.br.

Utilizando softwares no Cluster

Para que seja possível executar um programa em um job no cluster, o programa deve:

1. Já estar instalado

OU

2. Ser copiado para sua home (pasta do seu usuário)

Ex:

scp meu_executavel usuario@cluster-slurm.if.ufrgs.br:~/

Caso queira compilar o programa para uso no Cluster, uma das opções é usar o gcc.

Ex:

scp -r source-code/ usuario@cluster-slurm.if.ufrgs.br:~/
ssh usuario@cluster-slurm.if.ufrgs.br:~/
cd source-code
gcc main.c funcoes.c

Isso irá gerar um arquivo a.out, que é o executável.

Estando acessível pelo método 1 ou 2, o programa pode ser executado no Cluster através de um JOB.

OBS: Caso você execute o programa sem submetê-lo como JOB, ele não será executado nos nodes, e sim apenas no próprio server (cluster-slurm), que possui capacidades bem limitadas de processamento.


Criando e executando um Job

O Slurm gerencia jobs, e cada job representa um programa ou tarefa sendo executado.

Para submeter um novo Job, deve-se criar um arquivo de script descrevendo os requisitos e características de execução do Job.

Formato do arquivo abaixo.

Ex: job.sh

#!/bin/bash 
#SBATCH -n 1 # Numero de CPU cores a serem alocados 
#SBATCH -N 1 # Numero de nodes a serem alocados
#SBATCH -t 0-00:05 # Tempo limite de execucao (D-HH:MM)
#SBATCH -p long # Particao (fila) a ser submetido
#SBATCH --qos qos_long # QOS 
  
# Comandos de execução do seu programa:
./a.out

Na opção --qos, deve-se colocar o nome da partição com o prefixo "qos_":

partição: short -> qos: qos_short -> limite de 2 semanas

partição: long -> qos: qos_long -> limite de 3 meses


Caso deseje rodar em GPU, é necessário especificar a fila e pedir explicitamente a gereric resource gpu:

#!/bin/bash 
#SBATCH -n 1 # Numero de CPU cores a serem alocados 
#SBATCH -N 1 # Numero de nodes a serem alocados
#SBATCH -t 0-00:05 # Tempo limite de execucao (D-HH:MM)
#SBATCH -p long # Particao (fila) a ser submetido
#SBATCH --qos qos_long # QOS 
#SBATCH --gres=gpu:1
  
# Comandos de execução do seu programa:
./a.out

Para pedir alguma GPU específica, use um constraint adicionando a linha:

#SBATCH --constraint="gtx970"

Para submeter o job, execute o comando

sbatch job.sh

Comandos úteis

  • Para listar os seus jobs:
 squeue
  • Para deletar um job:
 scancel [job_id]
  • Para listar as partições disponíveis:
 sinfo
  • Para listar as gpus presentes nos nodes:
 sinfo -o "%N %f"
  • Para listar um resumo de todos os nodes:
 sinfo -Nel