Asst. Prof. of ECE @ Carnegie Mellon University
Office: CIC 2311
Robert Mehrabian Collaborative Innovation Center (CIC)
4720 Forbes Avenue
Pittsburgh, PA 15213
Email: blucia [ at ] gmail [ dot ] com
I am currently looking for strong graduate students who are excited
about doing computer architecture research on the hardware/software boundary.
Send me an email if you are an inspired, curious person and we can do research
Here are some of my current research interests:
Defining Intermittent Computing I want to make intermittent computing devices, like ones that harvest energy from their environment, programmable, reliable, and robust to common-case power failures. These devices are really exciting because they are a great fit for sensing applications, medical implants, "extreme" scenarios (like the ocean floor or Mars!) and lots of other things. Making these devices useful requires us to rethink the whole system stack to deal with complexity and reliability, from programming abstractions tolerant of interruptions, down to super-energy-efficient circuits we use to implement microarchitectural features tolerant of byzantine failures. Tolerating failures and imprecision are the key to making these devices work.
Taming Heterogeneous Computing I want to map the design space of programmability, performance and generality on the increasingly important heterogeneous computing systems, like ones with a mixture of CPUs, GPUs FPGA, CGRAs, and ASICs. I am especially interested in defining and studying an efficient, implementable, comprehensible memory model and programming abstraction for such systems. To solve this problem, we need reconcile the differences of these devices with unifying architectural abstractions, hardware/software compilation and synthesis, and programming techniques that accommodate the breadth of features, precision levels, and efficiencies available.
Safe, Simple, Efficient Parallel ComputingI want to develop
software techniques and hardware architectural features to make concurrent and
parallel computer systems and software correct, reliable, and efficient. I am
especially interested in architectural features that make programming easier,
hardware software solutions to making debugging automatic, and architecture,
compiler, and runtime gadgets that automatically avoid failures in broken
programs. I think approaches based on statistical inference, symbolic
execution, and super-lightweight dynamic analysis are particularly promising.
I got my Ph.D. in Computer Science and Engineering from the University of Washington in 2013. I was advised by Luis Ceze. My Ph.D. dissertation is available here.
My publications are available on Google Scholar and in the list below.
I am blucia0a on GitHub
I made the Chango. Check it out.
Two papers to appear at PLDI this year!
One is on getting to the root of concurrency bugs using symbolic execution (w/ Nuno my awesome MSR summer intern).
The other is on a new programming and execution model for intermittently executing, energy-harvesting processors (w/ Ben Ransford).
In November 2014, I am moving to Pittsburgh to join the ECE department at Carnegie Mellon University.
Refereed Conference PapersA Simpler, Safer Programming and Execution Model for Intermittent Systems
Brandon Lucia, Benjamin Ransford
Concurrency Debugging with Differential Schedule Projections
Nuno Machado, Luis Rodrigues, Brandon Lucia
Data Provenance Tracking for Concurrent Programs
Brandon Lucia, Luis Ceze
CGO 2015[paper] [talk]
Cooperative Empirical Failure Avoidance for Multithreaded Programs
Brandon Lucia, Luis Ceze
IFRit: Interference-Free Regions for Dynamic Data-Race Detection
Laura Effinger-Dean, Brandon Lucia, Luis Ceze, Dan Grossman, Hans-J. Boehm
Isolating and Understanding Concurrency Errors Using Reconstructed Execution Fragments
Brandon Lucia, Benjamin P. Wood, Luis Ceze
PLDI 2011[paper][Try Recon!]
Acknowledgements to undergrads Julian Knutsen and Zach Rait for their early contributions to this project.
ColorSafe: Architectural Support for Debugging and Dynamically Avoiding Multi-variable Atomicity Violations
Brandon Lucia, Luis Ceze, Karin Strauss
Conflict Exceptions: Providing Simple Parallel Language Semantics with Precise Hardware Exceptions
Brandon Lucia, Luis Ceze, Karin Strauss, Shaz Qadeer, Hans Boehm
Finding Concurrency Bugs with Context-Aware Communication Graphs
Brandon Lucia, Luis Ceze
DMP: Deterministic shared-memory MultiProcessing
Joseph Devietti, Brandon Lucia, Mark Oskin, Luis Ceze
ASPLOS 2009 [paper]
Selected for IEEE Micro Top Picks '10
Atom-Aid: Surviving and Detecting Atomicity Violations
Brandon Lucia, Joseph Devietti, Karin Strauss, Luis Ceze
ISCA 2008 [paper][slides(.key),(.ppt)]
Selected for IEEE Micro Top Picks '09
Slide decks for talks I've given about these papers are available on SpeakerDeck.
Audio of gibberish produced by Mumbley based on a phoneme model of my papers.
Workshop PapersNon-volatile Memory is a Broken Time-machine
Benjamin Ransford and Brandon Lucia
Workshop on Memory Systems Performance and Correctness 2014 (co-located with PLDI 2014)[paper]
Systems Should Automatically Specialize Code and Data
Brandon Lucia and Todd Mytkowicz
Workshop on Probabilistic and Approximate Computing 2014 (co-located with PLDI) [paper]
Playing Cupid: The IDE as a Matchmaker for Plug-Ins
Todd Schiller and Brandon Lucia
Workshop on Developing Tools as Plug-ins 2012 (co-located with ICSE) [paper]
Automatic Empirical Failure Avoidance Support for Concurrent Software
Brandon Lucia Luis Ceze
Workshop on Determinism and Correctness in Parallel Programming (WoDET) 2012 (co-located with ASPLOS) [paper]
Emily Fortuna, Brandon Lucia, Adrian Sampson, Benjamin P. Wood, Luis Ceze
Workshop on Hardware Support for Parallel Performance and Correctness 2011 (co-located with MICRO)[paper]
Nicholas Hunt, Brandon Lucia, Luis Ceze
PLDI FIT 2011[paper]
Brandon Lucia, Joseph Devietti, Tom Bergan, Luis Ceze, Dan Grossman
Usenix HotPar 2010[paper]
The Case for System Support for Concurrency Exceptions
Luis Ceze, Joseph Devietti, Brandon Lucia, Shaz Qadeer
USENIX HotPar 2009[paper]
Explicitly Parallel Programming with Shared-Memory is Insane: At Least Make it Deterministic!
Joe Devietti, Brandon Lucia, Luis Ceze and Mark Oskin
Workshop on Software and Hardware Challenges of Manycore Platforms '08 [paper ]
PoCSci (Potentially Computer Science...)The Barnyard of Pig Data Research: A View from UW CSA
Benjamin P. Wood, Brandon Lucia,
UW PoCSci 2013 [paper]
The best place to follow stuff I've built is on GitHub
Useful for Doing Computer Science ResearchRecon: A Tool for Finding and Understanding Concurrency Errors.
Legerdemain (LDM): A program instrumentation and debugging tool for Linux.
DRProbe: A library for accessing the debug/watchpoint/breakpoint registers on x86/x86-64.Written with Nick HuntDRProbe is part of the Looking Within Project
MultiCacheSim: A really simple multiprocessor cache simulator based on the SESC cache model.
Concurrency Bug Benchmarks: A set of kernel microbenchmarks and full application benchmarks that I (and others) have used for doing concurrency bug research.
Miscellaneous Computer Science RelatedTips for building mspdebug with the tilib FET430 driver on OSX
Tips for building LLVM passes that work on old broken software. I want Google to index this so others can find it.
A plot characterizing the performance of the GCC-4.7 TM implementation(benchmark)
CList: A pure C implementation of a templated list class
Mon: A curses based POSIX Memory Anomaly Monitor
Music RelatedMahalo: A hardware abstract layer for mac to make it easy to make creative audio programming projects
PlayData - Chromatically and rhythmically interpret any file on your file system (try for i in $(HOME); do ./PlayData $i; done).
AndroChango - An Android app version of the PhotoChango.
PhotoChango - A computer vision based tool to audiolyze video in realtime.
Mumbley: A stupid program that generates semi-convincing gibberish using a Markov model of syllables based on wikipedia text. Also: Mumbley-made gibberish derived from a phoneme model built from the contents of all my research papers.
Chango: A musical instrument.
Audiolyzer: A tool I wrote that generates music from concurrent programs, and a composition (program) intended to be played that way.
StreamThru: A script I wrote to listen to records in a different room. Streams audio-in over the network.
Carillon: An MP3 player for Windows.
ServeMp3: A cross-platform playlist based streaming MP3 server written in Perl.
MiscellaneousTupac your Stocks(Tony Fader made this, not me)
Acronymizer: A tool to make your paper shorter
ParticleSystem: A physics-ish based particle system
CheezePad: A Lightweight Formattable Text Editor