My research interests lie broadly at the intersection between computer architecture, systems software, and applications. In particular, my current research activities spawn different directions: design of programming models, compiler and runtime techniques for heterogeneous systems containing coprocessor devices; acceleration of bioinformatics, pattern recognition, and data analytics algorithms on parallel architectures; and high-speed implementation of networking applications (e.g., deep packet inspection). I am interested in any kind of parallel hardware: multi-core CPUs, GPUs and other many-core devices, network processors, field programmable gate arrays, and clusters of computers. I enjoy working at the boundary between hardware and software