Skip to content

KLUGE: RRTMG FAST + GNU > 6.3.0 is an internal compiler error (attempt #2)#517

Merged
davegill merged 4 commits intowrf-model:masterfrom
davegill:zap_rrtmg_fast_2
May 14, 2018
Merged

KLUGE: RRTMG FAST + GNU > 6.3.0 is an internal compiler error (attempt #2)#517
davegill merged 4 commits intowrf-model:masterfrom
davegill:zap_rrtmg_fast_2

Conversation

@davegill
Copy link
Contributor

@davegill davegill commented May 14, 2018

TYPE: bug fix

KEYWORDS: RRTMG FAST, GNU

SOURCE: internal

DESCRIPTION OF CHANGES:
With GNU version 6.4.0, 6.5.0, 7.1.0, 7.2.0, and 7.3.0, the WRF RRTMG FAST LW scheme causes an internal compiler error for some optimization levels. The RRTMG code looks reasonable, so there does not seem an obvious code fix to implement in the RRTMG FAST LW scheme.

module_ra_rrtmg_swf.f90:5612:0:

       use rrsw_kg21_f, only : kao, kbo, selfrefo, forrefo, sfluxrefo, &

internal compiler error: in gfc_trans_use_stmts, at fortran/trans-decl.c:4920

module_ra_rrtmg_swf.f90:5612:0: internal compiler error: Abort trap: 6
gfortran: internal compiler error: Abort trap: 6 (program f951)

The solution is to BE EASILY ABLE TO remove the RRTMG FAST code via an ifdef.

LIST OF MODIFIED FILES:
M phys/module_physics_init.F
M phys/module_ra_rrtmg_lwf.F
M phys/module_ra_rrtmg_swf.F
M phys/module_radiation_driver.F
M share/module_check_a_mundo.F
M arch/postamble

TESTS CONDUCTED:

  • Code builds with GNU/7.2.0 with -D optimization with mods (i.e. NO RRTMG FAST)
  • Code does not build with newer GNU with -D optimziation without mods

davegill added 4 commits May 14, 2018 10:15
TYPE: bug fix

KEYWORDS: RRTMG FAST, GNU

SOURCE: internal

DESCRIPTION OF CHANGES:
With GNU version 6.40, 6.5.0, 7.1.0, 7.2.0, and 7.3.0, the WRF RRTMG FAST LW scheme causes an internal compiler error for some optimization levels. The RRTMG code looks reasonable.

module_ra_rrtmg_swf.f90:5612:0:

       use rrsw_kg21_f, only : kao, kbo, selfrefo, forrefo, sfluxrefo, &

internal compiler error: in gfc_trans_use_stmts, at fortran/trans-decl.c:4920

module_ra_rrtmg_swf.f90:5612:0: internal compiler error: Abort trap: 6
gfortran: internal compiler error: Abort trap: 6 (program f951)

The solution is to remove the RRTMG code via an ifdef.

LIST OF MODIFIED FILES:
M	   phys/module_physics_init.F
M	   phys/module_ra_rrtmg_lwf.F
M	   phys/module_ra_rrtmg_swf.F
M	   phys/module_radiation_driver.F

TESTS CONDUCTED:
 - [x] Code builds with GNU/7.2.0 with -D optimization with mods (i.e. NO RRTMG FAST)
 - [x] Code does not build with newer GNU with -D optimziation without mods
Copy link
Collaborator

@kkeene44 kkeene44 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

@davegill davegill merged commit 17b5ac4 into wrf-model:master May 14, 2018
@davegill davegill deleted the zap_rrtmg_fast_2 branch May 14, 2018 17:13
davegill added a commit to davegill/WRF that referenced this pull request Feb 10, 2020
TYPE: enhancement

KEYWORDS: GNU, RRTMK

SOURCE: internal

DESCRIPTION OF CHANGES:

Problem:
The GNU compiler versions from 6.* through 8.* issue an internal compiler error on
various RRTMG-based schemes.

Solution:
A modification was introduced in the WRF build to allow the RRTMG-fast version
to skip being built (commit 17b5ac4 with PR wrf-model#517 "KLUGE: RRTMG FAST +
GNU > 6.3.0 is an internal compiler error"). This same strategy is now used for
the RRTMK scheme.

On a good note ... it looks like GNU verion 9.1.* and later fixes this trouble.

LIST OF MODIFIED FILES:
modified:   arch/postamble
modified:   phys/module_physics_init.F
modified:   phys/module_ra_rrtmg_lwk.F
modified:   phys/module_ra_rrtmg_swk.F
modified:   phys/module_radiation_driver.F
modified:   share/module_check_a_mundo.F

TESTS CONDUCTED:
 - [ ] Waiting to see if this fixes Ming's problem
davegill added a commit that referenced this pull request Feb 11, 2020
TYPE: enhancement

KEYWORDS: GNU, RRTMK

SOURCE: internal

DESCRIPTION OF CHANGES:

Problem:
The GNU compiler versions from 6.* through 8.* issue an internal compiler error on
various RRTMG-based schemes.

Solution:
A modification was introduced in the WRF build to allow the RRTMG-fast version
to skip being built (commit 17b5ac4 with PR #517 "KLUGE: RRTMG FAST +
GNU > 6.3.0 is an internal compiler error"). This same strategy is now used for
the RRTMK scheme.

On a good note ... it looks like GNU verion 9.1.* and later fixes this trouble.

LIST OF MODIFIED FILES:
modified:   arch/postamble
modified:   phys/module_physics_init.F
modified:   phys/module_ra_rrtmg_lwk.F
modified:   phys/module_ra_rrtmg_swk.F
modified:   phys/module_radiation_driver.F
modified:   share/module_check_a_mundo.F

TESTS CONDUCTED:
1. Code is bit-for-bit when not using the RRTMGK scheme with compiling using the default
settings vs when ifdef'ing out the RRTMGK schemes.
2. When no RRTMGK scheme is built, but the scheme is requested, the code successfully traps
the error condition.
```
 &physics
 physics_suite                       = 'CONUS'
 ra_lw_physics                       = 14,    -1,    -1,
 ra_sw_physics                       = 14,    -1,    -1,
```
```
--- ERROR: RRTMG-based KIAPS schemes must be built with a default compile-time flag
--- ERROR: Run ./clean -a, ./configure, ./compile scripts again
-------------- FATAL CALLED ---------------
```
davegill added a commit to davegill/WRF that referenced this pull request Feb 12, 2020
TYPE: enhancement

KEYWORDS: RRTMG, FAST, KIAPS, postamble, cpp

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The WRF code with the GNU compilers (from 6.3.* inclusive to anything before 9.1.0) will
sometimes fail to compile. The error is listed as an "internal compiler error".
The two RRTMG schemes (FAST and KIAPS) are the standard causes for GNU failing to compile
the WRF code successfully.

Solution:
The following two mods were previously made to the WRF source code:
1. commit 17b5ac4, PR wrf-model#517 "KLUGE: RRTMG FAST + GNU > 6.3.0 is an internal compiler error"
2. commit a83c7cb, PR wrf-model#1084 "KLUGE - Option to avoid building RRTMK due to GNU problem"

This new PR just resests the default settings from "always build these schemes" to "never
build these schemes".

LIST OF MODIFIED FILES:
modified:   arch/postamble

TESTS CONDUCTED:
1. The logic to disable the RRTMG FAST scheme has been in place for more than 18 months.
2. Actually disabling the build of RRTMG FAST has been tested hundreds of times with
the combination of the automated Jenkins regression test and the NCAR-only classroom
tests.
3. The KIAPS infrastructure has been tested with both the automated Jenkins test and
the NCAR classroom regression tests.

RELEASE NOTE: The default setting for the WRF model is to NOT compile either of the two derivative RRTMG schemes: FAST or KIAPS. These codes break the GNU compiler (v6.3.0 through v8.*). To re-enable the schemes, modify the `configure.wrf`file after running the `./configure` command. Replace the "zero" values with "ones" in the lines `-DBUILD_RRTMG_FAST=0` or -DBUILD_RRTMK=0`. This is a compile-time modification.
davegill added a commit that referenced this pull request Feb 12, 2020
TYPE: enhancement

KEYWORDS: RRTMG, FAST, KIAPS, postamble, cpp

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The WRF code with the GNU compilers (from 6.3.* inclusive to anything before 9.1.0) will
sometimes fail to compile. The error is listed as an "internal compiler error". The two RRTMG 
schemes (FAST and KIAPS) are the standard causes for GNU failing to compile the WRF 
code successfully.

Solution:
The following two mods were previously made to the WRF source code:
1. commit 17b5ac4, PR #517 "KLUGE: RRTMG FAST + GNU > 6.3.0 is an internal compiler error"
2. commit a83c7cb, PR #1084 "KLUGE - Option to avoid building RRTMK due to GNU problem"

This new PR just resests the default settings from "always build these schemes" to "never
build these schemes".

LIST OF MODIFIED FILES:
modified:   arch/postamble

TESTS CONDUCTED:
1. The logic to disable the RRTMG FAST scheme has been in place for more than 18 months.
2. Actually disabling the build of RRTMG FAST has been tested hundreds of times with
the combination of the automated Jenkins regression test and the NCAR-only classroom
tests.
3. The KIAPS infrastructure has been tested with both the automated Jenkins test and
the NCAR classroom regression tests.

RELEASE NOTE: The default setting for the WRF model is to NOT compile either of the two derivative RRTMG schemes: FAST or KIAPS. These codes break the GNU compiler (v6.3.0 through v8.*). To re-enable the schemes, modify the `configure.wrf` file after running the `./configure` command. Replace the "zero" values with "ones" in the lines `-DBUILD_RRTMG_FAST=0` or `-DBUILD_RRTMK=0`. This is a compile-time modification.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants