-
Notifications
You must be signed in to change notification settings - Fork 169
CCPP acceptance: GFDL MP with 64bit dynamics bit-for-bit #206
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
Changes from all commits
ba5bb46
41b6a53
5d4f306
23b8c14
ddd48c8
944f17e
ee258bd
4b329dc
c33cdf4
06d091e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -623,14 +623,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & | |
| real, dimension (ktop:kbot) :: qv0, ql0, qr0, qi0, qs0, qg0, qa0 | ||
| real, dimension (ktop:kbot) :: t0, den, den0, tz, p1, denfac | ||
| real, dimension (ktop:kbot) :: ccn, c_praut, m1_rain, m1_sol, m1 | ||
| #if 0 | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm curious why u1 and v1 no longer need to be declared as volatile -- is it because you reduced optimization on the entire file?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's right, reducing the optimization made this (and several other !DIR$ NOOPTIMIZE) unnecessary. Probably same performance hit by lowering xCORE-AVX2 to xCORE-AVX-I for the entire file as by using !DIR$ NOOPTIMIZE on selected routines. However, the !DIR$ NOOPTIMIZE worked for Intel 18 but didn't work for Intel 15. |
||
| !ifdef TRANSITION | ||
| ! For bit-for-bit reproducibility | ||
| real, dimension (ktop:kbot) :: u0, v0, w1 | ||
| real, dimension (ktop:kbot), volatile :: u1, v1 | ||
| #else | ||
| real, dimension (ktop:kbot) :: u0, v0, u1, v1, w1 | ||
| #endif | ||
|
|
||
| real :: cpaut, rh_adj, rh_rain | ||
| real :: r1, s1, i1, g1, rdt, ccn0 | ||
|
|
@@ -1393,10 +1386,7 @@ end subroutine revap_racc | |
| ! ----------------------------------------------------------------------- | ||
|
|
||
| subroutine linear_prof (km, q, dm, z_var, h_var) | ||
| #if 0 | ||
| !ifdef TRANSITION | ||
| !DIR$ NOOPTIMIZE | ||
| #endif | ||
|
|
||
| implicit none | ||
|
|
||
| integer, intent (in) :: km | ||
|
|
@@ -1955,10 +1945,7 @@ end subroutine icloud | |
|
|
||
| subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, rh_adj, tz, qv, & | ||
| ql, qr, qi, qs, qg, qa, h_var, rh_rain) | ||
| #if 0 | ||
| !ifdef TRANSITION | ||
| !DIR$ NOOPTIMIZE | ||
| #endif | ||
|
|
||
| implicit none | ||
|
|
||
| integer, intent (in) :: ktop, kbot | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is like magic to me that you are able to narrow this down. Hopefully I can learn how you do this some day!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks ... that took a few hours, line-by-line print statements ...