Skip to content

CI Intel compile tests failing at pnetCDF build stage #268

Description

@clark-evans

The CI Intel compile tests (make and cmake) are currently failing at the pnetCDF build stage. The error causing the failure is as follows:

/opt/intel/oneapi/compiler/2023.2.1/linux/bin/intel64/icc -DMPICC="\"/opt/intel/oneapi/mpi/2021.10.0/bin/mpicc\"" -DCFLAGS="\"-g -O2\"" -DCONFIGURE_ARGS_CLEAN="\"--prefix=/home/runner/PnetCDF --with-mpi=/opt/intel/oneapi/mpi/2021.10.0\"" -DPNETCDF_VERSION="\"1.15.0\"" -DMPI_VERSION="\"3.1\"" -DMPI_VENDOR="\"MPICH\"" -DMPI_VENDOR_VERSION="\"3.4a2\"" -DMPICC_BASE="\"/opt/intel/oneapi/compiler/2023.2.1/linux/bin/intel64/icc\"" -DMPICC_BASE_VERSION="\"icc: remark -o pnetcdf_version pnetcdf_version.c

/bin/bash: -c: line 1: unexpected EOF while looking for matching "'`

This program is built by the pnetCDF src/utils/pnetcdf_version/ Makefile.am, which was changed with the pnetCDF v1.5.0 release to include more LMOD environment settings and vendor information when the pnetcdf_version program is run. It also changed the indentation of some of the directives contained within the Makefile.

I think what's happening is the -DMPICC_BASE_VERSION text being populated by the Makefile.am directives is not what it is expecting; it starts a lot like the icc deprecation message that litters our compile logs:

icc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.

Thus, I don't think there's anything wrong with the upstream pnetCDF release - that directive is just not expecting the warning message coming from the older, pre-oneAPI icc compiler we are using. Thus, I see a few options, for which I'm not making any specific value judgements:

  • Revert to pnetCDF v1.14.1 in our CI compile tests. Not ideal now and probably not doable as we get closer to operations because we'll always be testing with an older library version.
  • Update our CI Intel compile test directives for pnetCDF to pass the -diag-disable=10441 flag throughout the compilation stage. Not sure how easily this is done, and probably not ideal either way.
  • Update our CI Intel compile tests to use icx rather than icc, either through the icx available with our current version of the Intel compilers or through upgrading to a oneAPI version of the Intel compilers. I'm guessing the latter is preferable, but we previously ran into issues when the intel-ci-toolkit that we've used for the CI tests updated to a oneAPI version of the Intel compilers.

Tagging @dustinswales for awareness and further discussion. This is an example of where we'd really benefit from a dedicated code manager or management team - not us moonlighting in the role - to rectify issues such as this...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions