Conversation
hkershaw-brown
left a comment
There was a problem hiding this comment.
This looks good but you have the debugging flags as the default FFLAGS
|
This is just a note on the cce compiler, cce backtrace does not get the path correct, Not sure if this is just /glade/ tripping it up |
Probably not, there are a lot of places in dart where numbers get too small to be represented so become 0 ( or denormal number), which is ok. It is a good question though because (particularly in the qceff I think) there are calculations where we probably should understand a lot more about what the compiler is doing qceff issues. There some f08 ieee features that might be helpful looking at these routines and when you should trap vs undeflow, vs denormal, vs -+0, or whatever, but I'd do this in isolation (test code) rather than in runs of filter. |
I'm seeing something slightly different on my end, but still wrong |
Description:
Adds debugging flags to the mkmf.template.cce
Includes the following flags:
-g
When specified the debug level is determined by the optimization level. If specified with no optimization level -O, the default is optimized debugging.
-O0
Disables all optimizations including floating point optimizations
Note that by selecting this optimization level, it automatically specifies the -hfp0 flag, which:
Controls the level of floating point optimizations, where n is a value between 0 and 4, with 0 giving the compiler minimum freedom to optimize floating point operations and 4 giving it maximum freedom. The higher the level, the less the floating point values conform to the IEEE standard.
-m2
Specifies the minimum compiler message levels to enable.
The -m messages levels are as follows:
0: Error, Warning, Caution, Note, and Comment
1: Error, Warning, Caution, and Note
2: Error, Warning, and Caution
3: Error and Warning (default)
4: Error
-rl
Lists source code and includes lint style checking. The listing includes the COMMON block report (see the -rc option for more information about the COMMON block report).
-Rbcdsp
Specifies any of a group of runtime checks for your program.
b: Enables checking of array bounds. Bounds checking is not performed on arrays dimensioned as (1).
c: Enables conformance checking of array operands in array expressions.
d: Enables a run time check for the !dir$ collapse directive and checks the validity of the loop_info count information.
p: Generates run time code to check the association or allocation status of referenced POINTER variables, ALLOCATABLE arrays, or assumed-shape arrays.
s: Enables checking of character substring bounds.
-Ktrap=inv,divz,ovf,unf
Enable traps for the specified exceptions.
Here, I’ve selected to use the following options:
inv: Trap on invalid operation.
divz: Trap on divide-by-zero.
ovf: Trap on overflow (i.e. the result of an operation is too large to be represented).
unf: Trap on underflow (i.e. the result of an operation is too small to be represented). I noticed that the unf option was not used in the gfortran mkmf.template - should it stay in here?
-hbounds
Enables checking of array bounds.
Fixes issue
fixes #1059
Types of changes
Documentation changes needed?
Tests
Built lorenz_96 and ran filter, with the full set of debugging flags listed
Checklist for merging
Checklist for release
Testing Datasets