<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="publications.xsl"?>

<publications>
    <inproceedings title="Optimization Space Exploration of the FastFlow Parallel Skeleton Framework"
        bibtex="leather_opt-expl-skeltons_hlpgpu12"
        author="Alexander Collins and Christian Fensch and Hugh Leather"
        year="2012"
        month="January"
        day="23"
        location="Paris, France"
        booktitle="HLPGPU '12: Proceedings of High-Level Programming for Heterogeneous and Hierarchical Parallel Systems"
        >
        <file name="paper (pdf)" path="skeltons_hlpgpu12.pdf"/>
        <abstract>
Parallel skeletons are a structured parallel programming abstrac-
tion that provide programmers with a predefined set of algorithmic
templates that can be combined, nested and parametrized with se-
quential code to produce complex programs. The implementation
of these skeletons is currently a manual process, requiring human
expertise to choose suitable implementation parameters that pro-
vide good performance. This paper presents an empirical explo-
ration of the optimization space of the FastFlow parallel skeleton
framework. We performed this using a Monte Carlo search of a ran-
dom subset of the space, for a representative set of platforms and
programs. The results show that the space is program and platform
dependent, non-linear, and that automatic search achieves a signif-
icant average speedup in program execution time of 1.6× over a
human expert. An exploratory data analysis of the results shows a
linear dependence between two of the parameters, and that another
two parameters have little effect on performance. These properties
are then used to reduce the size of the space by a factor of 6, re-
ducing the cost of the search. This provides a starting point for au-
tomatically optimizing parallel skeleton programs without the need
for human expertise, and with a large improvement in execution
time compared to that achievable using human expert tuning.
        </abstract>
    </inproceedings>
    <inproceedings title="Raced Profiles: Efficient Selection of Competing Compiler Optimizations"
	    bibtex="leather_racedprofiles_lctes09"
	    author="Hugh Leather and Michael O'Boyle and Bruce Worton"
	    year="2009"
	    month="June"
	    day="25-28"
	    location="Dublin, Ireland"
	    booktitle="LCTES '09: Proceedings of the ACM SIGPLAN/SIGBED 2009 Conference on Languages, Compilers, and Tools for Embedded Systems">
	    <file name="paper (pdf)" path="racedprofiles_lctes09.pdf"/>
	    <file name="slides (open office)" path="racedprofiles_lctes09.odp"/>
        <abstract>
Many problems in embedded compilation require one set of optimizations
to be selected over another based on run time performance.
Self-tuned libraries, iterative compilation and machine
learning techniques all compare multiple compiled program versions.
In each, program versions are timed to determine which has
the best performance.<br/>
The program needs to be run multiple times for each version
because there is noise inherent in most performance measurements.
The number of runs must be enough to compare different versions,
despite the noise, but executing more than this will waste time
and energy. The compiler writer must either risk taking too few
runs, potentially getting incorrect results, or taking too many runs
increasing the time for their experiments or reducing the number
of program versions evaluated. Prior works choose constant size
sampling plans where each compiled version is executed a fixed
number of times without regard to the level of noise.<br/>
In this paper we develop a sequential sampling plan which can
automatically adapt to the experiment so that the compiler writer
can have both confidence in the results and also be sure that no
more runs were taken than were needed. We show that our system
is able to correctly determine the best optimization settings with
between 76% and 87% fewer runs than needed by a brute force,
constant sampling size approach.We also compare our approach to
JavaSTATS(10); we needed 77% to 89% fewer runs than it needed.    
        </abstract>
    </inproceedings>

    <inproceedings title="Automatic Feature Generation for Machine Learning Based Optimizing Compilation"
        bibtex="leather_autofeatgen_cgo09"
        author="Hugh Leather and Edwin Bonilla and Michael O'Boyle"
        year="2009"
        month="March"
        location="Seattle, United States of America"
        booktitle="CGO '09: Proceedings of the International Symposium on Code Generation and Optimization">
        <file name="paper (pdf)" path="autofeatures_cgo09.pdf"/>
        <file name="slides (open office)" path="autofeatures_cgo09.odp"/>
        <file name="slides no animation (pdf)" path="autofeatures_cgo09.no-annimation.pdf"/>
        <abstract>
Recent work has shown that machine learning can automate and in some
cases outperform hand crafted compiler optimizations.  Central to
such an approach is that
machine learning techniques typically rely upon summaries or
<i>features</i> of the program. The quality of these features is
critical to the accuracy of the resulting machine learned algorithm;
no machine learning method will work well with poorly chosen features.
However, due to the size and complexity of programs, theoretically there are
an infinite number of potential features to choose
from. The compiler writer now has to expend effort in choosing the
best features from this space. This paper develops a novel mechanism
to automatically find those features which most improve the quality
of the machine learned heuristic. The feature space is described by
a grammar and is then searched with genetic programming and
predictive modeling. We apply this technique to loop unrolling in
GCC 4.3.1 and evaluate our approach on a Pentium 6. On a
benchmark suite of 57 programs, GCC's hard-coded heuristic achieves
only 3% of the maximum performance available, while a state of the
art machine learning approach with hand-coded features obtains
59%. Our feature generation technique is able to achieve 76% of the maximum
available speedup, outperforming existing approaches.
</abstract>
    </inproceedings>
				

    <inproceedings title="MILEPOST GCC: machine learning based research compiler"
        bibtex="leather_milepostgcc_gccsum08"
        author="Grigori Fursin and Cupertino Miranda and Olivier Temam and Mircea Namolaru and Elad Yom-Tov and Ayal Zaks and Bilha Mendelson and Phil Barnard and Elton Ashton and Eric Courtois and Francois Bodin and Edwin Bonilla and John Thomson and Hugh Leather and Chris Williams and Michael O'Boyle"
        booktitle="Proceedings of the GCC Developers' Summit"
        year="2008"
        month="June"
        location="Ottawa, Canada">
        <file name="paper (pdf)" path="milepostgcc_gccsummit08.pdf"/>
        <abstract>
            Tuning hardwired compiler optimizations for rapidly
            evolving hardware makes porting an optimizing compiler
            for each new platform extremely challenging. Our
            radical approach is to develop a modular, extensible,
            self-optimizing compiler that automatically learns the
            best optimization heuristics based on the behavior of the
            platform. In this paper we describe MILEPOST GCC,
            a machine-learning-based compiler that automatically
            adjusts its optimization heuristics to improve the execution
            time, code size, or compilation time of specific
            programs on different architectures. Our preliminary
            experimental results show that it is possible to considerably
            reduce execution time of the MiBench benchmark
            suite on a range of platforms entirely automatically.
        </abstract>
    </inproceedings>

    <inproceedings title="Automatic Feature Generation for Setting Compilers Heuristics"
        bibtex="leather_autofeatgen_smart08"
        author="Hugh Leather and Elad Yom-Tov and Mircea Namolaru and Ari Freund"
        year="2008"
        month="January"
        booktitle="SMART'08: 2nd Workshop on Statistical and Machine learning approaches to ARchitectures and compilaTion"
        location="Göteborg, Sweden">
        <file name="paper (pdf)" path="autofeatures_smart08.pdf"/>
        <file name="slides (open office)" path="autofeatures_smart08.odp"/>
        <abstract>
            Heuristics in compilers are often designed by manually analyzing sample programs.
            Recent advances have successfully applied machine learning to automatically generate
            heuristics. The typical format of these approaches reduces the input loops, functions
            or programs to a finite vector of features. A machine learning algorithm then learns
            a mapping from these features to the desired heuristic parameters. Choosing the right
            features is important and requires expert knowledge since no machine learning tool will
            work well with poorly chosen features.<br/>
            This paper introduces a novel mechanism to generate features. Grammars describing
            languages of features are defined and from these grammars sentences are randomly
            produced. The features are then evaluated over input data and computed values are
            given to machine learning tools.<br/>
            We propose the construction of domain specific feature languages for different purposes
            in different parts of the compiler. Using these feature languages, complex, machine
            generated features are extracted from program code. Using our observation that
            some functions can benefit from setting different compiler options, while others cannot,
            we demonstrate the use of a decision tree classifier to automatically identify the former
            using the automatically generated features.<br/>
            We show that our method outperform human generated features on problems of loop
            unrolling and phase ordering, achieving a statistically significant decrease in run-time
            compared to programs compiled using GCC’s heuristics.
        </abstract>
    </inproceedings>

    <inproceedings title="Emergency Evacuation using Wireless Sensor Networks"
        bibtex="leather_evac_lcn07"        
		author="Barnes M and Leather H and Arvind D K"
		booktitle="Proceedings of the 32nd IEEE Conference on Local Computer Networks (LCN 2007) - Volume 00"
		year="2007">
		<file name="paper (pdf)" path="evac_lcn07.pdf"/>
		<abstract>
    		This paper presents a distributed algorithm to direct
            evacuees to exits through arbitrarily complex building layouts
            in emergency situations. The algorithm finds the safest paths
            for evacuees taking into account predictions of the relative
            movements of hazards, such as fires, and evacuees. The algorithm
            is demonstrated on a 64 node wireless sensor network test
            platform and in simulation. The results of simulations are shown
            to demonstrate the navigation paths found by the algorithm.
		</abstract>
    </inproceedings>

	<talk title="How to Give a Research Presentation"
	    location="Firbush, Scotland"
	    year="2011" month="October" day="21"
		venue="PhD Induction 2011">
		<file name="slides (open office)" path="how-to-do-a-conference-presentation.odp"/>
		<file name="slides (pdf)" path="how-to-do-a-conference-presentation.pdf"/>
    </talk>
	<talk title="How to Give a Research Presentation"
	    location="Edinburgh, Scotland"
	    year="2011" month="May" day="24"
		venue="SICSA Conference 2011">
		<file name="slides (open office)" path="how-to-do-a-conference-presentation.odp"/>
		<file name="slides (pdf)" path="how-to-do-a-conference-presentation.pdf"/>
    </talk>
	<talk title="Machine Learning in Compilers"
	    location="Austin, Texas, USA"
	    year="2009" month="May" day="27"
		venue="ACES, University of Texas">
		<file name="slides (open office)" path="mlincompilers_riceandut09.odp"/>
    </talk>
	<talk title="Machine Learning in Compilers"
	    location="Houston, Texas, USA"
	    year="2009" month="May" day="26"
		venue="Rice University">
		<file name="slides (open office)" path="mlincompilers_riceandut09.odp"/>
    </talk>
	<talk title="Machine Learning in Compilers"
	    location="Mountain View, California, USA"
	    year="2009" month="May" day="21"
		venue="Google Technical Talks">
		<file name="slides (open office)" path="mlincompilers_google09.odp"/>
    </talk>
	<talk title="Learning Compilers for Configurable Processors"
	    location="Seoul, S. Korea"
	    year="2008" month="June" day="16-17"
		venue="Korea-EU Cooperation Forum on ICT">
		<file name="slides (pdf)" path="ict_seoul_2008.pdf"/>
    </talk>
</publications>

