#!/bin/bash
#SBATCH --nodes=1               # Number of Nodes
#SBATCH --ntasks-per-node=1     # Number of MPI tasks per node
#SBATCH --cpus-per-task=40      # Number of OpenMP threads
#SBATCH --gres=gpu:4            # Allocate 4 GPUs
#SBATCH --hint=nomultithread    # Disable hyperthreading
#SBATCH --job-name=job          # Jobname
#SBATCH --output=%x.o%j         # Output file %x is the jobname, %j the jobid 
#SBATCH --error=%x.o%j          # Error file
#SBATCH --time=20:00:00         # Runtime limit HH:MM:SS (max 100h for V100, 20h for A100)
##
## Please, refer to comments below for
## more information about these 4 last options.
##SBATCH --account=<account>@v100      # To specify gpu accounting: <account> = echo $IDRPROJ
##SBATCH --partition=<partition>       # To specify partition (see IDRIS web site for more info)
##SBATCH --qos=qos_gpu-dev      # Uncomment for job requiring less than 2 hours
##SBATCH --qos=qos_gpu-t4      # Uncomment for job requiring more than 20h (up to 16 GPU, V100 only)

# Cleans out the modules loaded in interactive and inherited by default
module purge

# Load the module
module load gaussian/g16-revC01

# Use JOBSCRATCH as temporary directory for job files ( erased at the end of job! )
# Instead, you can use a subdirectory of $SCRATCH to keep the temporary files needed to restart jobs
# If you want to keep chk and/or rwf file, you can also specify the link0 commands
export GAUSS_SCRDIR=$JOBSCRATCH

# Run of Gaussian on 4 gpus (-g="0-3=0-3")
# asking for 100GB of memory (-m=100GB) : maximum is 4GB per core reserved.
g16 -c="$(g16_cpu_list)" -m=100GB -g="$(g16_gpu_list)" < job.com