The use of numerical software has grown rapidly over the past few years. From machine learning to safety-critical systems, a large variety of applications today make heavy use of floating point. Unfortunately, floating point introduces imprecision in numerical calculations. Analyzing, testing, and optimizing floating-point programs are difficult tasks. There is a large variety of numerical errors that can occur in such programs, including extreme sensitivity to roundoff, incorrectly handled exceptions, and nonreproducibility. This has led to numerous software bugs that have caused catastrophic failures. The goal of this research is to understand and combat numerical bugs. The intellectual merits are to advance the state of the art in analysis, testing and optimization of numerical software, and in extending these techniques to new domains beyond scientific applications. The importance of the research lies in the impact of the developed techniques and tools on improving the reliability and performance of real-world numerical programs, on which many other applications depend.

This research develops program analysis techniques and tools to (1) find frequent and impactful numerical bugs in programs, (2) propose fixes for these bugs, and (3) optimize numerical programs in different application domains to improve their performance. The research is driven by empirical studies that encompass several aspects of numerical software. First, a large-scale empirical study of numerical software is conducted to categorize real-world numerical bugs and their fixes. Second, an empirical study of test suites for numerical software is conducted to determine the effectiveness of testing in real-world numerical software. Based on the observations made through these empirical studies, a series of dynamic and static analyses are designed to detect and fix a variety of numerical bugs. These analyses are made available as part of an analysis and testing framework for numerical software. Novel precision tuning techniques are developed to enable scalable optimizations that lead to higher speedups, and to extend the scope of precision tuning to new application domains such as machine learning. The research has strong broader impacts in education and outreach. These include the development of new courses on software engineering and testing with a focus on numerical software, a Computer Science summer boot camp, and a mentoring program for underrepresented minorities especially focused on Latino students.

This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
1750983
Program Officer
Sol Greenspan
Project Start
Project End
Budget Start
2018-07-01
Budget End
2023-06-30
Support Year
Fiscal Year
2017
Total Cost
$435,944
Indirect Cost
Name
University of California Davis
Department
Type
DUNS #
City
Davis
State
CA
Country
United States
Zip Code
95618