Arm Forge

Overview

Arm Forge is a suite of HPC development tools. It includes Arm DDT, a graphical debugger that can be run from one to thousands of threads.

Recompiling

In order for DDT to work optimally, CESM should be recompiled using two different compiler flags, -g which produces debugging information in the operating system’s native object format and -O0 which compiles without optimizations.

Recompiling on Shaheen

Recompiling with the -g and -O0 flags requires editing /lustre/project/k1421/cesm2_1_3/cime/config/cesm/machines/config_compilers.xml.

Editing:

<FFLAGS>
   <append> -xCORE-AVX2 </append>
   <append DEBUG="FALSE"> -O2  </append>
</FFLAGS>

to append this pair of flags when DEBUG="TRUE":

<FFLAGS>
   <append> -xCORE-AVX2 </append>
   <append DEBUG="FALSE"> -O2  </append>
   <append DEBUG="TRUE"> -O0 -g </append>
</FFLAGS>

Recompiling requires logging onto cdl5 and turning on debugging before building:

$ ssh cdl5
$ cd /lustre/project/k1421/cesm2_1_3/cime/scripts
$ source activate py27
$ ./create_newcase --case /lustre/project/k1421/cases/FHIST.f09_f09_mg17.e002.n0003 --compset FHIST --res f09_f09_mg17 --machine shaheen --project k1421 --run-unsupported --ninst 3 --multi-driver --walltime 2:00:00
[ ... ]
Creating Case directory /lustre/project/k1421/cases/FHIST.f09_f09_mg17.e002.n0003
$ cd /lustre/project/k1421/cases/FHIST.f09_f09_mg17.e002.n0003
$ ./xmlchange DEBUG=TRUE
$ ./xmlquery DEBUG
  DEBUG: TRUE
$ ./case.setup
$ ./case.build