Pular para conteúdo

Workflow para Dinâmica Molecular utilizando gridUNESP

Testado em

  • Ambiente: contêiner Apptainer (Ubuntu 24.04 + CUDA 12.9.1)
  • GROMACS: 2026.2
  • CUDA: 12 (sm_89)
  • Versão do contêiner: 2026.06.19

Cluster gridUNESP

Tutorial para criar contêiner com suporte ao uso de GPU CUDA no gridUNESP.

Antes de começar, leia a documentação do gridUNESP e documentações complementares CUDA 13 e GROMACS 2026.x.


Criando o container com Apptainer

A tecnica de contêineres com apptainer, docker e outros softwares busca criar imagens e ambientes de sistemas com bibliotecas instaladas o qual o processamento é feito dentro do contêiner que se comunica com o host principal. Recentemente, o gridUNESP implementou a contêinirização em seus servidores.

Para criar um contêiner, precisamos de dois arquivos: gromacs-gpu.def e build.sh.

gromacs-gpu.def:

Bootstrap: docker
From: nvidia/cuda:12.9.1-devel-ubuntu24.04

%post
    # --- 1. Preparação do Sistema ---
    export DEBIAN_FRONTEND=noninteractive
    export CUDA_HOME=/usr/local/cuda
    export PATH=$CUDA_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

    apt update
    apt-mark hold $(apt-cache pkgnames | grep -E "^cuda|^libnvidia|^libcudnn") 2>/dev/null || true
    apt upgrade -y

    nvcc --version
    cat /etc/os-release
    uname -r
    g++ --version
    ldd --version

    apt install -y \
        build-essential \
        libboost-all-dev \
        cmake \
        unzip \
        bzip2 \
        file \
        gcc \
        g++ \
        gfortran \
        perl \
        gawk \
        curl \
        git \
        hwloc \
        libhwloc-dev \
        libopenblas-dev \
        liblapack-dev \
        libfftw3-dev \
        wget \
        ca-certificates

    apt autoremove -y
    apt autoclean -y

    ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
    dpkg-reconfigure -f noninteractive tzdata

    # --- 2. Compilação do GROMACS ---
    GROMACS_VERSION=2026.2

    cd /opt
    wget https://download.pytorch.org/libtorch/cu128/libtorch-shared-with-deps-2.10.0%2Bcu128.zip
    unzip libtorch-shared-with-deps-2.10.0+cu128.zip
    rm libtorch-shared-with-deps-2.10.0+cu128.zip
    mv libtorch /usr/local/libtorch

    wget https://ftp.gromacs.org/gromacs/gromacs-${GROMACS_VERSION}.tar.gz
    tar xfz gromacs-${GROMACS_VERSION}.tar.gz
    cd gromacs-${GROMACS_VERSION}

    mkdir build
    cd build

    cmake .. \
        -DCMAKE_BUILD_TYPE=Release \
        -DGMX_BUILD_OWN_FFTW=ON \
        -DREGRESSIONTEST_DOWNLOAD=ON \
        -DGMX_SIMD=AVX_512 \
        -DGMX_GPU=CUDA \
        -DCUDAToolkit_ROOT=/usr/local/cuda \
        -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
        -DGMX_HWLOC=ON \
        -DGMX_USE_PLUMED=ON \
        -DGMX_USE_COLVARS=INTERNAL \
        -DGMX_NNPOT=TORCH \
        -DCMAKE_PREFIX_PATH="/usr/local/libtorch;/usr/local/cuda" \
        -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs

    make -j$(nproc)
    make install -j$(nproc)

%environment
    # --- Variáveis do GROMACS (Definições) ---
    export GMXBIN=/usr/local/gromacs/bin
    export GMXLDLIB=/usr/local/gromacs/lib
    export GMXMAN=/usr/local/gromacs/share/man
    export GMXDATA=/usr/local/gromacs/share/gromacs
    export PATH=$GMXBIN:$PATH
    export LD_LIBRARY_PATH=$GMXLDLIB:/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    export MANPATH=$GMXMAN:$MANPATH

%runscript
    echo "Conteiner GROMACS Classic iniciado..."
    echo "Autor: Patrick Allan dos Santos Faustino, PhD"
    exec "$@"

%labels
    Author "Patrick Allan dos Santos Faustino"
    Version "2026.06.19"
    Stack "Ubuntu 24.04 | CUDA 12 (sm_89) | GROMACS 2026.2 with NNPOT"

Warning

Mantenha sempre uma versão <= CUDA do contêiner em relação ao CUDA instalado no gridUNESP.

No arquivo build.sh, será enviado a tarefa de criar o contêiner para processamento do gridUNESP.

build.sh:

#!/bin/bash
#SBATCH -t 23:30:00
#SBATCH --job-name=apptainer
#SBATCH --cpus-per-task=32

export INPUT="gromacs-gpu.def"
export OUTPUT="*"
export VERBOSE="1"

job-nanny apptainer build gromacs-gpu.sif gromacs-gpu.def
sbatch build.sh

Tip

Faça o download e backup do arquivo gromacs-gpu.sif. Esse arquivo é o contêiner criado e pode ser utilizado em qualquer computador compatível.


Dinâmicas moleculares no contêiner

Para a dinâmica, utilize os arquivos de exemplo md1.sh e run1.sh.

md1.sh:

!/bin/bash

    # Verifica a versão do Gromacs
    gmx --version

    # Diretório de trabalho
    cd rep1

    # Gerar arquivo .tpr
    gmx grompp -v -f inputs/md.mdp -c npt.gro -t npt.cpt -o md_500ns.tpr -p topol.top

    # Dinâmica de produção
    gmx mdrun -v -deffnm md_500ns -ntmpi 1 -ntomp 24 -gpu_id 0 -nb gpu -pme gpu -bonded gpu -update gpu -pin on -maxh 23.3 

run1.sh:

#!/bin/bash
#SBATCH -t 23:50:00
#SBATCH --partition=gpu
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --mem=16G
#SBATCH --job-name=job_rep1
#SBATCH --cpus-per-task=24
#SBATCH --mail-user=patrick.faustino@unesp.br
#SBATCH --mail-type=BEGIN,END,FAIL

export INPUT="rep1 gromacs-gpu.sif md1.sh"
export OUTPUT="*"
export VERBOSE="1"

module load gcc/14.3.0
module load cuda/12.9

# Executa o script de verificação dentro do container
job-nanny apptainer exec --nv ubuntu2404.sif bash md1.sh

sbatch run1.sh

Dicas para gridUNESP

ssh usuario@access.grid.unesp.br    # para acesso

squeue -u usuario    # lista tarefas do usuario
squeue -a            # lista todas as tarefas do grid

sbatch job.sh                 # submete a tarefa
scancel 00000000              # cancela a tarefa, onde 00000000 é o numero atribuido a tarefa
scontrol show job 00000000    # verifica detalhes da tarefa

sshare -a | grep usuario       # verifica o FairShare, quanto maior for, maior a prioridade.

squeue -o "%.18i %.9Q %.8j %.8u %.10V %.6D %R" --sort=-p,i --states=PD    # verifica a fila das próximas tarefas

tail -f slurm-00000000.out    # acompanha o processamento da tarefa

sinfo -p gpu -o "%.10P %.5a %.10l %.6D %.6t %.8C %.8m %.25G"        # obter informações dos nós com GPU
sinfo -t idle        # nós que estão disponíveis.

Boas simulações moleculares!


Como citar

FAUSTINO, P. A. S. Documentação sobre Química Biofísica Computacional. [S. l.]: Zenodo, 2026. DOI 10.5281/zenodo.22729510. Disponível em: https://doi.org/10.5281/zenodo.22729510.