Test failures with ICPX compiler in double-precision build
Summary
$ cmake ../.. -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGMX_GPU=OFF -DGMX_DOUBLE=ON && make && make tests && make check
...
The following tests FAILED:
16 - MdlibUnitTest (Failed)
27 - FFTUnitTests (Failed)
38 - RandomUnitTests (Failed)
40 - TableUnitTests (Failed)
66 - MdrunNonIntegratorTests (Failed)
FFTUnitTests are tracked separately in #4691 (closed).
Exact steps to reproduce
Build in Release mode with double-precision using ICPX 2023.0.0 compiler, and run unit-tests.
-
MdlibUnitTest
: several tests fail with difference < 10 ULP; tolerance is 5 ULP. Bumping tolerances in !3432 (merged). -
RandomUnitTests
: variance inTabulatedNormalDistributionTableTest.HasValidProperties
is off by 29 ULP; tolerance is 10 ULP. Bumping tolerances in !3433 (merged). -
TableUnitTests
: inSplineTableTest/0.NumericalInputPmeCorr
for quadratic spline table, the tabulated value at x = 0 is 0, reference is 1.128. Cannot reproduce anymore. -
MdrunNonIntegratorTests
:NormalModesWorks/NormalModesTest.WithinTolerances/0
dies, "Intel MKL ERROR: Parameter 18 was incorrect on entry to DSYEVR.": Further discussion in #4706 (closed)
Full log: icpx-double.log
For developers: Why is this important?
While some errors look like tolerance issues, some might indicate unsafe use of FP arithmetic in GROMACS.