CRAFT logo

My research interests sit at the intersection of three subfields of computer science: 1) program analysis, 2) systems tools, and 3) high-performance computing (HPC).

analysis/tools/HPC diagram

I am fascinated by the concept of writing computer programs that accept other programs as input. There are a wide variety of such programs, including compilers, debuggers, and performance tools. Most of these require at least some level of systems knowledge, and some of them require extensive systems tools experience.

Historically, my research projects have focused on analyzing the floating-point behavior of scientific computing programs, something that is very important in HPC. I focus on providing tools that run on real systems and real codes, with minimal dependencies and relatively low overheads.

My specific contributions include a software framework that enables floating-point program analysis at the binary level, as well as specific techniques for cancellation detection, mixed-precision configuration, reduced-precision sensitivity analysis, and shadow-value analysis and simulation. More recently, I have begun working on integrating tools that together allow for source-level analysis.

Please see my CV for a list of publications.

Software repositories for ongoing projects:

As a contribution to the community, I maintain an exhaustive list (as far as I am aware) of floating-point analysis software tools.

I also have students conduct small research projects as part of my CS 470 (Parallel and Distributed Systems) class, some of which have led to peer-reviewed publications. I have begun a list of some of those class projects.

Finally, I recently started a new High-Performance Analysis research lab with another faculty member Dr. Weikle. We have several students working on various projects.

If you are interested in doing research with me, please come to office hours or send me an email to schedule another time to talk in person.