When building GSL with Visual Studio 2015 or 2017 on my Skylake system
the ode2 test fails with the result:

FAIL: bsimp/rk4imp robertson [1] (4.80016693154134428e-07 observed vs
4.8006653093199183e-07 expected) [1119]

This is odd since the ode2 code hasn't changed in years and it has
always worked with previous versions of Visual Studio.

In order to try and find the problem, I have been comparing the results
produced using Visual Studio 2012 on my Nehalem system with those on
Skylake with Visual Studio 2017.

But this is proving very difficult because the floating point results
don't compare exactly and just drift slowly apart as the number of steps
in the solver increase.  This seemed to suggest that the issue is the
result of differences in the floating point code being generated by the
earlier and later Microsoft compilers.

Or, that is what I thought after a lot of fruitless effort in trying and
failing to find the bug.

But yesterday I just happened to run the failing Skylake binary on my
Nehalem system and was very surprised to find that it passed the ode2
test!

So a Visual Studio 2017 built ode2 test binary (linked to a GSL static
library and static MSVC runtime libraries) produces different results
when run on Nehalem and Skylake processors.

Maybe I am being naive but I wasn't expecting this.  Can anyone here
suggest what might be going on here?

   best regards,

     Brian


Reply via email to