65 research outputs found
Verifying Quantitative Reliability of Programs That Execute on Unreliable Hardware
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 recovery from 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. In this paper we present Rely, a programming language that enables developers to reason about 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. We present a static quantitative reliability analysis that verifies quantitative requirements on the reliability of an application, enabling a developer to perform sound and verified reliability engineering. The analysis takes a Rely program with a reliability specification and a hardware specification, that characterizes the reliability of the underlying hardware components, and verifies that the program satisfies its reliability specification when executed on the underlying unreliable hardware platform. We demonstrate the application of quantitative reliability analysis on six computations implemented in Rely.This research was supported in part by the National Science Foundation (Grants CCF-0905244, CCF-1036241, CCF-1138967, CCF-1138967, and IIS-0835652), the United States Department of Energy (Grant DE-SC0008923), and DARPA (Grants FA8650-11-C-7192, FA8750-12-2-0110)
Quantum nonlocality, cryptography and complexity
Thèse numérisée par la Division de la gestion de documents et des archives de l'Université de Montréal
An Exact Method for Analysis of Value-based Array Data Dependences
Standard array data dependence testing algorithms give information
about the aliasing of array references. If statement 1 writes a[5],
and statement 2 later reads a[5], standard techniques
described this as a flow dependence, even if there was an intervening write.
We call a dependence between two references to the same memory
location a memory-based dependence. In contrast, if there are no
intervening writes, the references touch the same value and we call the
dependence a value-based dependence.
There has been a surge of recent work on value-based array data dependence
analysis (also referred to as computation of array data-flow dependence
information). In this paper, we describe a technique that is exact
over programs without control flow (other than loops) and non-linear
references. We compare our proposal with the technique proposed
by Paul Feautrier, which is the other technique that is complete over the same
domain as ours. We also compare our work with that of Tu and Padua, a
representative approximate scheme for array privatization.
(Also cross-referenced as UMIACS-TR-93-137
- …