Cluster computacional fisicamente presente na Faculdade de Tecnologia da Universidade de Brasília. Todos os sistemas associados ao laboratório são hospedados neste servidor.
ao vivo · Atualizado: —
Todos os códigos são disponibilizados como módulos (environment-modules), com versões fixas e bibliotecas otimizadas para os processadores do cluster. Clique no nome de um software para abrir a documentação oficial.
siesta/5.4.1 · DFT com base de orbitais numéricos (NAO)qe/7.5 · DFT em ondas planas (pw.x e 50+ ferramentas)fhi-aims/250822 · DFT all-electron (NAO)honpas/master · DFT híbrido, fork do SIESTA com exact-exchange linearlammps/22Jul2025 · ReaxFF, AIREBO, ELECTRODE, etc. (AVX-512 + variante GPU)python/3.12 · ASE, NumPy, SciPy, Matplotlib, phonopy, spglib, h5pyDiferencial: os códigos não são instalações genéricas. Cada um foi recompilado e ajustado ao hardware do cluster (Ryzen 9 7950X3D): OpenBLAS com AVX-512 a ~90% do pico teórico, LAMMPS com AVX-512 + pacote INTEL (até +82% em AIREBO), Quantum ESPRESSO com OpenBLAS portátil (+13% vs MKL), MPI ajustado para a rede, e aceleração em GPU (RTX 4080) para LAMMPS (ReaxFF 3 a 3,5×) e DFTB+ (eigensolver MAGMA, até 4,5× em sistemas grandes).
O fluxo é sempre o mesmo: carregar o módulo, escrever um script SLURM e submeter. A fila distribui o trabalho entre os nós.
Cada código é carregado sob demanda, evitando conflitos de versão.
module avail # lista todos os módulos disponíveis module load qe/7.5 # carrega um código (ex.: Quantum ESPRESSO) module list # mostra o que está carregado module purge # descarrega tudo
Os arquivos do cálculo (script, input, pseudopotenciais, potenciais, geometria) devem ficar em ~/projects, a área compartilhada com os nós. Nos nós de cálculo, essa pasta aparece como /mnt/home/SEU_USUARIO/projects, que é o caminho a indicar em --chdir no script. O sbatch é executado a partir do headnode. O job lê e grava nessa pasta, e os resultados permanecem nela, acessíveis do headnode. O /home não deve ser usado para arquivos de cálculo, pois é local de cada nó. A saída ficaria retida no nó onde o job foi executado.
O preâmbulo abaixo serve para qualquer código. Só muda a linha de execução (passo 5).
#!/bin/bash #SBATCH --job-name=meu_calc #SBATCH --partition=normal # fila (ver tabela) #SBATCH --nodes=1 #SBATCH --ntasks=16 # processos MPI #SBATCH --time=24:00:00 # limite de tempo #SBATCH --chdir=/mnt/home/SEU_USUARIO/projects #SBATCH --output=slurm-%x-%j.out #SBATCH --mail-type=END,FAIL # avisar ao terminar/falhar #SBATCH --mail-user=voce@email.com source /etc/profile.d/modules.sh module load qe/7.5 # seu código set -euo pipefail # aborta em erro: nao cai calado no NFS S=$(stagein meu_calc) # arg = caminho a partir de ~/projects/ (= final do --chdir) trap 'stageout "$S" meu_calc || true; rm -rf "$S"' EXIT # devolve os resultados ate se o job falhar cd "$S" srun pw.x -in scf.in > scf.out # roda no disco local (rápido)
Vários nós e a rede: o cluster usa interconexão de 1 GbE. Jobs distribuídos em mais de um nó são limitados pela banda da rede. Para a maioria dos cálculos, um único nó (16 núcleos) é mais rápido. Use vários nós (--nodes=N com --ntasks=N×16) apenas quando for necessária mais memória do que um nó oferece. Cada nó conta no limite de jobs simultâneos do usuário. Um limite de 4, por exemplo, permite um único job de 4 nós.
| Partição | Quando usar |
|---|---|
normal | Padrão, para a maioria dos cálculos. |
high | Prioridade alta. |
low | Prioridade baixa, para trabalhos longos não urgentes. |
tests | Testes rápidos (limite de 1 minuto). |
gpu | Nó com GPU. Requer --gres=mps:N (N=25/50/75/100; 25=1/4 da GPU, 100=inteira). |
Substitua a linha de execução do modelo conforme o código e ajuste o preâmbulo (comentado abaixo).
# MPI (preâmbulo: --ntasks=16
module load siesta/5.4.1
srun siesta < entrada.fdf > saida.out
module load qe/7.5
srun pw.x -in scf.in > scf.out
module load fhi-aims/250822
ulimit -s unlimited
srun aims.x > aims.out
module load honpas/master
srun honpas < entrada.fdf > saida.out
module load lammps/22Jul2025
srun lmp_cpu -in entrada.in
# OpenMP (preâmbulo: --ntasks=1 --cpus-per-task=16
module load dftb/25.1
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
dftb+
module load xtb/6.7.1
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
xtb molecula.xyz --opt
# GPU (preâmbulo: --partition=gpu --gres=mps:25 --ntasks=1
module load lammps/22Jul2025-gpu
lmp_gpu_kokkos -k on g 1 -sf kk -pk kokkos newton on neigh half -in entrada.in
module load dftb/25.1-gpu
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
dftb+ # no input.hsd: Solver = MAGMA {}
Exemplo de referência: a otimização do grafeno configurada em cada código, com input, job.slurm e README. Inclui um exemplo em ASE (Python) e um em GPU. Baixe um código ou o pacote completo.
sbatch job.slurm # envia o job para a fila squeue -u $USER # seus jobs (na fila / rodando) scancel JOBID # cancela um job sacct -j JOBID # estado e histórico