Perturbing and evaluating numerical programs without recompilation: the wonglediff way

  • Authors:
  • P. R. Eggert;D. S. Parker

  • Affiliations:
  • Computer Science Department, University of California, Los Angeles, CA;Computer Science Department, University of California, Los Angeles, CA

  • Venue:
  • Software—Practice & Experience
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Wonglediff is a program that tests the sensitivity of arbitrary program executables or processes to changes that are introduced by a process that runs in parallel. On Unix and Linux kernels, wonglediff creates a supervisor process that runs applications and on the fly, introduces desired changes to their process state. When execution terminates, it then summarizes the resulting changes in the output files. The technique employed has a variety of uses. This paper describes an implementation of wonglediff that checks the sensitivity of programs to random changes in the floating-point rounding modes. It runs a program several times, 'wongling' it each time: randomly toggling the IEEE-754 rounding mode of the program as it executes. By comparing the resulting output, one gets a poor man's numerical stability analysis for the program. Although the analysis does not give any kind of guarantee about a program's stability, it can reveal genuine instability, and it does serve as a particularly useful and revealing idiot light. In our implementation, differences among the output files from the program's multiple runs are summarized in a report. This report is in fact an HTML version of the output file, with inline mark-up summarizing individual differences among the multiple instances. When viewed with a browser, the differences can be highlighted or rendered in many different ways.