The precise semantics of floating-point arithmetic programs depends on the
execution platform, including the compiler and the target hardware.
Platform dependencies are particularly pronounced for arithmetic-intensive
scientific numeric programs and infringe on the highly desirable goal of
software portability (which is in fact promised by heterogeneous computing
frameworks like OpenCL): the same program run on the same inputs on
different platforms can produce different results.
Serious doubts on the portability of numeric applications arise when these
differences are behavioral, i.e. when they lead to changes in the control
flow of a program. In this talk I will first present an algorithm that
takes a numeric procedure and determines whether a given input can lead to
different decisions depending merely on how the arithmetic in the procedure
is compiled and executed. I will then show how this algorithm can be used
in static and dynamic analyses of programs, to estimate their numeric
stability. I will illustrate the results on examples characteristic of
numeric computing where control flow divergence actually occurs across
different execution platforms.
Joint with Yijia Gu, Mahsa Bayati, and Miriam Leeser,
Northeastern University, Boston, USA