From cTuning.org

(Difference between revisions)
Jump to: navigation, search
Current revision (15:51, 12 September 2015) (view source)
 
(69 intermediate revisions not shown.)
Line 1: Line 1:
-
{{CMenu:CTools|}}
+
'''''NEWS: Since 2015, we moved all related developments to our new [http://github.com/ctuning/ck/wiki Collective Knowledge Framework]! Demo of a new live repository is available [http://cknowledge.org/repo here].'''''
-
<div align="center" style="margin: 8px; float: right;">
 
-
http://ctuning.org/wiki/images/gcc-ici-structure.gif
 
-
</div>
 
-
* '''[[CTools:ICI:Downloads|Download MILEPOST GCC 4.4.0]]'''
 
-
* '''[http://ctuning.org/wiki/index.php/Special:CPredict Access online optimization predictor based on program features]
 
-
* '''[[CDatabase|Access collective optimization repository]]
 
-
* '''[[CTools:ICI|Further developments/documentation (within GCC ICI)]]
 
-
* '''[http://groups.google.com/group/ctuning-discussions Development mailing list]
 
-
* [http://socghop.appspot.com/org/home/google/gsoc2009/gcc '''Google Summer of Code'09 MILEPOST GCC extensions and plugins''' (XML representation of the compilation flow, fine-grain optimizations and instrumentation, polyhedral transformations, run-time adaptation)]
 
-
** [[CTools:ICI:Projects:Fine_Grain_Optimizations|Development page for fine-grain tuning from GSOC'09]]
 
-
*** [http://ctuning.org/wiki/index.php/CTools:ICI:Projects:GSOC09:Fine_grain_tuning documentation]
 
-
** [[CTools:ICI:Projects:Cloning|Development page for function cloning from GSOC'09]]
 
-
*** [http://ctuning.org/wiki/index.php/CTools:ICI:Projects:GSOC09:Function_cloning_and_program_instrumentation documentation]
 
-
The development of the MILEPOST GCC and MILEPOST Framework has been coordinated by [http://fursin.net/research Dr. Grigori Fursin] ([http://unidapt.org UNIDAPT group], [http://www.inria.fr/saclay INRIA, France]) within [http://www.milepost.eu EU FP6 MILEPOST project] (2006-2009). MILEPOST consortium includes INRIA, IBM Haifa, University of Edinburgh, ARC International Ltd. and CAPS Entreprise. Don't hesitate to contact Grigori if you have any questions or comments about MILEPOST framework or cTuning initiative.
 
-
MILEPOST GCC is the first machine learning enabled open-source self-tuning research compiler that can adapt to any architecture using iterative feedback-directed compilation, machine learning and collective optimization. It combines the strength of the production quality [http://gcc.gnu.org GCC] that supports more than 30 families of architectures and can compile real, large applications including Linux, and the flexibility of the [[CTools:ICI|Interactive Compilation Interface]] that transforms GCC into a research compiler. It is currently based on predictive modeling using program and machine-specific features, execution time, hardware counters and off-line training. MILEPOST GCC includes [[CTools:MilepostGCC:StaticFeatures|static program feature extractor]] developed by IBM Haifa. MILEPOST/cTuning technology is orthogonal to GCC and can be used in any future adaptive self-tuning compiler using common [[CTools:ICI|Interactive Compilation Interface]]. MILEPOST and cTuning infrastructure automates code and architecture optimization to improve execution time, code size, compilation time and other characteristics at the same time.
 
-
''Unlike other tools and projects that are either commercial, non open-source, exist only in publications or as unstable prototypes, cTuning/MILEPOST is the first open-source practical community-driven attempt to apply machine learning, statistical collective optimization and run-time adaptation inside a stable, production-quality compiler in order to simplify and automate the development of compilers, architectures, run-time systems and programs, and enable future self-optimizing smart computing systems''.
+
{{CTitle|http://ctuning.org/wiki/images/milepost_image.jpg|MILEPOST GCC|machine-learning enabled self-tuning compiler}}
-
In June, 2009, MILEPOST GCC [[CTools:ICI:Downloads|has been released]] and all further developments have been integrated with the [http://ctuning.org/ctools cTuning tools]: [http://ctuning.org/cdatabase Collective Optimization Database], [http://ctuning.org/cpredict cTuning optimization prediction web-services], [http://ctuning.org/ici Interactive Compilation Interface for GCC], [http://ctuning.org/ccc Continuous Collective Compilation Framework] to enable collaborative community-driven developments after the end of the [http://www.milepost.eu MILEPOST project] (August 2009). You are warmly welcome to join [http://ctuning.org/wiki/index.php/Community cTuning community] and follow/participate in developments and discussions using cTuning Wiki-based portal and 2 mailing lists: [http://groups.google.com/group/ctuning-discussions high volume development list] and [http://groups.google.com/group/ctuning-announce low volume announcement list].
+
{{CShortCut|milepost-gcc}}
-
We don't claim that MILEPOST GCC, MILEPOST Framework and cTuning tools can solve all optimization problems ;) but we believe that having an open research-friendly extensible compiler with machine learning and adaptive plugins based on production quality GCC that supports multiple languages and architectures opens up many research opportunities for the community and is the first practical step towards our long-term objective to enable adaptive self-tuning computing systems. With the help of the community, we hope to provide better validation of code correctness when applying complex combinations of optimizations, provide plugins for XML representation of the compilation flow, tuning of fine-grain optimizations/polyhderal GRAPHITE transformations/link-time optimizations, code instrumentation and run-time adaptation capabilities for statically compiled programs ([http://socghop.appspot.com/org/home/google/gsoc2009/gcc see Google Summer of Code'09 program]). We would also like to add support to MILEPOST GCC/cTuning tools to be able to optimize whole Linux ([http://gentoo.org Gentoo]-like) or optimize programs for mobile systems on the fly (for example, using [http://www.android.com/ Android], [http://moblin.org Moblin], etc) and extend this technology to enable realistic adaptive parallelization, data partitioning and scheduling for heterogeneous multi-core systems using statistical and machine learning techniques.
+
{{CMenu:CTools|}}
-
We are very grateful to [[Community:People|all our colleagues and users]] for providing valuable feedback or contributing to the cTuning/MILEPOST projects.
+
{{NEWS}}
-
'''''Note:''' cTuning is an ongoing evolving project - please be patient and tolerant to the community and help us with this collaborative effort!''  
+
<div style="color:red; font-weight:bold; "><H2>
 +
* MILEPOST GCC is now a part of the [[CTools:CTuningCC|cTuning Compiler Collection (cTuning CC)]].
 +
* Reference publication about MILEPOST GCC in IJPP'11 is now available [http://fursin.net/wiki/index.php5?title=Research:Dissemination#FKMP2011 here].
 +
</H2></div>
-
'''Some MILEPOST/cTuning related publications:'''<BR>
 
-
* [http://unidapt.org/index.php/Dissemination#FMTP2008 "MILEPOST GCC: machine learning based research compiler"]
 
-
* [http://unidapt.org/index.php/Dissemination#FT2009 "Collective Optimization"]
 
-
* [http://unidapt.org/index.php/Dissemination#Fur2009 "Collective Tuning Initiative: automating and accelerating development and optimization of computing systems"]
 
-
'''Brief motivation:'''<BR>
+
MILEPOST GCC is the first practical attept to build machine learning enabled open-source self-tuning production (and research) compiler that can adapt to any architecture using iterative feedback-directed compilation, machine learning and collective optimization. It is based on production quality [http://gcc.gnu.org GCC] that supports more than 30 families of architectures and can compile real, large applications including Linux, and on [[CTools:ICI|Interactive Compilation Interface]] that provides plugin system to access internals of compilers. MILEPOST GCC attempts to correlate [[CTools:MilepostGCC:StaticFeatures|program features]] and [[CDatabase|program optimizations]] during empirical iterative compilation to predict good optimizations for unseen programs based on prior learning. MILEPOST and cTuning infrastructure automates code and architecture optimization to improve execution time, code size, compilation time and other characteristics at the same time. This technology is not GCC-dependent and can be used in any compiler using common [[CTools:ICI|Interactive Compilation Interface]] and compiler independent plugins. The first version of the MILEPOST GCC and [[CTools:MilepostFramework|MILEPOST framework]] has been created during the [http://cTuning.org/project-milepost MILEPOST project]. All public MILEPOST developments have been coordinated by [http://fursin.net/research Grigori Fursin]. More information can be found in the following paper about [http://unidapt.org/index.php/Dissemination#FMTP2008 MILEPOST GCC].
-
It may not always be visible to the IT users, but developing and optimizing current and emerging computing systems using available technology is too time consuming and costly.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-tuning intelligent compiler that automatically learns the best optimization heuristics based on combining feedback-directed iterative compilation and machine learning. MILEPOST GCC is a machine learning based compiler that automatically adjusts its optimization heuristics to improve execution time, code size, or compilation time of specific programs on multiple architectures.  
+
-
Currently, we use several iterative search strategies within CCC framework to find combinations of good optimization flags to substitute GCC default optimization levels for a particular architecture (such as -O0,-O1,-O2,-O3,-Os which we will not need in the future adaptive compilers) or tune optimization passes on a function-level for a particular program. Our preliminary experimental results (some are now available in the [[CDatabase|Collective Optimization Database]]) show that it is possible to considerably reduce execution time and code size of various benchmarks (MiBench, MediaBench, EEMBC, SPEC) on a range of platforms (x86, x8664, IA64, ARC, Loongson/Godson, etc) entirely automatically.
+
<div align="center">http://ctuning.org/wiki/images/img-milepost-gcc-structure.gif</div>
-
Typical non-trivial distribution of optimization points in the 2D space of speedups vs code size of a ''susan_corners'' program on AMD Athlon64 3700+ architecture with GCC 4.2.2 during automatic program optimization using ''ccc-run-glob-flags-rnd-uniform'' plugin from [[CTools:CCC|CCC framework]] with uniform random combinations of more than 100 global compiler flags (each flag has 50% probability to be selected for a given combination of optimizations). Similar data for other benchmark, datasets and architectures is available in the [[CDatabase|Collective Optimization Database]]. cTuning technology helps users find or predict optimial optimization points in such complex spaces using "one-button" approach.<BR>
+
* '''Background:'''
-
<div align="center">http://ctuning.org/wiki/images/example_speedups_susan_c_amd64.gif</div>
+
**[[CTools:MilepostGCC:Motivation|Motivation and history]]  
 +
**[[CTools:MilepostGCC:Usage|Usage scenarios / stories]]
 +
**[[CTools:MilepostGCC:Resources|Resources (links, publications, etc)]]
-
MILEPOST GCC can be used interactively in research on adaptive computing through the [[CTools:ICI|Interactive Compilation Interface]] (we currently support optimization pass selection and reordering, plugins and event mechanism to invoke any passes on demand (such as program feature extraction pass) or tune cost-models of specific transformations within passes). [[CTools:CCC|CCC framework]] provides a milepost-gcc wrapper that detects -ml flag, extracts program features, queries [[CDatabase|optimization prediction web-service connected to optimization repository]] and substitutes default optimizations with the suggested ones based on program similarities and machine learning to improve execution time or code size on the fly.
+
* [[CTools:MilepostGCC:Downloads|'''Downloads''']]
-
We hope that this technology will considerably minimize repetitive time consuming tasks and human intervention when optimizing computing systems and will reduce time to market for new products thus boosting innovation and novel research.
+
* [[CTools:MilepostGCC:Documentation|'''Documentation''']]
 +
 
 +
* [[CTools:MilepostGCC:Feedback|'''User suggestions and feedback''']]
 +
 
 +
* [[CTools:MilepostGCC:Dev:Bugs|'''Bug reports''']]
 +
 
 +
* [[CTools:MilepostGCC:FAQs|'''FAQs''']] - Does MILEPOST GCC solve all optimization problems? How similar is it ACOVEA tool? etc...
 +
 
 +
* '''Related:'''
 +
** [http://ctuning.org/wiki/index.php/Special:CPredict Online predictor of optimizations based on program features].
 +
** [[CDatabase|Collective optimization repository]] to continuously collect profitable optimization cases from the community that improve program execution time, code size, compilation time, etc...
 +
** [[CTools:CCC|CCC framework]] - Continuous Collective Compilation Framework to automate search of profitable optimization cases to improve program execution time, code size, compilation time, etc. It is used to train MILEPOST GCC and has some similarities with the useful [http://www.coyotegulch.com/products/acovea ACOVEA tool] but also allows automatic sharing of optimization knowledge with the community in the [[CDatabase|Collective Optimization Database]] and uses plugins to implement various search techniques besides genetic algorithms.
 +
** [http://cTuning.org/project-milepost Official info for the MILEPOST project (2006-2009)].
 +
 
 +
----
 +
 
 +
<div align="center">
 +
{| cellspacing="0" cellpadding="3" border="0" width="100%" style="color: black;"
 +
|-
 +
| align="center" style="background: rgb(0, 100, 159) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: white;" | '''MILEPOST GCC friends:'''
 +
|-
 +
| align="center" valign="top" | {{CTools:MilepostGCC:Logo_Friends}}
 +
|}
 +
</div>

Current revision

NEWS: Since 2015, we moved all related developments to our new Collective Knowledge Framework! Demo of a new live repository is available here.





milepost_image.jpg

MILEPOST GCC

machine-learning enabled self-tuning compiler
Web shortcut: http://cTuning.org/milepost-gcc
Navigation: cTuning.org > CTools 

NOTES:

cTuning Google discussions list


MILEPOST GCC is the first practical attept to build machine learning enabled open-source self-tuning production (and research) compiler that can adapt to any architecture using iterative feedback-directed compilation, machine learning and collective optimization. It is based on production quality GCC that supports more than 30 families of architectures and can compile real, large applications including Linux, and on Interactive Compilation Interface that provides plugin system to access internals of compilers. MILEPOST GCC attempts to correlate program features and program optimizations during empirical iterative compilation to predict good optimizations for unseen programs based on prior learning. MILEPOST and cTuning infrastructure automates code and architecture optimization to improve execution time, code size, compilation time and other characteristics at the same time. This technology is not GCC-dependent and can be used in any compiler using common Interactive Compilation Interface and compiler independent plugins. The first version of the MILEPOST GCC and MILEPOST framework has been created during the MILEPOST project. All public MILEPOST developments have been coordinated by Grigori Fursin. More information can be found in the following paper about MILEPOST GCC.

img-milepost-gcc-structure.gif
  • FAQs - Does MILEPOST GCC solve all optimization problems? How similar is it ACOVEA tool? etc...

MILEPOST GCC friends:
logo_unidapt1.gif logo_inria.gif logo_uvsq1.jpg logo_embecosm.gif logo_ue.gif logo_ibm.jpg logo_arc.gif logo_milepost.jpglogo_ict.gif logo_hipeac.jpg
Locations of visitors to this page