My name is Lluís Miquel Munguía, a Software Engineer who is enthusiastic about applying scientific computing to large-scale real world problems, Machine Learning, and Data Analytics. My other interests include Computer Architectures, Parallel Computing, HPC software, and Discrete Optimization. I recently obtained my PhD from Georgia Tech, and joined the Platforms team at Google.

Email Google Scholar profile LinkedIn profile Bitbucket profile

About me

In 2012, I obtained my B.Sc. and M.Sc. in Computer Engineering (Enginyeria Informàtica Superior) from the Barcelona School of Informatics (FIB), Universitat Politècnica de Catalunya. While pursuing my studies in Barcelona, I worked with Prof. Ernest Teniente in the development of automatic reasoning tools for validating UML Software Engineering schemas.

I started at Georgia Tech in the Fall of 2011 as an exchange student. My early research under the supervision of Prof. David A. Bader focused on parallel graph algorithms and their performance on HPC architectures. During my stay, I also collaborated with Prof. Frank Dellaert on Computer Vision applications for mobile platforms.

I recently graduated as a CSE Ph.D. under the supervision of Prof. David A. Bader. In a joint collaboration with Profs. George Nemhauser and Shabbir Ahmed, my work focused on the application of HPC algorithms to speed up the solving of Discrete Optimization and Stochastic Integer Optimization problems.

I recently landed at Google as a Software Engineer, where I will be focusing on performance analysis and co-design of Machine Learning accelerators.

Personal info

I was born in Girona, Catalonia in 1989. I have always been interested in computers and electronics. My other passions include photography (digital and film), modern history, travelling, cooking, and football. You may check out my fotography portfolio at 500px and instagram .


L.M. Munguia, S. Ahmed, D.A. Bader, G. L. Nemhauser, Y. Shao, "Alternating Criteria Search: A Parallel Large Neighborhood Search Algorithm for Mixed Integer Programs" , Computational Optimization and Applications, 2017

L.M. Munguia, S. Ahmed, D.A. Bader, G. L. Nemhauser, Y. Shao, V. Goel, "A Parallel Local Search Framework for the Fixed-Charge Multicommodity Network Flow Problem" , Computers & Operations Research, 2016

L.M. Munguia, G. Oxberry, and D. Rajan, "PIPS-SBB: A parallel distributed-memory branch-and-bound algorithm for stochastic mixed-integer programs" , IEEE Workshop on Parallel Computing and Optimization, IPDPS, Chicago, 2016

O. Green, P. Yalamanchili, and L.M. Munguia, "Fast triangle counting on the GPU", ACM Workshop on Irregular Applications: Architectures and Algorithms (IA3), SC, New Orleans, 2014

O. Green, L.M. Munguia, D. A. Bader, "Load Balanced Clustering Coefficients", ACM Workshop on Parallel Programming for Analytics Applications (PPAA), PPoPP, Orlando, Florida, 2014

L.M. Munguia, D. A. Bader, E. Ayguade, "Task-based Parallel Breadth-First Search in Heterogeneous Environments", HiPC 2012


Here is a selection of my projects, which encompass a wide variety of my research interests:

Parallel Alternating Criteria Search


Parallel Alternating Criteria Search is a scalable parallel distributed-memory heuristic designed to find high quality solutions to any generic Mixed-Integer Program (MIP) PIPS-PSBB is a fully fledged parallel MIP solver for two-stage Stochastic Mixed-Integer Programs (SMIPs). It features two levels of nested parallelism, not only at branch-and-bound level but also in the LP relaxation. It also is implemented with data parallelism, allowing it to handle extremely large SMIP instances

Refocusing for iOS AuRUS

The Refocusing app allows you to combine multiple images in one “large aperture” image in which you can choose which part of the scene is in focus, giving your iPhone camera SLR-like powers. AuRUS is a tool for the verification and validation of UML/OCL conceptual schemas. More specifically, it allows the user to check if a certain schema fulfills various predefined properties such as the non-redundancy of integrity constraints or the existence of a primary key for a certain class. Moreover, the user can define his own state-reachability tests.