Recompiling software for Red Hat 8

General advice

The compiler versions will change when with the update from CentOS 7 to Red Hat 8 happening August 8-10.

If you compile your own software, verify that it runs with the new compilers. It is strongly recommended that you recompile, as the newer compilers may offer significant decrease in run times (increase in performance).

There are two main compilers in use: The GNU Compiler Collection and the Intel Compilers (now called OneAPI).

ARC does not know whether your existing codes will require recompiling. It is possible that serial and multithreaded codes will work without the recompiling. MPI (message passing interface) codes will likely need to be recompiled.

ARC recommends recompiling software with the new compilers. If you encounter issues recompiling, please contact us at arc-support@umich.edu during the preview period to get assistance.

Things to look for

You should check all module load commands to make sure that the versions of software loaded by modules are current.

If you used full paths to libraries in configuration and/or Makefiles, please check those as the installation paths will change on the Red Hat 8 cluster. Anything with centos7 in the path will need to be changed.

GCC changes

The ‘system compiler’ (the one that comes with Red Hat) was updated from GCC 4.8.5 to GCC 8.4.1. The version of GCC provided by Red Hat will be updated at least one more time, also.

In addition to the versions no longer being stable, Red Hat compiled GCC (Gnu compiler collection) with a security feature called “position independent executables (PIE)” enabled that causes errors when compiling many scientific codes by making the memory locations of dynamic libraries non-deterministic, which causes the linker to generate an error. ARC will not support code compiled with the Red Hat provided GCC.

On the CentOS 7 clusters, ARC provided GCC 8.2.0 via a module. On the new Red Hat 8 clusters, ARC now provides GCC 10.3.0, which is the recommended default version and compiler.

GCC 10 changed some default compiler flags that may cause compilation or link errors. ARC software installers encountered these issues while recompiling software ARC provides.

  • Type mismatch errors occur with gfortran: the -fallow-argument-mismatch or -std=legacy flags may need to be added.
  • Multiple declaration errors: the -fcommon flag can be used to turn these errors into warnings. With version 10 gcc made -fno-common the default setting. They recommend removing duplicate declarations.

Please see https://gcc.gnu.org/gcc-10/porting_to.html and other GCC 10 documentation for more information and details.

Intel compiler changes

The default version of the Intel compilers — icc, icpc, and ifort — was 18.0.5, though other versions were available. On the Red Hat 8 clusters, the Intel compilers have been updated to OneAPI 2022.1.2, and the icc, icpc, and ifort compilers are now referred to by Intel as the ‘Classic’ compilers.

ARC has not encountered any difficulties recompiling software with the Intel compilers.