Flamingo is a general-purpose auto-tuning framework for software optimisation.

The software automates the process of finding optimal settings for program parameters, even reducing the number of tests needed.

These parameters would typically control how a program performs, for example the sub-problem size a large problem is broken down into.


Introductory Tutorial — Provides a straightforward introduction to the tuner and what it can do.

User's Guide — A more detailed description of each of the tuner's features.

Developer Documentation — Brief introduction to how the tuner is designed and developed.

Several small example programs are included.


Flamingo is open source software, released under the BSD 2-Clause Licence. The latest version is available for download here, including the documentation and example programs:

Extract this tarball into your home directory and run ~/Autotuning/autotune for a demonstration.


Flamingo began as my third year undergraduate project at university, supervised by Mike Giles.

My project report is available here and contains lots of technical detail on the design of the original system (refers to v0.11).

The project was developed as part of ongoing work on OP2 and has been partially funded by an EPSRC vacation bursary.