The Adl project is aimed at exploring techniques for
targeting a small functional language, called Adl, to message-passing
parallel machines. A prototype implementations has been
built that translates point-wise Adl programs into point-free BMF,
optimises code to eliminate most superflous data flows between
operations and then parallelises the resulting code.
The original implementation uses rewrite rules, specified as inference rules
using Natural-Semantics to specify the compilation process. The compilation
process was then executed using the Centaur system. The inference
rules apply changes to the code in an incremental, systematic and
pervasive fashion. Heavy use is made of normalisation to bring code
to a form that is more easily optimised.
Ongoing work has reimplemented the front-end of this
compiler in Stratego, a language
for strategic rewriting. Results so far are promising producing
good performance on a range of benchmarks using a much smaller
set of rules that the original implementation.
An Instrumented version of the compiler, able to produce
a complete derivation trace of the optimisation process has
been derived from the original optimiser with the help
of Meta-Stratego. These traces have been linked to a performance
model to produce the cost-traces below.
Work continues on the development of rules to perform
common sub-expression elimination, the prevention of redundant
re-optimisation of code. Experiments also continue on automatic
evolution of some parts of the optimiser.