Education

2010 Ph.D. Computer Science University of Chicago, USA
2007 M.S. Computer Science University of Chicago, USA
2004 B.S. Computer Science Indiana University, USA
2004 B.S. Cognitive Science Indiana University, USA

Employment

2014 Researcher at INRIA Rocquencourt in Gallium / DeepSea (to present)
2010 Postdoctoral researcher at Max Planck Institute for Software
Systems
2007 Summer internship with Anwar Gluloum at Intel Corp.
2006 Programming project. Extended the MLRISC code generator to
support the AMD64. Supported by NSF Grant CRI: Standard ML
Software Infrastructure. Principle investigators: David
MacQueen and John H. Reppy.
2003 Research assistant at Indiana University with David S. Wise.
Designed and evaluated performance of cache-aware and
multiprocessor matrix-factoring algorithms.Supported by
NSF Grant CRI: A Paradigm of Parallel Programming for Morton
Ordered Matrices.

Publications

Journals

2016 Oracle-Guided Scheduling for Controlling Granularity in
Implicitly Parallel Languages
JFP (Acar, Charguéraud, and Rainey 2016a).
2011 Lazy Tree Splitting
JFP (Bergstrom et al. 2012)
2010 Implicitly threaded parallelism in Manticore
JFP (Fluet et al. 2010)

Conferences

2017 Contention in Structured Concurrency: Provably Efficient
Dynamic NonZero Indicators for Nested Parallel Computation
PPoPP (Acar, Ben-David, and Rainey 2017)
2016 Dag-Calculus: A Calculus for Parallel Computation
ICFP (Acar et al. 2016)
2015 A Work-efficient Algorithm for Parallel Unordered Depth-first
Search
Supercomputing (Acar, Charguéraud, and Rainey 2015)
2014 Theory and Practice of Chunked Sequences
ESA (Acar, Charguéraud, and Rainey 2014)
2013 Scheduling Parallel Programs by Work Stealing with Private
Deques
PPoPP (Acar, Charguéraud, and Rainey 2013)
Data-only Flattening for Nested Data Parallelism
PPoPP (Bergstrom et al. 2013)
2011 Oracle Scheduling: Controlling Granularity in Implicitly
Parallel Languages
OOPSLA (Acar, Charguéraud, and Rainey 2011)
2010 Lazy Tree Splitting
ICFP (Bergstrom et al. 2010)
2008 A Scheduling Framework for General-purpose Parallel Languages
ICFP (Fluet, Rainey, and Reppy 2008)
Implicitly-threaded Parallelism in Manticore
ICFP (Fluet et al. 2008)
2005 A Paradigm for Parallel Matrix Algorithms: Scalable Cholesky
EuroPar (Wise et al. 2005)

Workshops

2012 Efficient Primitives for Creating and Scheduling Parallel
Computations
DAMP (Acar, Charguéraud, and Rainey 2012)
2008 Calling Variadic Functions from a Strongly-typed Language
ML Workshop (Blume, Rainey, and Reppy 2008)
Scheduling_framework_08
2007 Manticore: A Heterogeneous Parallel Language
DAMP (Fluet et al. 2007)

Books

2016 An Introduction to Parallel Computing in C++
Online course materials (Acar, Charguéraud, and Rainey 2016b)
2010 Effective Scheduling Techniques for High-Level Parallel
Programming Languages
PhD Dissertation (Rainey 2010)
2009 Semantics Engineering with PLT Redex
Contributed chapter (Felleisen, Findler, and Flatt 2009, chap. 25)

Software artifacts

Professional service

Program committee member

2016 FHCP
ACM SIGPLAN Workshop on Functional High-Performance
Computing
2015 ICFP
ACM SIGPLAN International Conference on Functional
Programming
2014 ECOOP
European Conference on Object-Oriented Programming Artifact
Evaluation Committee
2013 FHCP
ACM SIGPLAN Workshop on Functional High-Performance
Computing

Reviewer for

Teaching

Course materials

In 2014, Umut Acar and I authored course materials on multicore computing. We were motivated by a gap between the teaching of theory and practice of parallel computing that we believe existed in the undergraduate algorithms course at Carnegie Mellon University, where Acar teaches. We were also movitivated by the desire to hone an automatic granularity-control technique that we developed as part of our research collaboration (Acar, Charguéraud, and Rainey 2016a, Acar, Charguéraud, and Rainey (2011)).

In 2014, we used the course materials to teach a two-week, NSF-funded, undergraduate course at the University of Puerto Rico PASL Workshop. Later, in 2014, we introduced updated materials into the undergraduate algorithms course at Carnegie Mellon University. I served as guest lecturer in 2014 and 2015, and since then, this material has become a permanent component of the course. The course materials are available on the course website.

Teaching assistantships

2009 Teaching Assistant, Implementation of Computer
Languages - II, University of Chicago, Spring
2007 Teaching Assistant, CSPP Networks, University
of Chicago, Winter
2006 Teaching Assistant, Introduction to Computer
Systems, University of Chicago, Spring
Teaching Assistant, CSPP Unix Systems
Programming, University of Chicago, Fall

Selected talks

All publications with links

Acar, Umut A, Naama Ben-David, and Mike Rainey. 2017. “Contention in Structured Concurrency: Provably Efficient Dynamic Nonzero Indicators for Nested Parallel Computation.” ACM. http://gallium.inria.fr/~rainey/dynsnzi.pdf.

Acar, Umut A, Arthur Charguéraud, and Mike Rainey. 2011. “Oracle Scheduling: Controlling Granularity in Implicitly Parallel Languages.” In Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, 46:499–518. 10. ACM. http://gallium.inria.fr/~rainey/oracle_scheduling.pdf.

———. 2012. “Efficient Primitives for Creating and Scheduling Parallel Computations.” In Declarative Aspects of Multicore Programming. http://gallium.inria.fr/~rainey/damp2012_primitives.pdf.

———. 2013. “Scheduling Parallel Programs by Work Stealing with Private Deques.” In 18th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, 48:219–28. 8. ACM. http://gallium.inria.fr/~rainey/full.pdf.

———. 2014. “Theory and Practice of Chunked Sequences.” In The 22nd Annual European Symposium on Algorithms, 25–36. Springer. http://gallium.inria.fr/~rainey/chunked_seq.pdf.

———. 2015. “A Work-Efficient Algorithm for Parallel Unordered Depth-First Search.” In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, 67:1–67:12. ACM. pdfs_sc15.pdf.

———. 2016a. “Oracle-Guided Scheduling for Controlling Granularity in Implicitly Parallel Languages.” Journal of Functional Programming. Cambridge University Press. http://gallium.inria.fr/~rainey/jfp-oracle-guided.pdf.

———. 2016b. An Introduction to Parallel Computing in C++. http://www.cs.cmu.edu/~15210/pasl.html.

Acar, Umut A, Arthur Charguéraud, Mike Rainey, and Filip Sieczkowski. 2016. “Dag-Calculus: A Calculus for Parallel Computation.” In The 26th ACM SIGPLAN International Conference on Functional Programming. ACM. http://gallium.inria.fr/~rainey/dag-calculus.pdf.

Bergstrom, Lars, Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. 2012. “Lazy Tree Splitting.” Journal of Functional Programming 22 (4-5). Cambridge University Press: 382–438. http://gallium.inria.fr/~rainey/jfp-lts-submitted.pdf.

Bergstrom, Lars, Matthew Fluet, Mike Rainey, John Reppy, Stephen Rosen, and Adam Shaw. 2013. “Data-Only Flattening for Nested Data Parallelism.” In 18th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, 48:81–92. 8. ACM. http://gallium.inria.fr/~rainey/ppopp13-flat.pdf.

Bergstrom, Lars, Mike Rainey, John Reppy, Adam Shaw, and Matthew Fluet. 2010. “Lazy Tree Splitting.” In The 20th ACM SIGPLAN International Conference on Functional Programming, 45:93–104. 9. ACM. http://gallium.inria.fr/~rainey/icfp10-lts.pdf.

Blume, Matthias, Michael Rainey, and John Reppy. 2008. “Calling Variadic Functions from a Strongly-Typed Language.” In Proceedings of the 2008 ACM SIGPLAN Workshop on Ml, 47–58. ACM. http://gallium.inria.fr/~rainey/ml-varargs.pdf.

Felleisen, Matthias, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with Plt Redex. The MIT Press.

Fluet, Matthew, Mike Rainey, and John Reppy. 2008. “A Scheduling Framework for General-Purpose Parallel Languages.” In The 13th ACM SIGPLAN International Conference on Functional Programming, 43:241–52. 9. ACM. http://gallium.inria.fr/~rainey/icfp08-sched.pdf.

Fluet, Matthew, Mike Rainey, John Reppy, and Adam Shaw. 2008. “Implicitly-Threaded Parallelism in Manticore.” In The 13th ACM SIGPLAN International Conference on Functional Programming, 43:119–30. 9. ACM. http://gallium.inria.fr/~rainey/icfp08-implicit.pdf.

———. 2010. “Implicitly Threaded Parallelism in Manticore.” Journal of Functional Programming 20 (5-6). Cambridge University Press: 537–76.

Fluet, Matthew, Mike Rainey, John Reppy, Adam Shaw, and Yingqi Xiao. 2007. “Manticore: A Heterogeneous Parallel Language.” In Proceedings of the 2007 Workshop on Declarative Aspects of Multicore Programming, 37–44. ACM.

Rainey, Mike. 2010. “Effective Scheduling Techniques for High-Level Parallel Programming Languages.” PhD thesis, University of Chicago. http://gallium.inria.fr/~rainey/rainey-phd.pdf.

Wise, David S., Craig Citro, Joshua Hursey, Fang Liu, and Michael Rainey. 2005. “A Paradigm for Parallel Matrix Algorithms: Scalable Cholesky.” In In Euro-Par 2005 – Parallel Processing. http://dx.doi.org/10.1007/11549468_76.