#!/bin/bash # This script provides site-specific functions # called by the site-independent scripts # create_runs.sh and submit.sh #----------------------------- split_XXX ---------------------------- function split_mpi_32() { setvar nbp 32 nsplit_i 1 nsplit_j 2 } function split_serial_40() { setvar nbp 40 nsplit_i 1 nsplit_j 2 } function split_mpi_40() { setvar nbp 40 nsplit_i 1 nsplit_j 2 } function split_mpi_80() { setvar nbp 80 nsplit_i 1 nsplit_j 2 } function split_mpi_omp_40() { setvar nbp 40 nsplit_i 1 nsplit_j 2 omp_level_size 1 } #----------------- job submission ------------------ function submit_job_X64_IRENE() # $1=script $* = SLURM OPTIONS { TMP=$(mktemp) ccc_msub $1 > $TMP cat $TMP 1>&2 cat $TMP | awk '{print $NF }' rm -f $TMP } #------------------------------ job_XXX ----------------------------- # Serial jobs function job_serial() { # EXP_NAME job_generic $1 1 1 "./gcm.exe" } function job_serial_40() { # EXP_NAME job_serial $1 } # MPI jobs function job_mpi() { #EXP_NAME NB_MPI job_generic $* "srun ./gcm.exe" } function job_mpi_32() { # EXP_NAME job_mpi $1 1 4 4 } function job_mpi_40() { # EXP_NAME job_mpi $1 1 4 4 } function job_mpi_80() { # EXP_NAME job_mpi $1 1 4 4 } # MPI-OMP jobs function job_mpi_omp() { # EXP_NAME NODES GPUS GPU_PER_NODE job_generic $* "srun ./gcm.exe" } function job_mpi_omp_40() { # EXP_NAME job_mpi_omp $1 1 4 4 } # Generic function job_generic() { # EXP_NAME NODES GPUS GPU_PER_NODE CMD cat < gcm.log ulimit -s unlimited $5 >> gcm.log date >> gcm.log # move output files to netcdf subdir mkdir -p netcdf cp gcm.log *.def netcdf mv *.nc netcdf # keep log files, source code and executable for debug mkdir -p logs cp *.xml logs cp -pr gcm.exe logs cp -pr build/src logs mv xios_client_*.err xios_client_*.out gcm.log logs EOF } #------------------------------ post-processing job ----------------------------- function job_post_X64_IRENE() # LIST { DEPLIST=afterany for ID in $* ; do DEPLIST="$DEPLIST:$ID" done cat <