Results 1 
5 of
5
Erbium: A Deterministic, Concurrent Intermediate Representation for Portable and Scalable Performance
, 2009
"... Tuning applications for multicore systems involve subtle concepts and targetdependent optimizations. New languages are being designed to express concurrency and locality without reference to a particular architecture. But compiling such abstractions into efficient code requires a portable, interme ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Tuning applications for multicore systems involve subtle concepts and targetdependent optimizations. New languages are being designed to express concurrency and locality without reference to a particular architecture. But compiling such abstractions into efficient code requires a portable, intermediate representation: this is essential for modular composition (separate compilation), for optimization frameworks independent of the source language, and for justintime compilation of bytecode languages. An intermediate representation is also essential to library and other baseline computing infrastructure developers who cannot afford the abstraction penalty of higherlevel languages. But efficiency is nothing if it ruins productivity of the few available experts. Efficiency programmers need an alternative to fragile, adhoc optimizations built upon nondeterministic primitives. This paper introduces Erbium, an intermediate representation for compilers, a lowlevel language for efficiency programmers, and a lightweight runtime implementation. It is built upon a new data structure for scalable and deterministic concurrency, called Event Recording (Er). Our work is inspired by the semantics of dataflow and synchronous languages, motivated by advanced optimizations relying on nonblocking concurrency. We provide experimental evidence of the productivity, scalability and efficiency advantages of Erbium, relying on a prototype implementation in GCC 4.3.
Lucyn: a nSynchronous Extension of Lustre
"... Synchronous functional languages such as Lustre or Lucid Synchrone define a restricted class of Kahn Process Networks which can be executed with no buffer. Every expression is associated to a clock indicating the instants when a value is present. A dedicated type system, the clock calculus, checks ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
Synchronous functional languages such as Lustre or Lucid Synchrone define a restricted class of Kahn Process Networks which can be executed with no buffer. Every expression is associated to a clock indicating the instants when a value is present. A dedicated type system, the clock calculus, checks that the actual clock of a stream equals its expected clock and thus does not need to be buffered. The nsynchrony relaxes synchrony by allowing the communication through bounded buffers whose size is computed at compiletime. It is obtained by extending the clock calculus with a subtyping rule which defines buffering points. This paper presents the first implementation of the nsynchronous model inside a Lustrelike language called Lucyn. The language extends Lustre with an explicit buffer construct whose size is automatically computed during the clock calculus. This clock calculus is defined as an inference type system and is parametrized by the clock language and the algorithm used to solve subtyping constraints. We detail here one algorithm based on the abstraction of clocks, an idea originally introduced in [5]. The paper presents a simpler, yet more precise, clock abstraction for which the main algebraic properties have been proved in Coq. Finally, we illustrate the language on various examples including a video application.
Scheduling and Buffer Sizing of nSynchronous Systems Typing of Ultimately Periodic Clocks in Lucyn Extended Version
"... Abstract. Lucyn is a language for programming networks of processes communicating through bounded buffers. A dedicated type system, termed a clock calculus, automatically computes static schedules of the processes and the sizes of the buffers between them. In this article, we present a new algorith ..."
Abstract
 Add to MetaCart
Abstract. Lucyn is a language for programming networks of processes communicating through bounded buffers. A dedicated type system, termed a clock calculus, automatically computes static schedules of the processes and the sizes of the buffers between them. In this article, we present a new algorithm which solves the subtyping constraints generated by the clock calculus. The advantage of this algorithm is that it finds schedules for tightly coupled systems. Moreover, it does not overestimate the buffer sizes needed and it provides a way to favor either system throughput or buffer size minimization. 1
Lucyn: a nSynchronous Extension of Lustre ⋆
"... Abstract. Synchronous functional languages such as Lustre or Lucid Synchrone define a restricted class of Kahn Process Networks which can be executed with no buffer. Every expression is associated to a clock indicating the instants when a value is present. A dedicated type system, the clock calculus ..."
Abstract
 Add to MetaCart
Abstract. Synchronous functional languages such as Lustre or Lucid Synchrone define a restricted class of Kahn Process Networks which can be executed with no buffer. Every expression is associated to a clock indicating the instants when a value is present. A dedicated type system, the clock calculus, checks that the actual clock of a stream equals its expected clock and thus does not need to be buffered. The nsynchrony relaxes synchrony by allowing the communication through bounded buffers whose size is computed at compiletime. It is obtained by extending the clock calculus with a subtyping rule which defines buffering points. This paper presents the first implementation of the nsynchronous model inside a Lustrelike language called Lucyn. The language extends Lustre with an explicit buffer construct whose size is automatically computed during the clock calculus. This clock calculus is defined as an inference type system and is parametrized by the clock language and the algorithm used to solve subtyping constraints. We detail here one algorithm based on the abstraction of clocks, an idea originally introduced in [5]. The paper presents a simpler, yet more precise, clock abstraction for which the main algebraic properties have been proved in Coq. Finally, we illustrate the language on various examples including a video application. Key words: Process networks, Synchronous model, Type systems. 1
Author manuscript, published in "MEMOCODE (2012)" DOI: 10.1109/MEMCOD.2012.6292295 A Correlation Preserving Performance Analysis for Stream Processing Systems
, 2012
"... Abstract—For the design of realtime embedded systems, analysis of performance and resource utilization at an early stage is crucial to evaluate design choices. Network Calculus and its variants provide the tools to perform such analyses for distributed systems processing streams of tasks, based on ..."
Abstract
 Add to MetaCart
Abstract—For the design of realtime embedded systems, analysis of performance and resource utilization at an early stage is crucial to evaluate design choices. Network Calculus and its variants provide the tools to perform such analyses for distributed systems processing streams of tasks, based on a maxplus algebra. However, the underlying model employed in Network Calculus cannot capture correlations between the availability of different resources and between the arrivals of tasks, leading to overly conservative performance bounds for some frequently used system topologies. We present a model based on timing constraints relative to pairs of streams, endowed with an analysis technique that can handle such correlations. I.