He is working on pattern-specific languages and compilers for scientific computing, and has designed numerous approaches using optimizing compilation to effectively map applications to CPUs, FPGAs and SoCs. His work spans a variety of domains, including compiler optimization, hardware synthesis, machine learning, programming languages, and distributed computing. His research is currently funded by the National Science Foundation, the Department of Energy, and Intel. Previously he has been a Visiting Assistant Professor (2012-2014) at the University of California Los Angeles, where he was a member of the NSF Center for Domain-Specific Computing, working on both software and hardware customization. He is the author of the PolyOpt and PoCC compilers, and of the PolyBench benchmarking suite.