## ## RUN - Strong -scaling ## ## Before starting this job-script replace "SUBMIT" with the submition-command of the local queing system. ## Additional in the script submit_job the execution command has to be adjusted to the local machine. ## ## ## Script for a parallelization of 2 4 8 16 32 64 KNLs ## #!/bin/bash EXE=/ccc/cont005/home/unicy/finkenrj/run/qphix/time_clov_noqdp ## Set scaling-mode: Strong or Weak sca_mode="Strong" #sca_mode="OneNode" #sca_mode="Weak" ## mode="Analysis" mode="Run" ## sbatch_on=1 exe_perm=1 ## use chmod to allow execution of submit_job_Nx_Gx.sh g=8 ##MPItaskperNODE openmp=6 ##OMP cpuptask=6 ## Total number of CPUS / MpitaskperNODE (= openmp if Hyperthreaded Cores are used, = 2* openmp if Hyperthreading is enabled but not used ) ## lattice size (size strong 1) gx=96 gy=96 gz=96 gt=192 ## lattice size (size strong 2) #gx=8 #gy=4 #gz=4 #gt=8 ## lattice size (size weak 1) #gx=48 #gt=24 ## use smaller lattice size of weak scaling mode: like gx=24 gt=24 ## #gy=$gx #gz=$gx lt=$gt lx=$gx ly=$gy lz=$gz # for gpus_per_node in 1 2; do cards_per_node=1 #n=1 # for n in 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576; do for n in 8 16 32 64 128 256 512 1024 2048 4096 8192 16384; do # for n in 8 16 32 64 128 256 512 1024 2048 4096 8192 16384; do # for n in 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384; do # for n in 8; do for p in "s" "d" ; do # p="d" case $p in "s" ) prec="f" ;; "d" ) prec="d" ;; "h" ) prec="h" ;; esac px=1 py=1 pz=1 pt=$n if [ $n -eq 16 ];then pz=2 pt=8 fi if [ $n -eq 32 ];then pz=4 pt=8 fi if [ $n -eq 64 ];then py=2 pz=4 pt=8 fi if [ $n -eq 128 ];then py=2 pz=8 pt=8 fi if [ $n -eq 256 ];then py=4 pz=8 pt=8 fi if [ $n -eq 512 ];then px=2 py=4 pz=8 pt=8 fi if [ $n -eq 1024 ];then px=4 py=4 pz=8 pt=8 fi if [ $n -eq 2048 ];then px=8 py=4 pz=8 pt=8 fi if [ $n -eq 4096 ];then px=8 py=8 pz=8 pt=8 fi if [ $n -eq 8192 ];then px=8 py=8 pz=8 pt=16 fi if [ $n -eq 16384 ];then px=8 py=8 pz=16 pt=16 fi if [ $n -eq 32768 ];then px=8 py=16 pz=16 pt=16 fi if [ $n -eq 65536 ];then px=16 py=16 pz=16 pt=16 fi if [ $n -eq 131072 ];then px=16 py=16 pz=16 pt=32 fi if [ $n -eq 262144 ];then px=16 py=16 pz=32 pt=32 fi if [ $n -eq 524288 ];then px=16 py=32 pz=32 pt=32 fi if [ $n -eq 1048576 ];then px=32 py=32 pz=32 pt=32 fi nt=$n if [ $sca_mode = "Strong" ];then lt1=$((gt/pt)) lx1=$((gx/px)) ly1=$((gy/py)) lz1=$((gz/pz)) elif [ $sca_mode = "OneNode" ]; then lx1=$((gx*px)) ly1=$((gy*py)) lz1=$((gz*pz)) lt1=$((gt*pt/g)) nt=$g lx=$((gx*px)) ly=$((gy*py)) lz=$((gz*pz)) lt=$((gt*pt)) px=1 py=1 pz=1 pt=$g else lt1=$lt lx1=$lx ly1=$ly lz1=$lz lt=$((gt*pt)) lx=$((gx*px)) ly=$((gy*py)) lz=$((gz*pz)) fi Node=$((nt/g)) name=${sca_mode}_qphix_${pt}x${pz}x${py}x${px}_${lt}x${lz}x${ly}x${lx}_${p} if [ $mode != "Analysis" ];then echo $name submitscript=submit_job_N${nt}_${p}.sh ./prepare_submit_job.sh '00:10:00' ${Node} ${nt} ${g} ${openmp} ${cpuptask} ${exe_perm} ${submitscript} ${pt} ${pz} ${py} $px $EXE $name $lx $lz $ly $lt $prec ccc_msub ./$submitscript sleep 1 ## Scaning the output and save the data in dat_nameif else case $p in "s" ) echo $name >> Sca_s.log less $name | grep "Time" -A 1 >> Sca_s.log ;; "d" ) echo $name >> Sca_d.log less $name | grep "Time" -A 1 >> Sca_d.log ;; "h" ) echo $name >> Sca_h.log less $name | grep "Time" -A 1 >> Sca_h.log ;; esac fi done done