Skip to content

Update Derecho intel and inteloneapi port. Add mpif08 unit test.#1107

Merged
apcraig merged 2 commits into
CICE-Consortium:mainfrom
apcraig:derupd
May 1, 2026
Merged

Update Derecho intel and inteloneapi port. Add mpif08 unit test.#1107
apcraig merged 2 commits into
CICE-Consortium:mainfrom
apcraig:derupd

Conversation

@apcraig

@apcraig apcraig commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

PR checklist

  • Short (1 sentence) summary of your PR:
    Update Derecho intel and inteloneapi port. Add mpif08 unit test.
  • Developer(s):
    apcraig
  • Suggest PR reviewers from list in the column to the right.
  • Please copy the PR test results link or provide a summary of testing completed below.
    Ran a partial test suite on derecho with 6 compilers. Everything passed. derecho inteloneapi changes answers. https://github.com/CICE-Consortium/Test-Results/wiki/cice_by_hash_forks#043120305a888970f93bbf9e7f731d62164f0881
  • How much do the PR code changes differ from the unmodified code?
    • bit for bit, except derecho inteloneapi due to compiler upgrade
    • different at roundoff level
    • more substantial
  • Does this PR create or have dependencies on Icepack or any other models?
    • Yes
    • No
  • Does this PR update the Icepack submodule? If so, the Icepack submodule must point to a hash on Icepack's main branch.
    • Yes
    • No
  • Does this PR add any new test cases?
    • Yes
    • No
  • Is the documentation being updated? ("Documentation" includes information on the wiki or in the .rst files from doc/source/, which are used to create the online technical docs at https://readthedocs.org/projects/cice-consortium-cice/. A test build of the technical docs will be performed as part of the PR testing.)
    • Yes
    • No, does the documentation need to be updated at a later time?
      • Yes
      • No
  • Please document the changes in detail, including why the changes are made. This will become part of the PR commit log.

Update Derecho intel and inteloneapi port. Add mpif08 unit test.

Update the inteloneapi compiler version on derecho to 2025.2.1. This is not bit-for-bit for derecho inteloneapi because of the compiler upgrade.

Update the intel and inteloneapi compiler debug options on derecho to better trap and warn. These changes are based on the UFS compiler settings and to help meet UFS requirements. The new settings are

FFLAGS += -O0 -check all -check noarg_temp_created -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays -link_mpi=dbg

Modify history restart capability, do not write the time bounds with the history restarts as the variable time_end is not defined. This was trapped by the new debug compiler flags and then fixed. Modified netcdf and pio io options.

Add mpif08 unit test to check availability of the mpi_f08 module as we consider an update from "use mpi" to "use mpi_f08" in CICE.

Update the inteloneapi compiler version on derecho to 2025.2.1.

Update the intel and inteloneapi compiler debug options on derecho to better trap
and warn.  These changes are based on the UFS compiler settings and to help meet
UFS requirements.  The new settings are

  FFLAGS     += -O0 -check all -check noarg_temp_created -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays -link_mpi=dbg

Modify history restart capability, do not write the time bounds with the
history restarts as the variable time_end is not defined.  This was trapped by
the new debug compiler flags and then fixed.  Modified netcdf and pio io options.

Add mpif08 unit test to check availability of the mpi_f08 module as we
consider an update from "use mpi" to "use mpi_f08" in CICE.
@@ -13,7 +13,9 @@ FFLAGS_NOOPT:= -O0

ifeq ($(ICE_BLDDEBUG), true)
# -check uninit is needed on the ld step but it still throws errors in 2023.* and 2024.0.*, likely compiler bug

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re this note

I doesn't look like intel will change this -check uninit behaviour

See https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2025-1/check.html:

-check all now behaves as -check all -check nouninit. Setting -check uninit and linking with libraries not built with this option, such as Intel® oneAPI Math Kernel Library (oneMKL) or Intel® MPI Library, causes runtime failures. -check uninit is no longer set by -check all.

Which basically makes -check uninit unusable for us, as it's very hard to build all the dependencies with -check uninit (unless you rebuild the compiler) and then the resulting executable needs to be run with the LLVM Memory Sanitizer path variable set as well

@apcraig apcraig merged commit 673af7d into CICE-Consortium:main May 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants