Michelle Mills Strout, Ph.D.



  I am an Associate Professor in the Parallel Computing and Distributed Systems research area at the Computer Science Department at Colorado State University.

I am currently recruiting Ph.D. students to start research or teaching assistantships in Fall of 2015 (August). If you are interested please fully read a message for prospective students before sending me email.

I earned my Ph.D. in Computer Science and Engineering at UCSD in 2003. My Ph.D. thesis advisors at UCSD were Larry Carter and Jeanne Ferrante. For more information, see my bio.

  [Prospective Students] [CV] [Calendar] [Publications]
[Students] [Research] [Teaching] [Software] [Recent Program Committees] [Miscellaneous] [Bio]

Students
 

Current Students

Looking to hire students excited about scientific computing, parallel computation, and compiler's research.

Previous Students

Chris Krieger (Ph.D. in 2013. Employed somewhere that requires a security clearance and does not like to be listed on websites.)

Andrew Stone (Ph.D. in 2013. Working at Mathworks.)

Chris Wilcox, co-advised with Jim Bieman (Ph.D. in 2012. Currently a lecturer in our department who is revitalizing our CS1 course.)

Brendan Sheridan (2011 undergraduate research assistant, became a graduate student at Georgetown)

Stephanie Dinkins (Masters Spring 2012, now works with Northrop Grumman)

Amanreet Bajwa (Summer DREU student 2011, currently at Colorado School of Mines)

Shinjini Kar (Summer DREU student 2010, currently at College of Saint Scholastica in Duluth, Minnesota)

Samantha Wood (Summer DREU student 2010 and summer research student 2011, currently a Ph.D. student at the University of California, San Diego

Ryan Moore (undergraduate honors thesis, graduated in Fall 2010, currently at HP in Fort Collins)

Jonathon Roelofs (Undergraduate research assistant, tiling visualizer, graduated with BS in Spring 2011, now at Apolent)

Christie Williams (Undergraduate honors thesis student and summer research student, graduated with MCS in Spring 2011)

Alan LaMielle (Graduated with a Masters in Spring 2010, currently at VMWare)

Ryan Vail (Undergraduate research assistant, graduated Spring 2010)

Kate Ericson (Undergraduate summer research student 2008, currently a graduate student at CSU working with Shrideep Pallickara)

Jeshua Bratman (Undergraduate research assistant at CSU, graduated May 2009 with BS, currently a graduate student at University of Michigan)

Nissa Osheim and Dave Rostron, developed the idea of smashing semi-regular grids to create uniform data dependencies (see "smashing" paper at http://www.cs.colostate.edu/~mstrout/Papers/pubs-main.php).

Kiley Graim (Undergraduate Research Assistant, graduated May 2008 with BS, currently a graduate student at CSU)

Jessa Rothenberg, CRAW DMP student Summer 2007

Research
  Any students interested in participating in our research group should visit the Prospective Graduate Student website for my group and then send me email at mstrout@cs.colostate.edu.

My research interests include the areas of compilers, scientific computing, computer architecture, and software engineering, with compilers being my main focus. In many application domains, issues such as performance and reliability co-mingle with algorithmic issues resulting in domain-specific libraries and applications that are difficult to understand, reuse, and maintain. In my research, I investigate and develop compiler technology in order to automate domain-specific analyses and transformations that are currently applied by hand or not at all.

I have a number of active projects attacking the problem of how to make high performance computing more accessible for scientists doing computational modeling.

The SAIMI project (Separating Algorithm and Implementation via programming Model Injection, funded through a DOE Early Career award) will attack the obfuscation problem by providing separate interfaces for the specification of algorithms and the implementation details such as how to schedule the algorithms on parallel computer systems. We propose to inject programming models into existing host languages and provide high-level implementation abstractions to prevent algorithm obfuscation due to performance tuning. The definition of an injectable programming model is still evolving, but an initial definition is a programming abstraction like the polyhedral model or task graphs. These programming abstractions can be injected using pragmas and are constrained enough to enable the orthogonal specification of implementation details.

The main goal of the PIES project (Parallelization using Inspector/Executor Strategies, funded through an NSF CAREER grant) is the development of a Sparse Polyhedral Framework (SPF) for specifying irregular/sparse computations and enabling runtime reordering transformations of those computations through the automatic generation of the appropriate inspectors and executors. We plan to incorporate the SPF as an injectable programming model. We are also applying the SPF to communication avoiding algorithms that are the focus of the Algorithms and Software for Communication Avoidance and Communication Hiding at the Extreme Scale (CACHE Institute), an interdisciplinary project funded by the DOE from Spring 2010 through Spring 2013.

Our research group is also involved in a multi-disciplinary effort at Colorado State University to develop data analysis software for Small Angle X-ray Scattering (SAXS). One goal is to develop software design patterns and/or code generation techniques that enable iterative model development while maintaining computational efficiency. We have already contributed LookUp Table (LUT) optimizations for this effort that resulted in six fold serial speedup.

Previous projects include:

I also collaborate on research involving the polyhedral model. Here is a list of papers related to storage mapping and parameterized code generation in the polyhedral model.

Teaching
 

CS/ECE 560: Foundations of Fine-Grained Parallelism

CS 453: Introduction to Compiler Construction (Spring 2011), (Spring 2010), (Spring 2009), (Spring 2008), (Spring 2007)

CS 553: Compiler Construction (Fall 2014) (Fall 2009), (Fall 2007), (Fall 2006), (Fall 2005)

CS 270: Computer Organization (Fall 2012), (Fall 2008)

CS 653: Static and Dynamic Program Analysis (Fall 2010), (Spring 2008), (Spring 2007), (Spring 2006)

CSE 30: Computer Organization and Systems Programming
(Summer 2001 at University of California, San Diego)

Beginning Web Programming Course
(Spring 2000 at University High School in San Diego)

Software
 

IEGenLib
A library for manipulating sets and relations with uninterpreted constraints as well as affine constraints.

mjsim
Simulator for AVR assembly code and emulator for the MeggyJr.

Tiling Visualizer
Command-line and GUI tool that enables visualization of 2D loop tilings.

OpenAnalysis
Representation-independent program analysis.

Data_N_Comp_Reorder
Package for reordering data and computation in sparse matrix computations.

SPIM 7.2.1 with keepstats
Modified version of the SPIM simulator for counting the number of dynamic instructions, reads, writes, and branches.

Convolve Demo
I used this little demo program at an Upward Bound Saturday session to teach junior high and high school students about convolution.

Graphite: Python graphing package
Joe Strout and I developed Graphite for a Software Engineering course. I later made Graphite available on SourceForge.

Handy Python Scripts
Some Python scripts I wrote for running experiments, gathering data, and doing data analysis.

Recent Program Committees
 

Program committee member for PLDI 2015

Program committee member for PPoPP 2015

Publicity co-chair for Rocky Mountain Celebration of Women in Computing (RMCWiC)

Program committee member for Supercomputing 2014, technical program and BOFs.

Program committee member for Supercomputing 2014.

Program co-chair for The 15th IEEE International Workshop on Parallel and Distributed Scientific and Engineering Computing (PDSCE 2014).

Program committee member for IMPACT 2013.

Program committee member for Supercomputing 2012.

Co-chair for Rocky Mountain Celebration of Women in Computing (RMCWIC), November 1-2 2012.

Program committee for PPOPP 2012, 17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming.

Co-organizer for AD 2012.

Program committee for PASTE 2011 10th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering.

Program committee for Memory Systems Performance and Correctness ACM SIGPLAN Workshop 2011.

Programming Language Design and Implementation, PLDI 2011, Program Committee.

Co-organizer for Languages and Compilers for Parallel Computing (LCPC) 2011.

Scholarship Committee for Grace Hopper Celebration of Women in Computing, GHC 2008, 2009, 2010, 2011.

Organizing committee and program committee for The First Workshop on Advances in Message Passing ( co-located with PLDI 2010 ).

Computing Frontiers 2010.

IPDPS, IEEE International Parallel and Distributed Processing Symposium 2010.

Miscellaneous
 

Some CVS Notes I developed.

Outline for Numerical Analysis Course
I developed this course as a class project for the University Teaching and Learning in Engineering course taught by Noah Finkelstein at UCSD. The project writeup points to some useful resources for Numerical Analysis instructors.
Disclaimer: I have not taught a Numerical Analysis course yet!

CSE Grad Enrichment

  • Demo and slides for Grad Enrichment talk I did on CVS, autoconf, and doxygen (2002)
  • Mathematica Talk I did for Graduate Enrichment Series (1999)

Bio
 

Michelle is an associate professor in the computer science department at Colorado State University. Dr. Strout's main research area is high performance computing and her research interests include compilers and run-time systems, scientific computing, and software engineering. She earned her Ph.D. at the University of California, San Diego in 2003, was an Enrico Fermi Postdoctoral Scholar at Argonne National Laboratory and a Research Associate at the University of Chicago for two years, and started as an assistant professor at CSU in 2005. In 2008, Michelle received a CAREER Award from the National Science Foundation for her research in parallelization techniques for irregular applications, such as molecular dynamics simulations. In 2010, she received a DOE Early Career award to fund her research in separating the specification of scientific computing applications from the specification of implementation details such as how to parallelize such computations. Michelle lives with her partner and two boys ages 10 and 14 in beautiful Fort Collins, Colorado.

   

Contact Information

mstrout@cs.colostate.edu

Mailing Address: Computer Science Department
1873 Campus Delivery
Fort Collins, CO 80523-1873

Phone: (970) 491-4193
Fax: (970) 491-2466
Office: 244 Computer Science Building

 
mstrout@cs.colostate.edu .... October 1, 2014