Ceci est une ancienne révision du document !
#!/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} #Remove Gau-* files that we don't need cd ${HOMEDIR} rm -f Gau-*