#!/bin/bash # This is the generic jobscript to run jobs on GridEngine # # The script supports up to 7 parameters. # # The user specific part of the script is indicated below. par1="no" par2="no" par3="no" par4="no" par5="no" par6="no" par7="no" if [ $# -lt 1 ] then echo "Usage : jobScript.sh par1 [par2] [par2] [par3] [par4] [par5] [par6] [par7]" sleep 3 exit fi case "$#" in 1) par1=$1 ;; 2) par1=$1 par2=$2 ;; 3) par1=$1 par2=$2 par3=$3 ;; 4) par1=$1 par2=$2 par3=$3 par4=$4 ;; 5) par1=$1 par2=$2 par3=$3 par4=$4 par5=$5 ;; 6) par1=$1 par2=$2 par3=$3 par4=$4 par5=$5 par6=$6 ;; 7) par1=$1 par2=$2 par3=$3 par4=$4 par5=$5 par6=$6 par7=$7 ;; *) echo "Unsupported number of arguments" echo "Usage : jobScript.sh par1 [par2] [par2] [par3] [par4] [par5] [par6] [par7]" exit ;; esac echo "" echo "--------------------------------" echo "SLURM_JOBID : " $SLURM_JOBID echo "SLURM_ARRAY_JOB_ID : " $SLURM_ARRAY_JOB_ID echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID echo "--------------------------------" echo "" arrayoffset=$par3 pathoutputlog=$par2 jobarrayFile=$par1 ((myline=${SLURM_ARRAY_TASK_ID}+${arrayoffset})) # map back params for the job input=$(awk "NR==${myline}" $jobarrayFile) # get all params for this job par1=$(echo $input | cut -d " " -f1) par2=$(echo $input | cut -d " " -f2) par3=$(echo $input | cut -d " " -f3) par4=$(echo $input | cut -d " " -f4) par5=$(echo $input | cut -d " " -f5) par6=$(echo $input | cut -d " " -f6) par7=$(echo $input | cut -d " " -f7) echo "" echo "--------------------------------" echo "input: $input" echo "par1 = ${par1}" echo "par2 = ${par2}" echo "par3 = ${par3}" echo "par4 = ${par4}" echo "par5 = ${par5}" echo "par6 = ${par6}" echo "par7 = ${par7}" echo "--------------------------------" echo "" format='+%Y/%m/%d-%H:%M:%S' date $format echo "" echo "--------------------------------" echo "RUNNING ON HOST : " $(hostname) echo "WORKING DIR : " $(pwd) echo "USER is : " $USER echo "DISK USAGE /tmp :" df -h /tmp echo "--------------------------------" echo "" echo "--------------------------------" echo " DEBUG INFO" echo "==> Kernel version information :" uname -a echo "==> C compiler that built the kernel:" cat /proc/version echo "==> load on this node:" mpstat -P ALL echo "==> actual compiler is" gcc -v echo "--------------------------------" echo "" ################################################################### ################################################################### # EDIT THIS PART TO EXECUTE YOUR JOB! smash=$par1 converter=$par2 filename=$par3 # Au_Au_1230MeV_1000evts_90296 outdir=$par4 # final outdir nevents=$par5 seed=$par6 input=$par7 #/lustre/nyx/hades/user/hadesdst/sub/apr12/eos/urqmd/input/Au_Au_1230MeV_bmax10_eos.input smashdir=${outdir}/data_${seed} convert_infile=${smashdir}/particle_lists.oscar convert_config=${smashdir}/config.yaml convert_outfile=${smashdir}/${filename}.evt olddir=$(pwd) echo "==> ldd ${smash}" ldd ${smash} echo " ==> ldd ${converter}" ldd ${converter} if [ ! -d ${outdir}/evt ] then mkdir -p ${outdir}/evt fi if [ ! -d ${outdir}/oscar ] then mkdir -p ${outdir}/oscar fi cd ${outdir} ####################################### # because of the random seed we need to # clone the input config=$(basename ${input}) cfg=${config}_${seed} cat ${input} | sed "s/Randomseed: -1/Randomseed: ${seed}/" > $cfg ####################################### echo "==> execute program " defdir=$(dirname $smash) . ${defdir}/defall.sh echo "==> RUNNING SMASH:" time ${smash} -i $cfg -f -o ${smashdir} # will create particle_lists.oscar config.yaml if [ $? -ne 0 ] then echo "ERROR: smash did not succeed!" fi if [ -f $cfg ] then echo rm -f $cfg rm -f $cfg fi echo "RUNNING CONVERT:" if [ -f ${convert_infile} ] then echo "$converter $convert_infile $convert_config $convert_outfile $events" #USAGE: convert-smash infile config outfile [nevents] time $converter $convert_infile $convert_config $convert_outfile $events mv ${convert_infile} ${outdir}/oscar/${filename}.oscar else echo "ERROR: file = ${$convert_infile} not found!" fi if [ -f ${convert_outfile} ] then mv ${convert_outfile} ${outdir}/evt/ else echo "ERROR: file = ${convert_outfile} not found!" fi if [ -d ${smashdir} ] then echo "removing smash dir : ${smashdir}" rm -rf ${smashdir} fi ls -ltrh ${outdir}/evt/${filename}.evt cd ${olddir} # END EDIT YOUR EXECUT JOB! ################################################################### ################################################################### echo "" echo "--------------------------------" echo "Job with params " echo "par1 = ${par1}" echo "par2 = ${par2}" echo "par3 = ${par3}" echo "par4 = ${par4}" echo "par5 = ${par5}" echo "par6 = ${par6}" echo "par7 = ${par7}" echo "finsished!" echo "--------------------------------" echo "" host=$(hostname) echo "" echo "--------------------------------" echo "MONITOR ENVIRONMENT:" echo "SLURM_JOBID : " $SLURM_JOBID echo "SLURM_ARRAY_JOB_ID : " $SLURM_ARRAY_JOB_ID echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID echo "RUNNING ON HOST : " $(hostname) echo "WORKING DIR : " $(pwd) echo "USER is : " $USER echo "DISK USAGE /tmp :------------" df -h /tmp echo "--------------------------------" date $format sleep 2 infile=$(basename $par3) mv ${pathoutputlog}/slurm-${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}.out ${pathoutputlog}/${infile}.log