scispace - formally typeset
Proceedings ArticleDOI

Partial memoization of concurrency and communication

Lukasz Ziarek, +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

Content maybe subject to copyright    Report

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

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

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

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.