Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync #1

Merged
merged 10 commits into from
Aug 11, 2024
121 changes: 121 additions & 0 deletions runcodee
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
#!/bin/bash
date

ml cpu
#ml use /global/common/software/m4232/modulefiles_test/pm
ml codee
ml -t

RPWD=$(realpath $PWD) # if not in HOME, can use RPWD=$PWD

# (1) All

#codee screening --config compile_commands.json \
# --exclude ${RPWD}/phys/module_sf_noahmplsm.f90 \
# --exclude ${RPWD}/phys/module_shcu_deng.f90 \
# --exclude ${RPWD}/phys/module_cu_kf.f90 \
# --verbose

# (2) show failures

#codee screening --show-failures=all \
# --config compile_commands.json \
# --exclude ${RPWD}/phys/module_sf_noahmplsm.f90 \
# --exclude ${RPWD}/phys/module_shcu_deng.f90 \
# --exclude ${RPWD}/phys/module_cu_kf.f90 \
# --verbose

# (3) Screening report of the entire phys directory

#codee screening --config compile_commands.json \
## --brief ${RPWD}/phys/ \
## --exclude ${RPWD}/phys/module_sf_noahmplsm.f90 \
## --exclude ${RPWD}/phys/module_shcu_deng.f90 \
## --exclude ${RPWD}/phys/module_cu_kf.f90 \
## --verbose
#codee screening --config compile_commands.json --brief ${RPWD}/phys/ \
# --exclude ${RPWD}/phys/module_sf_noahmplsm.f90 \
# --exclude ${RPWD}/phys/module_shcu_deng.f90 \
# --exclude ${RPWD}/phys/module_cu_kf.f90

#

#codee screening --config compile_commands.json \
## --exclude ${RPWD}/phys/module_sf_noahmplsm.f90 \
## --exclude ${RPWD}/phys/module_shcu_deng.f90 \
## --exclude ${RPWD}/phys/module_cu_kf.f90 \
## --verbose

# (4) screeing report of Thompson

#codee screening --config compile_commands.json \
# --brief ${RPWD}/phys/module_mp_thompson.f90

#codee screening --config compile_commands.json \
# --brief ${RPWD}/phys/module_mp_thompson.f90 --target-arch gpu

# Checks report of Thompson (add --verbose to see more detals)

#codee checks --config compile_commands.json \
# --brief ${RPWD}/phys/module_mp_thompson.f90

#codee checks --config compile_commands.json \
# --brief ${RPWD}/phys/module_mp_thompson.f90 --target-arch gpu

# Codee diagnose report of Thompson

#codee diagnose --summary \
# --config compile_commands.json \
# --brief ${RPWD}/phys/module_mp_thompson.f90

#codee diagnose --summary \
# --config compile_commands.json \
# --brief ${RPWD}/phys/module_mp_thompson.f90 --target-arch gpu

# (5) Focus on a single function, e.g., Kernals_KS

#codee screening --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:Kernals_KS --target-arch gpu

# (6) Check the lines

#codee checks --verbose \
# --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:Kernals_KS --target-arch gpu

# (7) Apply fix with codee: loop interchange

#codee rewrite --memory loop-interchange --in-place \
# --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:6225:3

# (8) Check again with the modified file:

codee checks --verbose \
--config compile_commands.json \
${RPWD}/phys/module_mp_fast_sbm.f90:Kernals_KS --target-arch gpu

# (8) Apply the fix with codee: OpenMP offloading

#codee rewrite --offload omp-teams --in-place \
# --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:6293:4
#codee rewrite --offload omp-teams --in-place \
# --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:6225:3,6236:4,6263:4,6291:4,6379:7

# (9) Check again with the modified file:

#codee checks --verbose \
# --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:Kernals_KS --target-arch gpu

# (9) Apply fix with codee: OpenMP offloading

#codee rewrite --offload omp-teams --in-place \
# --config compile_commands.json \
# ${RPWD}/phys/module_mp_fast_sbm.f90:6238:4,6265:4,6392:7

#codee rewrite --help

date
4 changes: 4 additions & 0 deletions testcases/conus_12-km/setup_rundir_WRF.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ cp /global/cfs/cdirs/m4232/intern_2024/input_sbm/namelist.input.cold namelist
cp /global/cfs/cdirs/m4232/intern_2024/input_sbm/CESM_RCP4.5_Current_Aerosol_Data.dat \
/global/cfs/cdirs/m4232/intern_2024/input_sbm/CESM_RCP4.5_Future_Aerosol_Data.dat .
cp /global/cfs/cdirs/m4232/intern_2024/input_sbm/wrfrst_d01_2008-07-15_00_00_00 wrfrst_d01_2008-07-15_00_00_00.sbm
cp /global/cfs/cdirs/m4232/intern_2024/input_sbm/wrfbdy_d01 wrfbdy_d01.sbm
cp /global/cfs/cdirs/m4232/intern_2024/input_sbm/wrfinput_d01 wrfinput_d01.sbm
cp -r /global/cfs/cdirs/m4232/intern_2024/input_sbm/{SBM_input_33,SBM_input_43} \
/global/cfs/cdirs/m4232/intern_2024/input_sbm/scattering_tables_2layer_high_quad_1dT_1%fw_110 .

Expand All @@ -41,6 +43,8 @@ cp ${scriptdir}/namelist_v4.5.2_conus12km_restart.input ${rundir}/namelist.input

#copy sbatch script
cp ${scriptdir}/sub_wrf_pm_testcase.sh ${rundir}/sub_testcase.sh
cp ${scriptdir}/updown.sh ${rundir}/updown.sh
cp ${scriptdir}/wrapper-ncu.sh ${rundir}/wrapper-ncu.sh

#edit the email address and job name in the sbatch script
sed -i "s/elvis@nersc.gov/${myemail}/" sub_testcase.sh
Expand Down
18 changes: 17 additions & 1 deletion testcases/conus_12-km/sub_wrf_pm_testcase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ n=64 # number of MPI ranks
#Modules --------------------------------------------------------------------
if [[ $use_gpu -eq 1 ]]; then
module load gpu
if [[ $peenv == gnu ]]; then
export GOMP_DEBUG=1
elif [[ $peenv == nvidia ]]; then
export NVCOMPILER_ACC_NOTIFY=3
elif [[ $peenv == cray ]]; then
export CRAY_ACC_DEBUG=3
fi
else
module load cpu
fi
Expand All @@ -46,6 +53,11 @@ ml -t
#1. don't load the wrf module
#2. the modified executable (wrf.exe) has to be placed in the rundir

#To run an SBM case, remame namelist.input.sbm, wrfbdy_d01.sbm,
#wrfinput_d01.sbm and wrfrst_d01_2008-07-15_00_00_00.sbm to
#namelist.input, wrfbdy_d01, wrfinput_d01 and wrfrst_d01_2008-07-15_00_00_00,
#respectively.

#OpenMP settings:
export OMP_NUM_THREADS=$ntile
export OMP_PLACES=threads
Expand All @@ -59,7 +71,11 @@ if [[ $use_gpu -eq 0 ]]; then
srun -n $n -c $c --cpu-bind=cores /global/common/software/m4232/pm/v4.5.2/wrf.exe
else
(( c = (64 / (n / SLURM_JOB_NUM_NODES)) * 2 ))
srun -n $n -c $c --cpu-bind=cores --gpus-per-task=1 -gpu-bind=none /global/common/software/m4232/pm/v4.5.2/wrf.exe
srun -n $n -c $c --cpu-bind=cores --gpus-per-task=1 --gpu-bind=none /global/common/software/m4232/pm/v4.5.2/wrf.exe
# Profile with Nsight Compute:
# srun --ntasks-per-node=1 dcgmi profile --pause
# srun -n $n -c $c --cpu_bind=cores --gpus-per-task=1 --gpu-bind=none ./wrapper-ncu.sh /global/common/software/m4232/pm/v4.5.2/wrf.exe
# srun --ntasks-per-node=1 dcgmi profile --resume
fi

#capture error code
Expand Down
8 changes: 8 additions & 0 deletions testcases/conus_12-km/updown.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash
# Process upload and download data transfers collected with NVCOMPILER_ACC_NOTIFY
set -e

f=$1 # file name where the data is
awk '/^.*load/ {f=$5; gsub(/.*=/,"",f); l=$6; gsub(/.*=/,"",l);
v=$9; gsub(/.*=/,"",v); b=$10; gsub(/.*=/,"",b);
printf("%-8s %-13s %s %-34s %s\n", $1, f, l, v, b)}' $f | sort | uniq -c
8 changes: 8 additions & 0 deletions testcases/conus_12-km/wrapper-ncu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash
output=report.%q{SLURM_PROCID}.%q{SLURM_JOBID}

if [[ ${SLURM_PROCID} == "0" ]] ; then
ncu --target-processes all --kernel-id :::1 -o ${output} "$@"
else
"$@"
fi