[m-dev.] Summer student project for Mercury

Ralph Becket rafe at cs.mu.OZ.AU
Thu Sep 8 13:39:55 AEST 2005

Hi Aaron,

I hope it's not too late to add another Summer student project to the
web page:

Exploring the space of Mercury optimizations
The Mercury compiler implements a wide range of code transformations
intended to optimize users' programs.  These transformations include
such things as code inlining, loop unrolling, generating specialised
versions of polymorphic functions for known types, and so forth.  Many
of these transformations can be enabled or disabled by specifying
options to the Mercury compiler.
Different transformations, and combinations of transformations, will have
different effects on different programs: hopefully most of the time
they will make programs run faster, but occasionally a transformation
will have no effect or, worse, make a program run more slowly.  The
Mercury compiler includes some default optimisation levels (from -O0 to
-O6) which turn on various subsets of transformations, allowing the
programmer to trade off compilation time for efficiency.  Unfortunately,
there is no guarantee that code compiled at -O6 will not run more slowly
than code compiled at -O5 or even -O3!
This project would be to write a program that would try to find the
optimal set of Mercury compiler options for any given program on some
given inputs.  Exhaustive search is not feasible because the number of
possible combinations of options is too large.  Instead, the search
program will have to use a combination of local search techniques, such
as hill climbing or simulated annealing.  A successful project will be
useful not just for Mercury programmers, but also the Mercury
developers, and could conceivably also work for compilers for other
<i>Supervisor:</i><a href="http://www.cs.mu.oz.au/~rafe">Ralph Becket</a>
Preferred knowledge: good programming skills.
Knowledge of Mercury or local search techniques is not strictly
required; we will teach it to a qualified candidate.

mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au

More information about the developers mailing list