Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Michael I. Gordon is active.

Publication


Featured researches published by Michael I. Gordon.


architectural support for programming languages and operating systems | 2006

Exploiting coarse-grained task, data, and pipeline parallelism in stream programs

Michael I. Gordon; William Thies; Saman P. Amarasinghe

As multicore architectures enter the mainstream, there is a pressing demand for high-level programming models that can effectively map to them. Stream programming offers an attractive way to expose coarse-grained parallelism, as streaming applications (image, video, DSP, etc.) are naturally represented by independent filters that communicate over explicit data channels.In this paper, we demonstrate an end-to-end stream compiler that attains robust multicore performance in the face of varying application characteristics. As benchmarks exhibit different amounts of task, data, and pipeline parallelism, we exploit all types of parallelism in a unified manner in order to achieve this generality. Our compiler, which maps from the StreamIt language to the 16-core Raw architecture, attains a 11.2x mean speedup over a single-core baseline, and a 1.84x speedup over our previous work.


architectural support for programming languages and operating systems | 2002

A stream compiler for communication-exposed architectures

Michael I. Gordon; William Thies; Michal Karczmarek; Jasper Lin; Ali S. Meli; Andrew A. Lamb; Chris L. Leger; Jeremy Wong; Henry Hoffmann; David Maze; Saman P. Amarasinghe

With the increasing miniaturization of transistors, wire delays are becoming a dominant factor in microprocessor performance. To address this issue, a number of emerging architectures contain replicated processing units with software-exposed communication between one unit and another (e.g., Raw, SmartMemories, TRIPS). However, for their use to be widespread, it will be necessary to develop compiler technology that enables a portable, high-level language to execute efficiently across a range of wire-exposed architectures.In this paper, we describe our compiler for StreamIt: a high-level, architecture-independent language for streaming applications. We focus on our backend for the Raw processor. Though StreamIt exposes the parallelism and communication patterns of stream programs, some analysis is needed to adapt a stream program to a software-exposed processor. We describe a partitioning algorithm that employs fission and fusion transformations to adjust the granularity of a stream graph, a layout algorithm that maps a stream graph to a given network topology, and a scheduling strategy that generates a fine-grained static communication pattern for each computational element.We have implemented a fully functional compiler that parallelizes StreamIt applications for Raw, including several load-balancing transformations. Using the cycle-accurate Raw simulator, we demonstrate that the StreamIt compiler can automatically map a high-level stream abstraction to Raw without losing performance. We consider this work to be a first step towards a portable programming model for communication-exposed architectures.


international parallel and distributed processing symposium | 2004

Language and compiler design for streaming applications

William Thies; Michael I. Gordon; Michal Karczmarek; Jasper Lin; David Maze; Rodric M. Rabbah; Saman P. Amarasinghe

High-performance streaming applications are a new and distinct domain of programs that is increasingly important. The StreamIt language provides novel high-level representations to improve programmer productivity and program robustness within the streaming domain. At the same time, the StreamIt compiler aims to improve the performance of streaming applications via stream-specific analysis and optimizations. In this paper, we motivate, describes and justify the StreamIt language which include a structured model of streams, a messaging system for control, and a natural textual syntax.


compiler construction | 2000

A Static Study of Java Exceptions Using JESP

Barbara G. Ryder; Donald Smith; Ulrich Kremer; Michael I. Gordon; Nirav Shah

JESP is a tool for statically examining the usage of user thrown exceptions in Java source code. Reported here are the first findings over a dataset of 31 publicly available Java codes, including the JavaSpecs. Of greatest interest to compiler writers are the findings that most Java exceptions are thrown across method boundaries, trys and catches occur in equal numbers, finallys are rare, and programs fall into one of two categories, those dominated by throw statements and those dominated by catch statements.


distributed event-based systems | 2013

Dynamic expressivity with static optimization for streaming languages

Robert Soulé; Michael I. Gordon; Saman P. Amarasinghe; Robert Grimm; Martin Hirzel

Developers increasingly use streaming languages to write applications that process large volumes of data with high throughput. Unfortunately, when picking which streaming language to use, they face a difficult choice. On the one hand, dynamically scheduled languages allow developers to write a wider range of applications, but cannot take advantage of many crucial optimizations. On the other hand, statically scheduled languages are extremely performant, but have difficulty expressing many important streaming applications. This paper presents the design of a hybrid scheduler for stream processing languages. The compiler partitions the streaming application into coarse-grained subgraphs separated by dynamic rate boundaries. It then applies static optimizations to those subgraphs. We have implemented this scheduler as an extension to the StreamIt compiler. To evaluate its performance, we compare it to three scheduling techniques used by dynamic systems (OS thread, demand, and no-op) on a combination of micro-benchmarks and real-world inspired synthetic benchmarks. Our scheduler not only allows the previously static version of StreamIt to run dynamic rate applications, but it outperforms the three dynamic alternatives. This demonstrates that our scheduler strikes the right balance between expressivity and performance for stream processing languages.


siggraph eurographics conference on graphics hardware | 2005

A reconfigurable architecture for load-balanced rendering

Jiawen Chen; Michael I. Gordon; William Thies; Matthias Zwicker; Kari Pulli

Commodity graphics hardware has become increasingly programmable over the last few years but has been limited to fixed resource allocation. These architectures handle some workloads well, others poorly; load-balancing to maximize graphics hardware performance has become a critical issue. In this paper, we explore one solution to this problem using compile-time resource allocation. For our experiments, we implement a graphics pipeline on Raw, a tile-based multicore processor. We express both the full graphics pipeline and the shaders using StreamIt, a high-level language based on the stream programming model. The programmer specifies the number of tiles per pipeline stage, and the StreamIt compiler maps the computation to the Raw architecture.We evaluate our reconfigurable architecture using a mix of common rendering tasks with different workloads and improve throughput by 55-157% over a static allocation. Although our early prototype cannot compete in performance against commercial state-of-the-art graphics processors, we believe that this paper describes an important first step in addressing the load-balancing challenge.


ACM Sigarch Computer Architecture News | 2002

A common machine language for grid-based architectures

William Thies; Michal Karczmarek; Michael I. Gordon; David Maze; Jeremy Wong; Henry Hoffmann; Matthew Brown; Saman P. Amarasinghe

A common machine language is an essential abstraction that allows programmers to express an algorithm in a way that can be efficiently executed on a variety of architectures. The key properties of a common machine language (CML) are: 1) it abstracts away the idiosyncratic differences between one architecture and another so that a programmer doesn’t have to worry about them, and 2) it encapsulates the common properties of the architectures such that a compiler for any given target can still produce an efficient executable. For von-Neumann architectures, the canonical CML is C: instructions consist of basic arithmetic operations, executed sequentially, which operate on either local variables or values drawn from a global block of memory. C has been implemented efficiently on a wide range of architectures, and it saves the programmer from having to adapt to each kind of register layout, cache configuration, and instruction set. However, recent years have seen the emergence of a class of grid-based architectures [2, 3, 4] for which the von-Neumann model no longer holds, and for which C is no longer an adequate CML. The design of these processors is fundamentally different in that they are conscious of wire delays–instead of just arithmetic computations–as the barriers to performance. Accordingly, grid-based architectures support finegrained, reconfigurable communication between replicated processing units. Rather than a single instruction stream with a monolithic memory, these machines contain multiple instruction streams with distributed memory banks. Though C can still be used to write efficient programs on these machines, doing so either requires architecture-specific directives or a very smart compiler that can extract the parallelism and communication from the C semantics. Both of these options renders C obsolete as a CML, since it fails to hide the architectural details from the programmer and it imposes abstractions which are a mismatch for the domain. To bridge this gap, we propose a new common machine language for grid-based processors: StreamIt. The StreamIt language makes explicit the large-scale parallelism and regular communication patterns that these architectures were designed to exploit. A program is represented not as a monolithic memory and instruction stream, but rather as a composition of autonomous filters, each of which contains its own memory and can only communicate with its immediate neighbors via high-bandwidth data channels. In addition, StreamIt provides a low-bandwidth messaging system that filters can use for non-local communication. We believe that StreamIt abstracts away the variations in grid-based processors while encapsulating their common properties, thereby enabling compilers to efficiently map a single source program to a variety of modern processors. 2. THE STREAMIT LANGUAGE


network and distributed system security symposium | 2015

Information-Flow Analysis of Android Applications in DroidSafe

Michael I. Gordon; Deokhwan Kim; Jeff H. Perkins; Limei Gilham; Nguyen Nguyen; Martin C. Rinard


Archive | 2002

StreamIt: A Compiler for Streaming Applications ⁄

William Thies; Michal Karczmarek; Michael I. Gordon; David Maze; Jeremy Wong; Henry Hoffmann; Matthew Brown; Saman P. Amarasinghe


Archive | 2010

Compiler techniques for scalable performance of stream programs on multicore architectures

Saman P. Amarasinghe; Michael I. Gordon

Collaboration


Dive into the Michael I. Gordon's collaboration.

Top Co-Authors

Avatar

Saman P. Amarasinghe

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

William Thies

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

David Maze

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

Michal Karczmarek

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jeremy Wong

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

Martin C. Rinard

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jasper Lin

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

Matthew Brown

Massachusetts Institute of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge