Ceci est une ancienne révision du document !


GAUSSIAN

Submission script Gaussian 16

sub_gaussian16.sh
#!/bin/bash
#$ -S /bin/bash
#$ -N test
#$ -o $JOB_NAME.batch-log
#$ -j y
#$ -cwd
#$ -V
#$ -q E5*
##$ -pe gaussian8 8
#$ -pe openmp8 8
 
# trace script (debug purpose, not mandatory)
set -x
# set globals
job=structure11
ExtIn=com
ExtOut=log
 
# Environment setting for gaussian
module use /home/tjiang/modules/lmod
# Automatically decide which binary to use, depending on the cpu architecture
cpu_arch="$(sed '20q;d' /proc/cpuinfo)"
module use /home/tjiang/modules/lmod
if  [[ $cpu_arch = *"avx2"* ]]; then
    module load gaussian/g16-avx2
elif  [[ $cpu_arch = *"avx"* ]]; then
    module load gaussian/g16-avx
else
    echo ""
    echo "#########################################################"
    echo "This queue (${QUEUE}) is too old for running Gaussian 16!!!"
    echo "#########################################################"
    echo ""
    exit
fi
source $g16root/g16/bsd/g16.profile
export Gaussian=$g16root/g16/g16
 
cd ${SGE_O_WORKDIR}
echo "########## begin env##################"
env
echo "########## end env ##################"
echo "########## Hostname ##################"
hostname
 
HOMEDIR=${SGE_O_WORKDIR}
cd ${HOMEDIR}
 
# Replace 'home' by 'scratch', from SGE_O_WORKDIR, store to SCRATCHDIR
SCRATCHDIR=/scratch/$USER/$JOB_ID/
# check if scratch exist, create or complain
if [[ -d "/scratch" ]]
then
    mkdir -p ${SCRATCHDIR}
else
    echo "/scratch not found, cannot create ${SCRATCHDIR}"
fi
 
# check if scratchdir is OK
echo "ok" >  ${SCRATCHDIR}/toto
Ok=$(cat  ${SCRATCHDIR}/toto)
if [[ "${Ok}" != "ok" ]]
then
    # if scratch is unavailable, fallback to home
    CalcDir="${SGE_O_WORKDIR}/scratch"_${job}
    mkdir -p ${CalcDir}
else
    CalcDir=${SCRATCHDIR}
fi
 
# Gaussian specific ScratchDir
export GAUSS_SCRDIR=${CalcDir}
 
Machine=$(hostname)
 
# check if there is a chk or chk.gz
# TODO/FIXME there's a problem here, watching the trace: if no chk, it create a .chk.chk
NChk=` grep -i "chk" ${job}.${ExtIn} | head -1 | sed 's/=/ /g' | awk '{print $2}'`
if [ "$NChk" != "" ]
then
NChk=` basename $NChk .chk`.chk
fi
if [[ -s ${HOMEDIR}/${NChk} ]]
then
    cp ${HOMEDIR}/${NChk} ${CalcDir}/${NChk}
fi
if [[ -s ${HOMEDIR}/${NChk}.gz ]]
then
    cp ${HOMEDIR}/${NChk}.gz ${CalcDir}/${NChk}.gz
    gunzip ${CalcDir}/${NChk}.gz
fi
 
cp ${HOMEDIR}/${job}.${ExtIn} ${CalcDir}/
 
# logrotate old logs
if [[ -s ${HOMEDIR}/${job}.${ExtOut} ]]
then
    Ext=1
    while [[ -s ${HOMEDIR}/${job}.${ExtOut}_${Ext} ]]
    do
        let Ext=Ext+1
    done
    mv ${HOMEDIR}/${job}.${ExtOut} ${HOMEDIR}/${job}.${ExtOut}_${Ext}
fi
 
cd ${CalcDir}
echo ${CalcDir}
ls -al
 
echo "time ${Gaussian} < ${job}.${ExtIn} > ${HOMEDIR}/${job}.${ExtOut}"
 
#/usr/bin/time ${Gaussian} < ${job}.${ExtIn} > ${HOMEDIR}/${job}.${ExtOut}
${Gaussian} < ${job}.${ExtIn} > ${HOMEDIR}/${job}.${ExtOut}
 
cp * ${HOMEDIR}/
 
if [[ -s ${NChk} ]]
then
    gzip -9 ${NChk}
    cp ${NChk}.gz ${HOMEDIR}/
fi
 
# final cleanup (commented during debug)
rm -r ${GAUSS_SCRDIR}
rm -r ${CalcDir}
faq/chimie/gaussian.1532426644.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)