From cTuning.org

(Difference between revisions)
Jump to: navigation, search
Current revision (15:51, 12 September 2015) (view source)
 
(41 intermediate revisions not shown.)
Line 1: Line 1:
 +
'''''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].'''''
 +
 +
 +
{{CTitle|http://ctuning.org/wiki/images/logo_ccc.gif|Continuous Collective Compilation Framework|Enabling collective optimization}}
{{CTitle|http://ctuning.org/wiki/images/logo_ccc.gif|Continuous Collective Compilation Framework|Enabling collective optimization}}
-
{|border="0" cellpadding="15" cellspacing="0"
+
{{CShortCut|ccc}}
-
| valign="top" |
+
{{CMenu:CTools|}}
{{CMenu:CTools|}}
-
Continuous Collective Compilation Framework (CCC) is a collaborative modular plugin-enabled R&D infrastructure to automate program and architecture optimizations (i.e. iteratively search for ''good'' program and architecture optimizations in a feedback-directed manner) and gather various static and dynamic optimization profile data in a [[CDatabase|Collective Optimization Database]]. It supports both global program optimization and fine-grain procedure, loop or instruction level optimizations if compiler supports [[CTools:ICI|Interactive Compilation Interface]]. It is used to help end-users optimize their programs, libraries and whole OS automatically (improve execution time/code size, etc), test and tune compiler optimization heuristic. It also enables collaborative R&D and optimization knowledge reuse with statistical and machine learning techniques ({{Ref|FMTP2008}}, {{Ref|FT2009}}).
+
{{NEWS}}
 +
 
 +
Continuous Collective Compilation Framework (CCC) is a collaborative modular plugin-enabled R&D infrastructure to automate program and architecture optimizations (i.e. iteratively search for ''good'' program and architecture optimizations in a feedback-directed manner) and gather various static and dynamic optimization profile data in a [[CDatabase|Collective Optimization Database]]. It supports both global program optimization and fine-grain procedure, loop or instruction level optimizations if compiler supports [[CTools:ICI|Interactive Compilation Interface]]. CCC is used to help end-users optimize their programs, libraries and whole OS automatically (improve execution time/code size, etc), test and tune compiler optimization heuristic. It also enables collaborative R&D and optimization knowledge reuse with statistical and machine learning techniques ({{Ref|FT2010}}, {{Ref|FMTP2008}}, {{Ref|FT2009}}).
 +
Current version of CCC supports optimization of ''cBench/MiBench/EEMBC/Polyhedron/SPEC_CPU95,2000,2006'' benchmark suites.
 +
 
 +
'''''Some more scientific aspects/details on Collective Optimization can be found in the following [http://fursin.net/wiki/index.php5?title=Research:Dissemination#FT2010 ACM TACO'10 publication]'''''.
CCC Framework is a community-driven project - you are welcome to [[Join|join]] the project, [[CTools:CCC:Projects|extend]] it, provide smart search and data analysis plugins, leave [[CTools:CCC:Feedback|feedback]] and add your optimization data to help the community. You can also communicate with cTuning community through our [[Community|mailing lists]].
CCC Framework is a community-driven project - you are welcome to [[Join|join]] the project, [[CTools:CCC:Projects|extend]] it, provide smart search and data analysis plugins, leave [[CTools:CCC:Feedback|feedback]] and add your optimization data to help the community. You can also communicate with cTuning community through our [[Community|mailing lists]].
Line 24: Line 32:
* [[CTools:CCC:Documentation|'''Documentation and APIs''']]
* [[CTools:CCC:Documentation|'''Documentation and APIs''']]
-
* '''[[CTools:CCC:Feedback|User suggestions and feedback]]'''
+
* [[CTools:CCC:FAQs|'''FAQs''']] - Why do we need CCC framework? Is it similar to ACOVEA tool? etc...
* '''[[CTools:CCC:Projects|Projects to extend CCC Framework (development plan)]]'''
* '''[[CTools:CCC:Projects|Projects to extend CCC Framework (development plan)]]'''
Line 33: Line 41:
**[[CTools:CCC:Dev:Bugs|Bug reports]]
**[[CTools:CCC:Dev:Bugs|Bug reports]]
-
|
+
* '''Related:'''
 +
** [[CDatabase|Collective optimization repository]] to continuously collect profitable optimization cases from the community that improve program execution time, code size, compilation time, etc...
 +
** [[CTools:MilepostGCC|MILEPOST GCC]] - machine learning-enabled compiler that automatically correlates program features and optimizations collected using CCC framework to be able to predict profitable optimizations to improve execution time, code size and compilation time for unseen programs.
-
{{News|
+
** [http://www.coyotegulch.com/products/acovea ACOVEA] - Using Natural Selection to Investigate Software Complexities
-
 
+
** [http://www.research.ibm.com/haifa/projects/systems/cot/esto/index.html IBM Expert System for Tuning Optimizations (ESTO)]
-
* '''2010.January.28''' - Proceedings and slides from [[Dissemination:Workshops:GROW10:Program|GROW'10]] and [[Dissemination:Workshops:SMART10:Program|SMART'10]] are now available online.
+
** [http://www.pathscale.com pathopt tool from EKOPath compiler suite]
-
 
+
** [http://software.intel.com/en-us/articles/intel-software-autotuning-tool Intel auto-tuning tool]
-
* '''2010.January.25''' - We added [http://www.prism.uvsq.fr/~touati/sw/ST Speedup Test beta plugin] to [http://cTuning.org/cdatabase cTuning collective optimization database] to enable precise and rigorous statistical analysis of the performance of benchmarks.
+
----
-
 
+
-
* '''2010.January.4''' - Call for participation: GROW'10 and SMART'10 workshops will be held on the 23rd and 24th of January in Pisa, Italy co-located with the [http://www.hipeac.net/conference/pisa/program HiPEAC conference]. Preliminary programs are available: [http://ctuning.org/wiki/index.php/Dissemination:Workshops:SMART10:Program SMART'10 program] and [http://ctuning.org/wiki/index.php/Dissemination:Workshops:GROW10:Program GROW'10 program].
+
-
 
+
-
*'''2010.January.1''' - We wish you all a very happy and prosperous New Year with lots of exciting achievements maybe even related to cTuning technology ;) !
+
-
 
+
-
*'''2009.November.11''' - Small [http://cTuning.org/ccc CCC] analysis plugins update available at SVN to speedup queries when dealing with large amount of optimization data in [http://cTuning.org/cdatabase cDatabases] (gigabytes of data).
+
-
 
+
-
*'''2009.November.7''' - Submission deadline for [http://cTuning.org/workshop-smart10 SMART'10 workshop] has been extended until the 22nd of November, 2009.
+
-
 
+
-
*'''2009.October.2''' - We successfully passed the final [http://www.milepost.eu MILEPOST] review and the project is officially over. We would like to thank all the partners from the University of Edinburgh, IBM Haifa, CAPS and ARC for a great collaborative work during last 3 years and [http://cTuning.org/community cTuning community] for a very interesting feedback and extensions! We released all the tools from the project and hope to continue extending them within community-driven [http://cTuning.org cTuning.org]. This infrastructure should open up many interesting research opportunities for performance auto-tuning based on statistical and machine learning techniques so we hope to see many more interesting extensions to the MILEPOST/cTuning technology soon ;) !..
+
-
 
+
-
*'''2009.September.25''' - New CFP for [http://ctuning.org/workshop-smart10 SMART'10 workshop] co-located with HiPEAC'10 conference in Pisa, Italy is now available. [http://www.cs.rice.edu/~keith Prof. Keith Cooper] from Rice University kindly agreed to give a keynote talk.
+
-
 
+
-
*'''2009.September.22''' - Congratulations to Dr.Christophe Dubach who has won a presitigious BCS/CPHC Distinguished Dissertation Award for his thesis "Using Machine-Learning to Efficiently Explore the Architecture/Compiler Co-Design Space" supervised by Prof. Michael O'Boyle. This topic is related to cTuning technology!
+
-
 
+
-
*'''2009.September.1''' - The documentation of [http://ctuning.org/milepost-gcc MILEPOST GCC]/[http://ctuning.org/ici GCC ICI] extensions by Yuanjie and Liang during GSOC'09 program is now available: [http://ctuning.org/wiki/index.php/CTools:ICI:Projects:GSOC09:Function_cloning_and_program_instrumentation Function cloning and program instrumentation] and [http://ctuning.org/wiki/index.php/CTools:ICI:Projects:GSOC09:Fine_grain_tuning Fine grain program tuning]. We would like to fully test and sync these developments with mainline GCC within next month or two.
+
-
 
+
-
*'''2009.August.05''' - The colleagues from the [http://unidapt.org UNIDAPT Group] started investigating the use of [http://ctuning.org cTuning]/[http://www.milepost.eu MILEPOST] technology and the [http://ctuning.org/unidapt UNIDAPT framework] to predict good optimization and parallelization schemes for hybrid heterogeneous CPU/GPU-like architectures together with [http://www.caps-entreprise.com CAPS Entreprise] based on run-time adaptation and profiling, empirical iterative compilation, statistical analysis, machine learning, program and dataset features and run-time decision trees ({{Ref|FT2009}}, {{Ref|LCWP2009}}, {{Ref|Fur2009}}, {{Ref|JGVP2009}}, {{Ref1|TWFP2009}}, {{Ref|FMTP2008}}, {{Ref|LFF2007}}, {{Ref|FCOP2005}}). They plan to add new optimization cases to the [http://ctuning.org/cdatabase Collective Optimization Database] in Autumn, 2009.
+
-
 
+
-
*'''2009.July.27''' - The paper "Portable Compiler Optimization Across Embedded Programs and Microarchitectures using Machine Learning" ({{Ref|DJBP2009}}) has been accepted for the [http://www.microarch.org/micro42 42nd IEEE/ACM International Symposium on Microarchitecture (MICRO)]. The research has been led by the colleagues from the University of Edinburgh - congratulations!
+
-
 
+
-
*'''2009.July.22''' - cTuning-related CFP: [http://ctuning.org/workshop-smart10 SMART'10] and [http://ctuning.org/workshop-grow10 GROW'10] workshops will be co-located with [http://www.hipeac.net/conference HiPEAC'10 conference] in Pisa, Italy at the end of January, 2009. You are warmly invited to submit your novel research results and developments to our workshops! At the websites of these workshops you can find all information about topics, PC, deadlines and submission procedures.
+
-
 
+
-
*'''2009.July.15''' - New optimization cases to improve execution time, code size and compilation time are now available in [http://ctuning.org/cdatabase Collective Optimization Database] for [http://ctuning.org/cbench cBench], [http://www.eembc.org EEMBC], [http://www.spec.org SPEC] and other applications with multiple datasets using [http://ctuning.org/milepost-gcc MILEPOST GCC 4.4.0] and 2 architectures ([http://www.intel.com Intel] and [http://www.amd.com AMD]) from [http://www.grid5000.fr GRID5000] (infrastructure for large scale parallel and distributed computing research).
+
-
 
+
-
*'''2009.July.08''' - The preprint of a paper "Collective Tuning Initiative: automating and accelerating development and optimization of computing systems" describing cTuning infrastructure is now available online ({{Ref|Fur2009}}).
+
-
 
+
-
*'''2009.June.29''' - Stable MILEPOST GCC 4.4.0 has been [[CTools:MilepostGCC|released]]. Follow further community developments at [http://ctuning.org/ici cTuning GCC ICI page] and [http://groups.google.com/group/ctuning-discussions cTuning development mailing list].<BR>Next, we plan to use MILEPOST/cTuning technology to enable realistic adaptive parallelization, data partitioning and scheduling for heterogeneous multi-core systems using statistical and machine learning techniques.
+
-
 
+
-
*'''2009.June.26''' - The pdf of the paper that describes Collective Tuning Infrastructure and cTuning concept (presented at the GCC Summit'09) will be available in a few weeks [http://unidapt.org/index.php/Dissemination#Fur2009 here].
+
-
 
+
-
*'''2009.June.10''' - Extended version of the "Collective Optimization" paper ({{Ref|FT2009|}}) describing collective tuning concept has been accepted for ACM Transactions on Architecture and Code Optimization (TACO).
+
-
 
+
-
* '''2009.June.01''' - After nearly 1 year of developments we released/updated all our open-source collaborative [[CTools|R&D tools]]:
+
-
** fully redesigned and documented [[CTools:ICI|Interactive Compilation Interface]] v2.0 for GCC 4.4.0 synchronized with the official plugin GCC branch - transforming compilers into plugin-enabled research toolsets
+
-
** [[cTools:MilepostGCC|MILEPOST GCC 4.4.0]] pre-release version at SVN - automating program optimization and compiler optimization heuristic tuning using machine learning
+
-
** [[CTools:CCC|Continuous Collective Compilation Framework v2.0]] - enabling automatic collaborative program optimization based on statistical and machine learning techniques
+
-
** [[CTools:CBench|Collective Benchmark/MiDataSets v1.0]] - enabling realistic program optimization research and benchmarking using multiple open-source programs/datasets.<BR><BR>We also updated [[CDatabase|Collective Optimization Database]] with various optimization cases for Intel and AMD processors and comparison of different compilers including GCC, LLVM, Open64, Intel, etc - enabling sharing and reuse of optimization knowledge.<BR><BR>We would like to thank [[Community:People|cTuning community]] for feedback, help and support! You are welcome to join this [[Community|community effort]] to automate program optimization and compiler/architecture design.
+
-
 
+
-
* '''2009.April.27''' - We gave a talk at the University of Illinois at Urbana-Champaign about [http://ctuning.org Collective Tuning Initiative and tools] and [http://www.milepost.eu MILEPOST project] ("Collective Optimization, run-time adaptation and machine learning"). Presentation is available [http://unidapt.org/presentations/presentation_fursin_uiuc2009.pdf here]. We would like to thank all the UIUC&nbsp;colleagues for a very interesting and useful feedback.<br>
+
-
 
+
-
* '''2009.April.21''' - [http://socghop.appspot.com/org/home/google/gsoc2009/gcc Several projects] to enable automatic fine-grain program optimization and run-time adaptation in GCC using iterative compilation and machine learning (based on our cTuning/UNIDAPT/ICI/MILEPOST technology) have been accepted by the Google Summer of Code. You are welcome to [[Join|join cTuning community]] and follow or participate in the developments using our dedicated [[Community|mailing lists]].
+
-
 
+
-
* '''2009.March.08''' - CCC pre-release version has been uploaded to the SVN. We are currently documenting it.
+
-
 
+
-
* '''2009.March.02''' - [http://code.google.com/soc/ Google Summer of Code'2009] will be accepting development applications soon - you are welcome to check [[CTools:CCC:Projects|CCC extension projects]] and [[CTools:CCC:Feedback|CCC feedback/suggestion]] pages if you would like to help us to extend our collaborative tools within this program!<br><br>{{Link3}}
+
-
<BR>
+
Example of complex optimization search spaces for susan_c from [[CTools:CBench|Collective Benchmark]] and [[CTools:MilepostGCC|MILEPOST GCC 4.4.0]]
-
:::::: ''[http://groups.google.com/group/ctuning-announce News archive]''
+
after randomly selecting about 80 optimization flags:
 +
<div align="center">http://unidapt.org/images/fig_opt_case_susan_c_1.gif http://ctuning.org/wiki/images/fig_opt_case_susan_c_2.gif</div>
-
}}
+
We can automatically improve execution time of the program by nearly 2 times over the highest GCC optimization level after using CCC framework
 +
(we obtain similar results on LLVM, Open64, Intel and IBM compilers). We can also use CCC framework to perform multi-objective
 +
optimizations (selecting optimization cases on the optimization space frontier shown by red circles and blue dots) such as:
 +
* optimize both execution time and code size (important for optimizing libraries and embedded/mobile computing systems)
 +
* optimize just execution time (important for desktop computers and HPC servers/supercomputers)
 +
* optimize both execution time and compilation time (important for cloud computing services and real-time systems)
-
|}
+
Furthermore, we are developing [http://cTuning.org/milepost-gcc MILEPOST GCC] to correlate program features and behavior to predict good optimizations
 +
for unseen programs based on prior learning.
----
----
Line 104: Line 75:
|-
|-
| align="center" valign="top" | {{CTools:CCC:Logo_Friends}}
| align="center" valign="top" | {{CTools:CCC:Logo_Friends}}
-
<div align="center"><br>''You are welcome to register your interest at this [[Community:Friends|page]]''.</div>
 
|}
|}
</div>
</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.


logo_ccc.gif

Continuous Collective Compilation Framework

Enabling collective optimization
Web shortcut: http://cTuning.org/ccc
Navigation: cTuning.org > CTools 

NOTES:

cTuning Google discussions list

Continuous Collective Compilation Framework (CCC) is a collaborative modular plugin-enabled R&D infrastructure to automate program and architecture optimizations (i.e. iteratively search for good program and architecture optimizations in a feedback-directed manner) and gather various static and dynamic optimization profile data in a Collective Optimization Database. It supports both global program optimization and fine-grain procedure, loop or instruction level optimizations if compiler supports Interactive Compilation Interface. CCC is used to help end-users optimize their programs, libraries and whole OS automatically (improve execution time/code size, etc), test and tune compiler optimization heuristic. It also enables collaborative R&D and optimization knowledge reuse with statistical and machine learning techniques (FT2010, FMTP2008, FT2009). Current version of CCC supports optimization of cBench/MiBench/EEMBC/Polyhedron/SPEC_CPU95,2000,2006 benchmark suites.

Some more scientific aspects/details on Collective Optimization can be found in the following ACM TACO'10 publication.

CCC Framework is a community-driven project - you are welcome to join the project, extend it, provide smart search and data analysis plugins, leave feedback and add your optimization data to help the community. You can also communicate with cTuning community through our mailing lists.


figure_ccc.gif
  • FAQs - Why do we need CCC framework? Is it similar to ACOVEA tool? etc...
  • Related:
    • Collective optimization repository to continuously collect profitable optimization cases from the community that improve program execution time, code size, compilation time, etc...
    • MILEPOST GCC - machine learning-enabled compiler that automatically correlates program features and optimizations collected using CCC framework to be able to predict profitable optimizations to improve execution time, code size and compilation time for unseen programs.

Example of complex optimization search spaces for susan_c from Collective Benchmark and MILEPOST GCC 4.4.0 after randomly selecting about 80 optimization flags:

fig_opt_case_susan_c_1.gif fig_opt_case_susan_c_2.gif

We can automatically improve execution time of the program by nearly 2 times over the highest GCC optimization level after using CCC framework (we obtain similar results on LLVM, Open64, Intel and IBM compilers). We can also use CCC framework to perform multi-objective optimizations (selecting optimization cases on the optimization space frontier shown by red circles and blue dots) such as:

  • optimize both execution time and code size (important for optimizing libraries and embedded/mobile computing systems)
  • optimize just execution time (important for desktop computers and HPC servers/supercomputers)
  • optimize both execution time and compilation time (important for cloud computing services and real-time systems)

Furthermore, we are developing MILEPOST GCC to correlate program features and behavior to predict good optimizations for unseen programs based on prior learning.


You are welcome to join us and participate in CCC developments, discussions, provide feedback or suggestions to extend CCC or add new functionality. The framework currently supports multiple compilers including GCC, Open64, PathScale, Intel ICC, IBM XLC and a large number of server, desktop and embedded architectures.

CCC supporters:
logo_inria.gif logo_unidapt1.gif logo_uvsq1.jpg logo_ue.gif logo_ibm.jpg logo_arc.gif logo_milepost.jpglogo_ict.gif logo_hipeac.jpg
Locations of visitors to this page