Any students interested in participating in our research group should join our
weekly research group meeting, Monday 10-11, HPC lab (Computer Science Building room 345,
My research interests include the areas of compilers, scientific
computing, computer architecture, and software engineering, with
compilers being my main focus. In many application domains,
issues such as performance and reliability co-mingle with algorithmic
issues resulting in domain-specific libraries and applications that
are difficult to understand, reuse, and maintain. In my research, I
investigate and develop compiler technology
in order to automate
domain-specific analyses and transformations that are currently
applied by hand or not at all.
I have a number of active projects attacking the problem of how
to make high performance computing more accessible for scientists
doing computational modeling.
The SAIMI project
(Separating Algorithm and Implementation
via programming Model Injection, funded through a DOE Early Career award)
will attack the obfuscation problem by providing separate interfaces for the specification of
algorithms and the implementation details such as how to schedule the algorithms
on parallel computer systems. We propose to inject programming
models into existing host languages and provide high-level implementation abstractions to prevent algorithm
obfuscation due to performance tuning. The definition of an injectable programming model is still evolving, but an initial definition is
a programming abstraction like the polyhedral model
or task graphs. These programming abstractions can be injected using pragmas
and are constrained enough to enable the orthogonal specification of implementation details.
The main goal of the PIES project (Parallelization using Inspector/Executor Strategies, funded
through an NSF CAREER grant) is the development of a Sparse Polyhedral Framework (SPF) for specifying
irregular/sparse computations and enabling runtime reordering transformations of those computations
through the automatic generation of the appropriate inspectors and executors. We plan to incorporate the
SPF as an injectable programming model.
We are also applying the SPF to communication avoiding algorithms that are the focus of
the Algorithms and Software for Communication Avoidance and
Communication Hiding at the Extreme Scale
(CACHE Institute), an interdisciplinary project funded by the DOE from Spring 2010 through
Our research group is also involved in a multi-disciplinary effort at Colorado State University to develop
data analysis software for Small Angle X-ray Scattering (SAXS). One goal is to develop software design
patterns and/or code generation techniques that enable iterative model development while maintaining computational
efficiency. We have already contributed LookUp Table (LUT) optimizations
for this effort that resulted in six fold serial speedup.
Previous projects include:
I also collaborate on research involving the polyhedral model.
Here is a list of papers related to storage
mapping and parameterized code generation in the polyhedral model.
co-advised with Jim Bieman
(Currently a lecturer in our department)
Brendan Sheridan (2011 undergraduate research assistant, became a graduate
student at Georgetown)
Stephanie Dinkins (Masters Spring 2012, now works with Northrop Grumman)
Amanreet Bajwa (Summer DREU student 2011, currently at Colorado School of Mines)
Shinjini Kar (Summer DREU student 2010, currently at College of Saint Scholastica in Duluth, Minnesota)
Samantha Wood (Summer DREU student 2010 and summer research student 2011, currently a Ph.D. student at the University of
California, San Diego
Ryan Moore (undergraduate honors thesis, graduated in Fall 2010, currently at
HP in Fort Collins)
Jonathon Roelofs (Undergraduate
research assistant, tiling visualizer, graduated with BS in Spring 2011,
now at Apolent)
Christie Williams (Undergraduate honors thesis student and summer research student, graduated with MCS in Spring 2011)
Alan LaMielle (Graduated with a
Masters in Spring 2010, currently at VMWare)
Ryan Vail (Undergraduate research assistant, graduated Spring 2010)
(Undergraduate summer research student 2008, currently a graduate student at
CSU working with Shrideep Pallickara)
Jeshua Bratman (Undergraduate research assistant at CSU, graduated May 2009 with BS, currently a graduate student at University of Michigan)
Kiley Graim (Undergraduate Research Assistant, graduated May 2008 with BS, currently a graduate student at CSU)
Jessa Rothenberg, CRAW DMP student Summer 2007
CS/ECE 560: Foundations of Fine-Grained Parallelism
CS 453: Introduction to Compiler Construction
CS 553: Compiler Construction
CS 270: Computer Organization (Fall 2012), (Fall 2008)
CS 653: Static and Dynamic Program Analysis
CSE 30: Computer Organization and Systems Programming
(Summer 2001 at University of California, San Diego)
Beginning Web Programming Course
(Spring 2000 at University High School in San Diego)
A library for manipulating sets and relations with uninterpreted constraints
as well as affine constraints.
Simulator for AVR assembly code and emulator for the MeggyJr.
Command-line and GUI tool that enables visualization of 2D loop tilings.
Representation-independent program analysis.
Package for reordering data and computation in sparse matrix
SPIM 7.2.1 with keepstats
Modified version of the SPIM simulator for counting
the number of dynamic instructions, reads, writes, and branches.
I used this little demo program at an Upward Bound
Saturday session to teach junior high and high school
students about convolution.
Graphite: Python graphing package
Joe Strout and I developed Graphite for a Software Engineering course.
I later made Graphite available on
Handy Python Scripts
Some Python scripts I wrote for
running experiments, gathering data, and doing data analysis.
Recent Program Committees
Computer Science Department
1873 Campus Delivery
Fort Collins, CO 80523-1873
Phone: (970) 491-4193
Fax: (970) 491-2466
Office: 342 Computer Science Building