SIESTA é um método e sua implementação de programas de computador, para realizar cálculos eficientes de estrutura eletrônica e simulações de dinâmica molecular ab initio de moléculas e sólidos.
Este exemplo é apropriado para execução em apenas 1 core. Onde:
entrada.fdf
é o arquivo de entrada;saida.out
é o arquivo de saída que vai ser gerado após o termino da execução do job.
#!/bin/bash
#SBATCH --job-name=SiestaSerial # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=1 # Número de nós utilizados
#SBATCH --ntasks-per-node=1 # Número de processos em cada nó
#SBATCH --cpus-per-task=1 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
ARQINP="entrada.fdf"
# Arquivo de saída
ARQOUT="saida.out"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando Siesta - " `date`
srun siesta < ${ARQINP} > ${ARQOUT}
echo "Job Concluído - " `date`
De acordo com o exemplo acima, o parâmetro “siesta” é o executável do Siesta, o “entrada.fdf” é o arquivo de entrada, já o “saida.out” é o arquivo de saída que vai ser gerado após o termino da execução do job.
Este exemplo é apropriado para execução em vários núcleos de processamento, utilizando MPI. Onde:
--nodes=
define a quantidade de nós que será utilizada. Observe que cada nó esta utilizando 12 cores;entrada.fdf
é o arquivo de entrada;saida.out
é o arquivo de saída que vai ser gerado após o termino da execução do job.
#!/bin/bash
#SBATCH --job-name=SiestaMPI # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=2 # Número de nós utilizados
#SBATCH --ntasks-per-node=12 # Número de processos em cada nó
#SBATCH --cpus-per-task=1 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
ARQINP="entrada.fdf"
# Arquivo de saída
ARQOUT="saida.out"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando Siesta - " `date`
mpirun siesta < ${ARQINP} > ${ARQOUT}
echo "Job Concluído - " `date`