I do research on the boundary between computer architecture and computer systems. My research focuses on improving programmability, reliability, and efficiency of computing.
My current research projects address these issues along several different dimensions. I am working to define a reasonable system stack - from the application to the architecture - for low-/no-power computing devices that harvest energy from their environment, experiencing power failures as common case behavior. I am looking at how to reconcile programmability, performance, and generality in heterogeneous computing systems (e.g., CPU + GPU + FPGA), with an emphasis on defining a useful memory model for such systems. I am also looking at ways of making concurrent programs correct and reliable that require minimal involvement from a programmer by taking advantage of statistical inference and symbolic execution. In my prior work, I have worked on defining new concurrent programming models, inventing better architecture support for concurrency debugging, and building systems and architectures that automatically avoid failures in broken concurrent programs.
Broadly, I like working on architectural features and systems that make life easier during development and remain useful throughout a system’s lifetime. I prefer to work across the layers of the system stack – hacking the os, language features, tool support, microarchitecture, etc. I think statistical methods and inference, empirical systems, and systems that dynamically adapt their behavior are all really cool and those kinds of things show up in my research projects.
Bio & Other Info
I received my Ph.D. in 2013 from the University of Washington Department of Computer Science and Engineering where my advisor was Luis Ceze. I live in Seattle with my cat and girlfriend. My personal website is at http://brandonlucia.com where there's lots about what I'm up to besides doing Computer.