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 |
2019 | Research Scientist at Carnegie Mellon University SCS (to present) |
2018 | Research Associate at Indiana University SICE |
2014 | Researcher at INRIA Rocquencourt in Gallium / DeepSea |
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. |
2016 | Oracle-Guided Scheduling for Controlling Granularity in |
Implicitly Parallel Languages | |
JFP (Umut A 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) |
2019 | LoCal: A Language for Programs Operating on Serialized Data |
(Vollmer et al. 2019) | |
Provably and Practically Efficient Granularity Control | |
(Acar et al. 2019) | |
2018 | Heartbeat Scheduling: Provable Efficiency for Nested |
Parallelism (Acar et al. 2018) | |
2017 | Contention in Structured Concurrency: Provably Efficient |
Dynamic NonZero Indicators for Nested Parallel Computation | |
PPoPP (Umut A Acar, Ben-David, and Rainey 2017) | |
2016 | Dag-Calculus: A Calculus for Parallel Computation |
ICFP (Umut A 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) |
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) |
2016 | An Introduction to Parallel Computing in C++ |
Online course materials (Umut A Acar, Charguéraud, and Rainey 2016b) | |
2010 | Effective Scheduling Techniques for High-Level Parallel |
Programming Languages | |
PhD Disertation (Rainey 2010) | |
2009 | Semantics Engineering with PLT Redex |
Contributed chapter (Felleisen, Findler, and Flatt 2009, chap. 25) |
2017 | Parallel Work Inflation, Memory Effects, and their Empirical Analysis |
arXiv (Umut A. Acar, Charguéraud, and Rainey 2017) |
Manticore This artifact consists of a parallel, functional programming language aimed at general-purpose applications running on multi-core processors. I contributed code to the compiler and runtime system, with particular focus on load balancing for parallel workloads and on code generation. http://manticore.cs.uchicago.edu/
Chunkedseq This project features a C++ template library which implements ordered, in-memory containers that are based on the B-tree-like data structure I coauthored with Umut Acar and Arthur Charguéraud (Acar, Charguéraud, and Rainey 2014). http://deepsea.inria.fr/chunkedseq
PASL (Parallel Algorithm Scheduling Library. I coauthored this library with Umut Acar and Arthur Charguéraud. http://deepsea.inria.fr/pasl/
SML/NJ (Standard ML of New Jersey) I worked on the back end of the compiler. My main projects covered code generation for the x86_64 and support for foreign-function calls. http://smlnj.org/
PDFS (Parallel DFS) This project features a C++ implementation of the fast DFS-like graph-traversal algorithm from the SC’15 paper (Acar, Charguéraud, and Rainey 2015). http://deepsea.inria.fr/graph
2019 | ICFP |
ACM SIGPLAN International Conference on Functional | |
Programming | |
2018 | FHCP (co-chair) |
ACM SIGPLAN Workshop on Functional High-Performance | |
Computing | |
2018 | IPDPS International Parallel and Distributed Processing |
Symposium | |
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 |
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 (Umut A 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.1 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.2
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 |
Acar, Umut A., Vitaly Aksenov, Arthur Charguéraud, and Mike Rainey. 2019. “Provably and Practically Efficient Granularity Control.” In Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming, 214–28. PPoPP ’19. New York, NY, USA: ACM. http://mike-rainey.site/papers/oracle-ppop19-long.pdf.
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://mike-rainey.site/papers/dynsnzi.pdf.
Acar, Umut A, Arthur Charguéraud, Adrien and Guatto, Mike Rainey, and Filip Sieczkowski. 2018. “Heartbeat Scheduling: Provable Efficiency for Nested Parallelism.” ACM. http://mike-rainey.site/papers/heartbeat.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://mike-rainey.site/papers/oracle_scheduling.pdf.
———. 2012. “Efficient Primitives for Creating and Scheduling Parallel Computations.” In Declarative Aspects of Multicore Programming. http://mike-rainey.site/papers/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://mike-rainey.site/papers/full.pdf.
———. 2014. “Theory and Practice of Chunked Sequences.” In The 22nd Annual European Symposium on Algorithms, 25–36. Springer. http://mike-rainey.site/papers/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. http://mike-rainey.site/papers/pdfs_sc15.pdf.
———. 2016a. “Oracle-Guided Scheduling for Controlling Granularity in Implicitly Parallel Languages.” Journal of Functional Programming. Cambridge University Press. http://mike-rainey.site/papers/jfp-oracle-guided.pdf.
———. 2016b. An Introduction to Parallel Computing in C++.
Acar, Umut A., Arthur Charguéraud, and Mike Rainey. 2017. “Parallel Work Inflation, Memory Effects, and Their Empirical Analysis.” CoRR abs/1709.03767. http://arxiv.org/abs/1709.03767.
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://mike-rainey.site/papers/dag-calculus.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://mike-rainey.site/papers/ppopp13-flat.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://mike-rainey.site/papers/jfp-lts-submitted.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://mike-rainey.site/papers/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://mike-rainey.site/papers/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://mike-rainey.site/papers/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://mike-rainey.site/papers/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://mike-rainey.site/papers/rainey-phd.pdf.
Vollmer, Michael, Chaitanya Koparkar, Mike Rainey, Laith Sakka, Milind Kulkarni, and Ryan R. Newton. 2019. “LoCal: A Language for Programs Operating on Serialized Data.” ACM. http://mike-rainey.site/papers/lo-cal19.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.