IBM / AIX
IBM (xlf) issues with grib-api
When compiling grib-api on IBM architectures with the XLF compiler, we recommend disabling the creation of "shared libraries" and use static libraries only. This can cause runtime errors.
For more information, please see Installing grib-api.
Compilation of bindproc.c fails with XLF V12 compiler
This is caused by missing lines in the bindproc.c file for OpenIFS version 38r1. Please add the following code lines to bindproc.c:
#include <unistd.h> /* for _SC_NPROCESSORS_ONLN */ #include <sys/processor.h> /* for BINDTHREAD */
Please contact openifs-support@ecmwf.int for further assistance.
JIRA Issue: OIFSSUP-12 - Getting issue details... STATUS
Intel compiler
Use of MKL library can cause irreproducible results
OpenIFS includes a compilation configuration for the Intel compiler with the Intel MKL library (for optimized LAPACK/BLAS). However, please be aware use of this library can cause the model to be irreproducible, even on the same core count in successive runs. We recommend not using it if reproducibility is a concern.
OpenIFS also only provides a compilation configuration for the MKL and the Intel library. Linking MKL with other compilers is possible, though complicated and is not tried or tested with OpenIFS.
For help with linking the MKL library with other compilers, please see: https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
OpenIFS can fail with Intel compiler at -O2
There is an issue with OpenIFS when compiling with the Intel compiler at optimization level -O2 or above on chipsets that support SSE4.1 & AVX instructions. Intel compilers are generally more aggressive at optimisations for -O2 than other compilers.
Users will see failure with the T21 test job similar to the following:
It arises because this compiler makes use of 2-way vectorization when compiling both branches of IF statements which can generate floating point exceptions if a zero divide is possible in the unexecuted branch and the IFS internal signal handler (DRHOOK) is enabled.
There are several possible workarounds:
- Compile the routines that cause the problem with lower optimisation, -O1. The routines affected are:
sltend.F90, vsurf_mod.F90, vdfmain.F90, vdfhghtn.F90
. - Run with the environment variable: DR_HOOK_IGNORE_SIGNALS=8 to disable trapping of floating point exception signals (SIGFPE) by the model. This is not ideal as it will not catch other causes of floating point exceptions.
Edit the code and insert the line:
!DEC$ OPTIMIZE:1
directly after the SUBROUTINE statement into the routines:
sltend.F90, vsurf_mod.F90, vdfmain.F90, vdfhghtn.F90
.- Edit the intel-*.cfg configuration files in make/cfg and add lines to change the compile options specifically for these files.
OpenIFS uses a default of -O1 in the configuration files. If you increase the optimisation level, please be aware of this issue.
For more help with this issue, please contact openifs-support@ecmwf.int.
OpenIFS fails in PRESET_GRIB_TEMPLATE if grib_api compiled with Intel and -O2
We are aware of a problem in grib_api when using the Intel compiler that seems to affect different versions of grib_api and causes the model to fail with a floating point exception (SIGFPE) in the routine PRESET_GRIB_TEMPLATE. The advice is to reduce the optimization level when compiling grib_api to -O1 rather than -O2.
The error message that typifies this problem is:
GNU compilers
OpenIFS fails with gfortran version 5 compiler
OpenIFS is known to fail when using the gfortran/gcc version 5.2 compiler. The error is:
SUDIM1; after call to read(namgfl), nmfdiaglev = 0 Error in `../make/gnu-noopt/oifs/bin/master.exe': double free or corruption (out): 0x0000000009fafd90 ***
If this occurs we recommend using version 4.8.1 of the gnu compilers. There is currently no fix for this issue with OpenIFS based on the 38r1 release.
Cray
Cray ATP does not work
This is caused by the way IFS creates its own signal handler. To enable Cray ATP set:
export DR_HOOK_IGNORE_SIGNALS=-1
in the job script to completely disable any signal trapping by DrHook.
Contact openifs-support@ecmwf.int for assistance.
CrayPAT does not work
This is a result of the way in which the OpenIFS is compiled. More information on this and the resolution is described here.