Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/cesm/machines/config_compilers.xml
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ using a fortran linker.
<FFLAGS>
<!-- -ffree-line-length-none and -ffixed-line-length-none need to be in FFLAGS rather than in FIXEDFLAGS/FREEFLAGS
so that these are passed to cmake builds (cmake builds don't use FIXEDFLAGS and FREEFLAGS). -->
<base> -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none </base>
<base> -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none -fallow-argument-mismatch -fallow-invalid-boz </base>
Copy link
Member

Choose a reason for hiding this comment

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

Thanks for adding these flags. But, since they are workarounds for issues that will hopefully be resolved, I think it would be helpful to add a comment stating that – i.e., something like:

-fallow-argument-mismatch is needed for building with the mpich library with gfortran10; -fallow-invalid-boz is needed for some components that have non-standard uses of BOZ literal constants with gfortran10. See https://github.com/ESMCI/cime/issues/3846 for details.

However, I'm also wondering if these flags work with older versions of gfortran, or if they require gfortran10+.

<append compile_threaded="TRUE"> -fopenmp </append>
<!-- Ideally, we would also have 'invalid' in the ffpe-trap list. But at
least with some versions of gfortran (confirmed with 5.4.0, 6.3.0 and
Expand Down
80 changes: 40 additions & 40 deletions config/cesm/machines/config_machines.xml
Original file line number Diff line number Diff line change
Expand Up @@ -559,76 +559,76 @@ This allows using a different mpirun command to launch unit tests
<command name="load">mkl</command>
</modules>
<modules compiler="gnu">
<command name="load">gnu/9.1.0</command>
<command name="load">openblas/0.3.6</command>
<command name="load">gnu/10.1.0</command>
Copy link
Member

@billsacks billsacks Jun 3, 2021

Choose a reason for hiding this comment

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

Have you confirmed that this doesn't change answers for any of our CESM testing? It would be good to know that before merging (updating the top-level PR comment and thus the merge message, if needed).

Copy link
Member

Choose a reason for hiding this comment

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

In the past, I think we've said we should do at least prealpha testing when doing a major compiler version update like this. @fischer-ncar , if you or @jedwards4b hasn't already done so, would you be able to run the cheyenne_gnu prealpha tests with baseline comparisons? (And prebeta cheyenne_gnu if you feel it's warranted; I notice that prealpha cheyenne_gnu has very little coverage.)

Copy link
Contributor

Choose a reason for hiding this comment

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

@billsacks I've start prealpha and prebeta tests for cheyenne_gnu.

Copy link
Contributor

Choose a reason for hiding this comment

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

Testing is finished. gnu/10.1.0 is bfb with gnu/9.1.0.

Copy link
Member

Choose a reason for hiding this comment

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

Awesome, thanks!

Copy link
Contributor

Choose a reason for hiding this comment

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

Just FYI, we did find a case where answers changed because of this update. See ESCOMP/CTSM#1464

I want to highlight it just to reinforce that our paranoia over compiler updates is often justified. :-) It did take us a bit to track it down to this change. It's also helpful that the compiler change was in one PR and not mixed with anything else, so thanks for that.

<command name="load">openblas/0.3.9</command>
</modules>
<modules compiler="pgi">
<command name="load">pgi/20.4</command>
</modules>
<modules compiler="intel" mpilib="!mpi-serial" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/intel/19.1.1/</command>
<command name="load">esmf-8.1.1-ncdfio-mpt-g</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpt-g</command>
</modules>
<modules compiler="intel" mpilib="!mpi-serial" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/intel/19.1.1/</command>
<command name="load">esmf-8.1.1-ncdfio-mpt-O</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpt-O</command>
</modules>
<modules compiler="intel" mpilib="mpi-serial" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/intel/19.1.1/</command>
<command name="load">esmf-8.1.1-ncdfio-mpiuni-g</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpiuni-g</command>
</modules>
<modules compiler="intel" mpilib="mpi-serial" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/intel/19.1.1/</command>
<command name="load">esmf-8.1.1-ncdfio-mpiuni-O</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpiuni-O</command>
</modules>
<modules compiler="gnu" mpilib="mpt" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/9.1.0/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpt-g</command>
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/10.1.0/</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpt-g</command>
</modules>
<modules compiler="gnu" mpilib="mpt" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/9.1.0/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpt-O</command>
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/10.1.0/</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpt-O</command>
</modules>
<modules compiler="gnu" mpilib="openmpi" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/9.1.0/</command>
<command name="load">esmf-8.1.0b41-ncdfio-openmpi-g</command>
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/10.1.0/</command>
<command name="load">esmf-8.2.0b10-ncdfio-openmpi-g</command>
</modules>
<modules compiler="gnu" mpilib="openmpi" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/9.1.0/</command>
<command name="load">esmf-8.1.0b41-ncdfio-openmpi-O</command>
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/10.1.0/</command>
<command name="load">esmf-8.2.0b10-ncdfio-openmpi-O</command>
</modules>
<modules compiler="gnu" mpilib="mpi-serial" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/9.1.0/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpiuni-g</command>
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/10.1.0/</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpiuni-g</command>
</modules>
<modules compiler="gnu" mpilib="mpi-serial" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/9.1.0/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpiuni-O</command>
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/gnu/10.1.0/</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpiuni-O</command>
</modules>

<modules compiler="pgi" mpilib="mpt" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/pgi/20.4/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpt-g</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpt-g</command>
</modules>
<modules compiler="pgi" mpilib="mpt" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/pgi/20.4/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpt-O</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpt-O</command>
</modules>
<modules compiler="pgi" mpilib="openmpi" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/pgi/20.4/</command>
<command name="load">esmf-8.1.0b41-ncdfio-openmpi-g</command>
<command name="load">esmf-8.2.0b10-ncdfio-openmpi-g</command>
</modules>
<modules compiler="pgi" mpilib="openmpi" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/pgi/20.4/</command>
<command name="load">esmf-8.1.0b41-ncdfio-openmpi-O</command>
<command name="load">esmf-8.2.0b10-ncdfio-openmpi-O</command>
</modules>
<modules compiler="pgi" mpilib="mpi-serial" DEBUG="TRUE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/pgi/20.4/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpiuni-g</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpiuni-g</command>
</modules>
<modules compiler="pgi" mpilib="mpi-serial" DEBUG="FALSE">
<command name="use">/glade/p/cesmdata/cseg/PROGS/modulefiles/esmfpkgs/pgi/20.4/</command>
<command name="load">esmf-8.1.0b41-ncdfio-mpiuni-O</command>
<command name="load">esmf-8.2.0b10-ncdfio-mpiuni-O</command>
</modules>
<modules mpilib="mpt" compiler="gnu">
<command name="load">mpt/2.21</command>
Expand All @@ -637,7 +637,7 @@ This allows using a different mpirun command to launch unit tests
</modules>
<modules mpilib="mpt" compiler="intel">
<command name="load">mpt/2.22</command>
<command name="load">netcdf-mpi/4.7.4</command>
<command name="load">netcdf-mpi/4.8.0</command>
<command name="load">pnetcdf/1.12.2</command>
</modules>
<modules mpilib="mpt" compiler="pgi">
Expand Down Expand Up @@ -3052,35 +3052,35 @@ This allows using a different mpirun command to launch unit tests
<cmd_path lang="sh">module</cmd_path>
<cmd_path lang="csh">module</cmd_path>
<modules>
<command name="purge"/>
<command name="purge"/>
</modules>
<modules compiler="intel">
<command name="load">intel20.1/20.1.217</command>
<command name="load">intel20.1/szip/2.1.1</command>
<command name="load">cmake/3.17.3</command>
<command name="load">curl/7.70.0</command>
<command name="load">intel20.1/20.1.217</command>
<command name="load">intel20.1/szip/2.1.1</command>
<command name="load">cmake/3.17.3</command>
<command name="load">curl/7.70.0</command>
</modules>
<modules mpilib="mpi-serial">
<command name="load">intel20.1/hdf5/1.12.0</command>
<command name="load">intel20.1/netcdf/C_4.7.4-F_4.5.3_CXX_4.3.1</command>
<command name="load">intel20.1/hdf5/1.12.0</command>
<command name="load">intel20.1/netcdf/C_4.7.4-F_4.5.3_CXX_4.3.1</command>
</modules>
<modules mpilib="!mpi-serial">
<command name="load">impi20.1/19.7.217</command>
<command name="load">impi20.1/hdf5/1.12.0</command>
<command name="load">impi20.1/netcdf/C_4.7.4-F_4.5.3_CXX_4.3.1</command>
<command name="load">impi20.1/parallel-netcdf/1.12.1</command>
<command name="load">impi20.1/19.7.217</command>
<command name="load">impi20.1/hdf5/1.12.0</command>
<command name="load">impi20.1/netcdf/C_4.7.4-F_4.5.3_CXX_4.3.1</command>
<command name="load">impi20.1/parallel-netcdf/1.12.1</command>
</modules>
<modules compiler="intel" mpilib="!mpi-serial" DEBUG="TRUE">
<command name="load">impi20.1/esmf/8.0.1-intelmpi-64-g</command>
<command name="load">impi20.1/esmf/8.0.1-intelmpi-64-g</command>
</modules>
<modules compiler="intel" mpilib="!mpi-serial" DEBUG="FALSE">
<command name="load">impi20.1/esmf/8.0.1-intelmpi-64-O</command>
<command name="load">impi20.1/esmf/8.0.1-intelmpi-64-O</command>
</modules>
<modules compiler="intel" mpilib="mpi-serial" DEBUG="TRUE">
<command name="load">intel20.1/esmf/8.0.1-mpiuni-64-g</command>
<command name="load">intel20.1/esmf/8.0.1-mpiuni-64-g</command>
</modules>
<modules compiler="intel" mpilib="mpi-serial" DEBUG="FALSE">
<command name="load">intel20.1/esmf/8.0.1-mpiuni-64-O</command>
<command name="load">intel20.1/esmf/8.0.1-mpiuni-64-O</command>
</modules>
</module_system>
<environment_variables>
Expand Down
6 changes: 5 additions & 1 deletion scripts/lib/CIME/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,11 @@ def xml_to_make_variable(case, varname, cmake=False):
return ""
if type(varvalue) == type(True):
varvalue = stringify_bool(varvalue)
return "{}{}=\"{}\" ".format("-D" if cmake else "", varname, varvalue)

if cmake or type(varvalue) == type(str):
return "{}{}=\"{}\" ".format("-D" if cmake else "", varname, varvalue)
else:
return "{}={} ".format(varname, varvalue)

###############################################################################
def uses_kokkos(case):
Expand Down