source: configs/testing/bash/ifort_CICLAD.sh @ 703

Last change on this file since 703 was 703, checked in by jisesh, 6 years ago

testing : port to CICLAD

  • Property svn:executable set to *
File size: 4.0 KB
Line 
1#!/bin/bash
2
3# This script provides site-specific functions
4# called by the site-independent scripts
5# create_runs.sh and submit.sh
6
7# NB : we must use the queue 'normal' because there seems to be a limit
8# on the number of jobs that can be submitted to queue 'test'
9
10#----------------------------- split_XXX ----------------------------
11
12function split_mpi_32() {
13    setvar nbp 33 nsplit_i 2 nsplit_j 4
14}
15function split_serial_40() {
16    setvar nbp 41 nsplit_i 2 nsplit_j 2
17}
18function split_mpi_40() {
19    setvar nbp 41 nsplit_i 2 nsplit_j 3
20}
21function split_mpi_80() {
22    setvar nbp 81 nsplit_i 4 nsplit_j 3
23}
24function split_mpi_omp_40() {
25    setvar nbp 41 nsplit_i 2 nsplit_j 2 omp_level_size 4
26}
27
28#----------------- job submission ------------------
29
30function submit_job_X64_CURIE() # $1=script $* = SLURM OPTIONS
31{
32    TMP=$(mktemp)
33    ccc_msub $1 > $TMP
34    cat $TMP 1>&2
35    cat $TMP | awk '{print $NF }'
36    rm -f $TMP
37}
38
39#------------------------------ job_XXX -----------------------------
40
41# Serial jobs
42function job_serial() { # EXP_NAME
43    job_gen $1 1 1
44}
45function job_serial_40() { # EXP_NAME
46    job_serial $1
47}
48
49# MPI jobs
50function job_mpi() { #EXP_NAME NB_MPI
51    job_gen $1 $2 1
52}
53function job_mpi_32() { # EXP_NAME
54    job_mpi $1 80
55}
56function job_mpi_40() { # EXP_NAME
57    job_mpi $1 60
58}
59function job_mpi_80() { # EXP_NAME
60    job_mpi $1 120
61}
62
63# MPI-OMP jobs
64function job_mpi_omp() { #EXP_NAME NB_MPI NB_OMP
65    job_gen $1 $2 $3
66}
67function job_mpi_omp_40() { # EXP_NAME
68    job_mpi_omp $1 40 4
69}
70
71# Generic
72function job_gen() { # EXP_NAME MPI_TASKS OMP_TASKS MPIRUN
73MPI=$2
74OMP=$3
75MPI_OMP=$((MPI*OMP))
76NODES=$(((MPI_OMP+63)/64))
77VMEM=$((2*MPI_OMP))
78    cat <<EOF
79#!/bin/bash
80#PBS -N $1
81#PBS -q std
82#PBS -n
83#PBS -l nodes=$NODES:ppn=64
84#PBS -l walltime=00:15:00
85#PBS -l mem=${VMEM}gb
86#PBS -l vmem=${VMEM}gb
87
88#####comment:PBS -l mem=31922327552,ncpus=60
89#Jobs start in the HOME directory, cd to submitted directory
90cd "\$PBS_O_WORKDIR"
91
92############################################################
93NCPU=\$(wc -l < \$PBS_NODEFILE)
94awk "NR % $OMP == 0" \$PBS_NODEFILE | head -n $MPI > nodelist.txt
95
96echo ------------------JOB SUMMARY--------------------------
97echo 'PBS OUT: Job allocated on: '\${NCPU}' cpu(s)'
98echo 'PBS OUT: Job running on the following node(s): '
99cat nodelist.txt
100echo -------------------------------------------------------
101echo PBS OUT: Job running on: \$PBS_O_HOST
102echo PBS OUT: Originating queue: \$PBS_O_QUEUE
103echo PBS OUT: Executing queue: \$PBS_QUEUE
104echo PBS OUT: Work directory: \$PBS_O_WORKDIR
105echo PBS OUT: Execution mode: \$PBS_ENVIRONMENT
106echo PBS OUT: Job identifier: \$PBS_JOBID
107echo PBS OUT: Job name: \$PBS_JOBNAME
108echo PBS OUT: Node file: \$PBS_NODEFILE
109echo PBS OUT: Current home directory: \$PBS_O_HOME
110echo PBS OUT: PATH= \$PBS_O_PATH
111echo -------------------------------------------------------
112
113
114export OMP_NUM_THREADS=$3
115export OMP_STACKSIZE=128M
116ulimit -s unlimited
117
118$(cat $ROOT/DYNAMICO/arch/arch-ifort_CICLAD.env)
119
120rm -rf gcm.log logs *.nc netcdf
121mpirun -np $MPI -cpus-per-proc \$OMP_NUM_THREADS -bycore -bind-to-core -report-bindings ./gcm.exe > gcm.log 2>&1
122$4 >> gcm.log
123date >> gcm.log
124
125mkdir -p netcdf
126cp gcm.log *.def netcdf
127mv *.nc netcdf
128
129mkdir -p logs
130cp *.xml logs
131cp -pr $(readlink -e gcm.exe) logs
132cp -pr $(readlink -e build/src) logs
133mv xios_client_*.err xios_client_*.out gcm.log logs
134
135EOF
136}
137
138#------------------------------ post-processing job -----------------------------
139
140function job_post_X64_CURIE() # LIST
141{
142    DEPLIST=afterany
143    for ID in $* ; do
144        DEPLIST="$DEPLIST:$ID"
145    done
146    cat <<EOF
147#!/bin/bash
148## Request name
149#MSUB -r testing
150#MSUB -q standard
151#MSUB -A gen7548
152#MSUB -E "--dependency=$DEPLIST"
153## Number of tasks (=MPI processes) to use
154#MSUB -n 1
155## Elapsed time limit in seconds
156#MSUB -T 600
157## Quality of Service required (long [3 days], normal [1 day], test [30 min])
158#MSUB -Q normal
159
160export OMP_NUM_THREADS=1
161# this script is submitted from $ROOT/logs
162cd \${BRIDGE_MSUB_PWD}/..
163
164$(cat $ROOT/DYNAMICO/arch/arch-X64_CURIE.env)
165module load python
166
167bash/post.sh
168EOF
169}
Note: See TracBrowser for help on using the repository browser.