#! /bin/csh -f ################################################################################# if ($PHASE == set_batch) then ################################################################################# source ./Tools/ccsm_getenv || exit -1 set mppsize = `${CASEROOT}/Tools/taskmaker.pl -sumonly` set maxthrds = `${CASEROOT}/Tools/taskmaker.pl -maxthrds` set maxtasks = `${CASEROOT}/Tools/taskmaker.pl -sumtasks` @ mppnodes = $mppsize / ${MAX_TASKS_PER_NODE} if ( $mppsize % ${MAX_TASKS_PER_NODE} > 0) then @ mppnodes = $mppnodes + 1 @ mppsize = $mppnodes * ${MAX_TASKS_PER_NODE} endif @ taskpernode = ${MAX_TASKS_PER_NODE} / ${maxthrds} #--- Job name is first fifteen characters of case name --- set jobname = `echo ${CASE} | cut -c1-15` # Janus has simplified their queueing, we will now run # # everything out of the normal queue by default. # # https://www.rc.colorado.edu/support/examples/slurmfaqs set time_limit = "0:50:00" if ($CCSM_ESTCOST > 0) set time_limit = "1:50:00" if ($CCSM_ESTCOST > 1) set time_limit = "4:00:00" if ($?TESTMODE) then set file = $CASEROOT/${CASE}.test else set file = $CASEROOT/${CASE}.run endif cat >! $file << EOF1 #!/bin/csh -f # See https://www.rc.colorado.edu/crcdocs/queues for alternative queues #SBATCH -J ${jobname} #SBATCH --time=${time_limit} #SBATCH --nodes=${mppnodes} #SBATCH --ntasks-per-node=${MAX_TASKS_PER_NODE} #SBATCH --qos=normal #SBATCH -A NCAR46660117 EOF1 ################################################################################# else if ($PHASE == set_exe) then ################################################################################# source ./Tools/ccsm_getenv || exit -1 set mppsize = `${CASEROOT}/Tools/taskmaker.pl -sumonly` set maxthrds = `${CASEROOT}/Tools/taskmaker.pl -maxthrds` set maxtasks = `${CASEROOT}/Tools/taskmaker.pl -sumtasks` @ mppnodes = $mppsize / ${MAX_TASKS_PER_NODE} if ( $mppsize % ${MAX_TASKS_PER_NODE} > 0) then @ mppnodes = $mppnodes + 1 @ mppsize = $mppnodes * ${MAX_TASKS_PER_NODE} endif @ taskpernode = ${MAX_TASKS_PER_NODE} / ${maxthrds} cat >> ${CASEROOT}/${CASE}.run << EOF1 sleep 25 cd \$RUNDIR echo "\`date\` -- CSM EXECUTION BEGINS HERE" setenv OMP_NUM_THREADS ${maxthrds} if ( "\$MPILIB" == "mpi-serial" ) then \$EXEROOT/cesm.exe >&! cesm.log.\$LID else if( $taskpernode > $maxtasks ) then mpirun -np ${maxtasks} \$EXEROOT/cesm.exe >&! cesm.log.\$LID else mpirun -np ${maxtasks} -npernode ${taskpernode} \$EXEROOT/cesm.exe >&! cesm.log.\$LID endif endif wait echo "\`date\` -- CSM EXECUTION HAS FINISHED" EOF1 ################################################################################# else if ($PHASE == set_larch) then ################################################################################# set jobname = `echo ${CASE} | cut -c1-12` set jobname = ${jobname}_la cat >! $CASEROOT/${CASE}.l_archive << EOF1 #! /bin/csh -f #SBATCH -J ${jobname} #SBATCH --nodes=1 #SBATCH --ntasks-per-node=1 #SBATCH --qos=normal cd $CASEROOT source ./Tools/ccsm_getenv || exit -1 cd \$DOUT_S_ROOT $CASEROOT/Tools/lt_archive.sh -m copy_dirs_hsi exit 0 EOF1 chmod 775 ${CASEROOT}/${CASE}.l_archive ################################################################################# else ################################################################################# echo " PHASE setting of $PHASE is not an accepted value" echo " accepted values are set_batch, set_exe and set_larch" exit 1 ################################################################################# endif #################################################################################