Entry Date:
January 14, 2016

Rely: A Language for Building Reliable Programs on Unreliable Hardware

Principal Investigator Michael Carbin


Emerging high-performance architectures are anticipated to contain unreliable components that may exhibit soft errors, which silently corrupt the results of computations. Full detection and masking of soft errors is challenging, expensive, and, for some applications, unnecessary. For example, approximate computing applications (such as multimedia processing, machine learning, and big data analytics) can often naturally tolerate soft errors.

Rely is a programming language that enables developers to control the quantitative reliability of an application -- namely, the probability that it produces the correct result when executed on unreliable hardware. Rely allows developers to specify the reliability requirements for each value that a function produces and then use Rely's static program analysis system to verify that the function satisfies its specification. Rely therefore enables developers to productively exploit the performance benefits of emerging high-performance architectures while still maintaining control of the program's behavior.