Proceedings ArticleDOI
Partial memoization of concurrency and communication
Lukasz Ziarek,KC Sivaramakrishnan,Suresh Jagannathan +2 more
- Vol. 44, Iss: 9, pp 161-172
Reads0
Chats0
TLDR
A weaker notion of memoization is introduced called partial memoization that gives implementations the freedom to avoid performing some part, if not all, of a previously memoized call in order to avoid the need to perform unbounded state space search.Abstract:
Memoization is a well-known optimization technique used to eliminate redundant calls for pure functions. If a call to a function f with argument v yields result r, a subsequent call to f with v can be immediately reduced to r without the need to re-evaluate f's body. Understanding memoization in the presence of concurrency and communication is significantly more challenging. For example, if f communicates with other threads, it is not sufficient to simply record its input/output behavior; we must also track inter-thread dependencies induced by these communication actions. Subsequent calls to f can be elided only if we can identify an interleaving of actions from these call-sites that lead to states in which these dependencies are satisfied. Similar issues arise if f spawns additional threads. In this paper, we consider the memoization problem for a higher-order concurrent language whose threads may communicate through synchronous message-based communication. To avoid the need to perform unbounded state space search that may be necessary to determine if all communication dependencies manifest in an earlier call can be satisfied in a later one, we introduce a weaker notion of memoization called partial memoization that gives implementations the freedom to avoid performing some part, if not all, of a previously memoized call. To validate the effectiveness of our ideas, we consider the benefits of memoization for reducing the overhead of recomputation for streaming, server-based, and transactional applications executed on a multi-core machine. We show that on a variety of workloads, memoization can lead to substantial performance improvements without incurring high memory costs.read more
Citations
More filters
Book
Transactional Memory, 2nd Edition
TL;DR: This book presents an overview of the state of the art in the design and implementation of transactional memory systems, as of early spring 2010.
Journal ArticleDOI
Run your research: on the effectiveness of lightweight mechanization
Casey Klein,John Clements,Christos Dimoulas,Carl Eastlund,Matthias Felleisen,Matthew Flatt,Jay McCarthy,Jon Rafkind,Sam Tobin-Hochstadt,Robert Bruce Findler +9 more
TL;DR: Redex is a domain-specific language for semantic models that is embedded in the Racket programming language and comes with tools for the semantics engineering life cycle.
Book
Chip Multiprocessor Architecture: Techniques to Improve Throughput and Latency
TL;DR: The low inter-processor communication latency between the cores in a CMP helps make a much wider range of applications viable candidates for parallel execution than was possible with conventional, multi-chip multiprocessors; nevertheless, limited parallelism in key applications is the main factor limiting acceptance of CMPs in some types of systems.
Patent
Purity analysis using white list/black list analysis
TL;DR: In this article, side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized.
Patent
Input vector analysis for memoization estimation
TL;DR: A function's purity may be estimated by comparing a new input vector to previously analyzed input vectors, even when that vector has not been evaluated as mentioned in this paper, and when a new vector is within a confidence boundary, the new vector may be treated as a known vector.
References
More filters
Proceedings ArticleDOI
Composable memory transactions
TL;DR: This paper presents a new concurrency model, based on transactional memory, that offers far richer composition, and describes new modular forms of blocking and choice that have been inaccessible in earlier work.
Journal ArticleDOI
Language support for lightweight transactions
Tim Harris,Keir Fraser +1 more
TL;DR: It is argued that these problems can be addressed by moving to a declarative style of concurrency control in which programmers directly indicate the safety properties that they require, which is easier for mainstream programmers to use, prevents lock-based priority-inversion and deadlock problems and can offer performance advantages.
Proceedings ArticleDOI
Exploiting coarse-grained task, data, and pipeline parallelism in stream programs
TL;DR: This paper demonstrates an end-to-end stream compiler that attains robust multicore performance in the face of varying application characteristics and exploits all types of parallelism in a unified manner in order to achieve this generality.
Proceedings ArticleDOI
McRT-STM: a high performance software transactional memory system for a multi-core runtime
TL;DR: McRT-STM as mentioned in this paper is a software transactional memory (STM) system that is part of McRT, an experimental Multi-Core RunTime (MCRT) implementation that supports nested transactions with partial aborts, conditional signaling within a transaction, and object based conflict detection for C/C++ applications.
Journal ArticleDOI
Compiler and runtime support for efficient software transactional memory
Ali-Reza Adl-Tabatabai,Brian T. Lewis,Vijay Menon,Brian R. Murphy,Bratin Saha,Tatiana Shpeisman +5 more
TL;DR: A high-performance software transactional memory system (STM) integrated into a managed runtime environment is presented and the JIT compiler is the first to optimize the overheads of STM, and novel techniques for enabling JIT optimizations on STM operations are shown.