Undergraduates (University of Chicago)
We offer guided projects for undergraduates interested in trying out research. These can be on a trial basis, for credit (Independent Study or Honors Thesis work), or --- depending on availability and experience --- paid as part of the National Science Foundation Research Experience for Undergraduates (NSF REU) program. We also support the joint BS/MS degree project through a set of potential projects, listed here.
These projects are typically one to two quarters in duration and consist of a mix of paper reading, implementation, evaluation, and paper writing.
Ph.D. Students and Post-Docs
We are looking for bright undergraduates looking to do compilers research as Ph.D. students either at the University of Chicago or Rochester Institute of Technology. Contact John Reppy for the University of Chicago and Matthew Fluet for the Rochester Institute of Technology.
We are also looking for a student who has or is about to complete their dissertation for a post-doctoral position at Rochester. This work will extend Manticore with further support for both nondeterminism and shared state. Contact Matthew Fluet for more information.
Porting the Programming Language Shootout benchmarks to Manticore. We are trying to improve our baseline code performance on simple programs relative to other compilers (especially GCC). This work will also involve looking at the performance numbers and our generated code to help identify where we are generating bad code.
Tuning the garbage collector. Choosing the correct size of the nursery, heap chunks, and total global memory sizes is machine-specific and is does not even obviously have best choices across all benchmark programs. This work should run some experiments to identify both how we are doing now and what tuning we could do both always and situationally.
Better handling of small allocated constants (i.e. boxed 0.0). These should be allocated only once per program run, but right now we will re-create them over and over if the program places those constants into a heap-allocated memory location.
Porting the HPC Challenge benchmarks to Manticore. These benchmarks demonstrate parallel performance on problems interesting to the high-performance computing community and are part of our effort to reach out to other areas outside just the functional programmers.
Porting Matthew's summer school notes into a Real Manual/walkthrough
Replace our current perfcounter work with LIKWID support for better measurement of characteristics such as L3 cache miss rates separated by program, minor, major, and global GC.
Monomorphisation turns a polymorphic program into a monomorphic one by instantiating polymorphic values and datatypes for each type at which they are used. We would like to do this on our AST representation, as it allows significantly more optimization in later phases of the compiler.
Better closure conversion. Currently, we use optimized flat closures, but we would like to move to safe-for-space closures.
Extend the implementation of Concurrent ML with support for timing-based events. For example, delivering an event every 30 milliseconds for a thread to perform work.
Refer to the BS/MS Projects page for some example larger projects.