Siesta 4.0

Descrição

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.

Utilização Serial

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.

Utilização Paralela

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`