Network


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

Hotspot


Dive into the research topics where David Ryan Koes is active.

Publication


Featured researches published by David Ryan Koes.


computer vision and pattern recognition | 2001

Precise omnidirectional camera calibration

Dennis Strelow; Jeffrey Mishler; David Ryan Koes; Sanjiv Singh

Recent omnidirectional camera designs aim a conventional camera at a mirror that expands the cameras field of view. This wide view is ideal for three-dimensional vision tasks such as motion estimation and obstacle detection, but these applications require an accurate model of the imaging process. We present a full model of the imaging process, which includes the rotation and translation between the camera and mirror, and an algorithm that determines this relative position from observations of known points in a single image. We present tests of the model and of the calibration procedure for various amounts of misalignment between the mirror and camera. These tests show that the algorithm recovers the correct relative position, and that by using the full model, accurate shape-from-motion and stereo matching are possible even if the camera and mirror are severely misaligned.


programming language design and implementation | 2006

A global progressive register allocator

David Ryan Koes; Seth Copen Goldstein

This paper describes a global progressive register allocator, a register allocator that uses an expressive model of the register allocation problem to quickly find a good allocation and then progressively find better allocations until a provably optimal solution is found or a preset time limit is reached. The key contributions of this paper are an expressive model of global register allocation based on multicommodity network flows that explicitly represents spill code optimization, register preferences, copy insertion, and constant rematerialization; two fast, but effective, heuristic allocators based on this model; and a more elaborate progressive allocator that uses Lagrangian relaxation to compute the optimality of its allocations. Our progressive allocator demonstrates code size improvements as large as 16.75% compared to a traditional graph allocator. On average, we observe an initial improvement of 3.47%, which increases progressively to 6.84% as more time is permitted for compilation.


symposium on code generation and optimization | 2008

Near-optimal instruction selection on dags

David Ryan Koes; Seth Copen Goldstein

Instruction selection is a key component of code generation. High quality instruction selection is of particular importance in the embedded space where complex instruction sets are common and code size is a prime concern. Although instruction selection on tree expressions is a well understood and easily solved problem, instruction selection on directed acyclic graphs is NP-complete. In this paper we present NOLTIS, a near-optimal, linear time instruction selection algorithm for DAG expressions. NOLTIS is easy to implement, fast, and effective with a demonstrated average code size improvement of 5.1% compared to the traditional tree decomposition and tiling approach.


symposium on code generation and optimization | 2005

A Progressive Register Allocator for Irregular Architectures

David Ryan Koes; Seth Copen Goldstein

Register allocation is one of the most important optimizations a compiler performs. Conventional graph-coloring based register allocators are fast and do well on regular, RISC-like, architectures, but perform poorly on irregular, CISC-like, architectures with few registers and non-orthogonal instruction sets. At the other extreme, optimal register allocators based on integer linear programming are capable of fully modeling and exploiting the peculiarities of irregular architectures but do not scale well. We introduce the idea of a progressive allocator. A progressive allocator finds an initial allocation of quality comparable to a conventional allocator, but as more time is allowed for computation the quality of the allocation approaches optimal. This paper presents a progressive register allocator which uses a multi-commodity network flow model to elegantly represent the intricacies of irregular architectures. We evaluate our allocator as a substitute for gcc s local register allocation pass.


Proceedings of the 2004 workshop on Memory system performance | 2004

Programmer specified pointer independence

David Ryan Koes; Mihai Budiu; Girish Venkataramani

Good alias analysis is essential in order to achieve high performance on modern processors, yet precise interprocedural analysis does not scale well. We present a source code annotation, #pragma independent, which provides precise pointer aliasing information to the compiler, and describe a tool which highlights the most important and most likely correct locations at which a programmer should insert these annotations. Using this tool we perform a limit study on the effectiveness of pointer independence in improving program performance through improved compilation.


software and compilers for embedded systems | 2009

Register allocation deconstructed

David Ryan Koes; Seth Copen Goldstein

Register allocation is a fundamental part of any optimizing compiler. Effectively managing the limited register resources of the constrained architectures commonly found in embedded systems is essential in order to maximize code quality. In this paper we deconstruct the register allocation problem into distinct components: coalescing, spilling, move insertion, and assignment. Using an optimal register allocation framework, we empirically evaluate the importance of each of the components, the impact of component integration, and the effectiveness of existing heuristics. We evaluate code quality both in terms of code performance and code size and consider four distinct instruction set architectures: ARM, Thumb, x86, and x86-64. The results of our investigation reveal general principles for register allocation design.


Archive | 2005

Adding faster with application specific early termination

David Ryan Koes; Tiberiu Chelcea; Charles Onyeama; Seth Copen Goldstein


Archive | 2006

An Analysis of Graph Coloring Register Allocation

David Ryan Koes; Seth Copen Goldstein


Archive | 2006

A Better Global Progressive Register Allocator

David Ryan Koes; Seth Copen Goldstein


Archive | 2009

Towards a more principled compiler: register allocation and instruction selection revisited

Seth Copen Goldstein; David Ryan Koes

Collaboration


Dive into the David Ryan Koes's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Dennis Strelow

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jeffrey Mishler

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Sanjiv Singh

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

Tiberiu Chelcea

Carnegie Mellon University

View shared research outputs
Researchain Logo
Decentralizing Knowledge