NanoEng

Estrutura computacional

Recursos de computação de alto desempenho que sustentam as simulações do laboratório.

Cluster local

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.

Nós de computação
11
em uso
Núcleos de CPU
352
em uso
Memória total
720 GB
em uso
GPU
RTX 4080
em uso
Armazenamento
28 TB
em uso

Monitoramento ao vivo — Grafana (beta)

Software científico instalado

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.

Primeiros princípios (DFT)

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 linear

Tight-binding e semiempírico

dftb/25.1 · DFTB / xTB, variantes MPI e GPU (MAGMA)
xtb/6.7.1 · Semiempírico GFN-xTB

Dinâmica molecular

lammps/22Jul2025 · ReaxFF, AIREBO, ELECTRODE, etc. (AVX-512 + variante GPU)

Preparação e análise

python/3.12 · ASE, NumPy, SciPy, Matplotlib, phonopy, spglib, h5py
Empacotamento de moléculas para configurações iniciais de MD
Geração de campos de força e topologias para MD

Diferencial: 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).

Como rodar no cluster

O fluxo é sempre o mesmo: carregar o módulo, escrever um script SLURM e submeter. A fila distribui o trabalho entre os nós.

1. Sistema de módulos

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

2. Onde colocar os arquivos

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.

3. Script SLURM (modelo)

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.

4. Filas (partições)

PartiçãoQuando usar
normalPadrão, para a maioria dos cálculos.
highPrioridade alta.
lowPrioridade baixa, para trabalhos longos não urgentes.
testsTestes rápidos (limite de 1 minuto).
gpuNó com GPU. Requer --gres=mps:N (N=25/50/75/100; 25=1/4 da GPU, 100=inteira).

5. Linha de execução por código

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 {}

6. Exemplos para download

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.

7. Submeter e acompanhar

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