From cTuning.org

(Difference between revisions)
Jump to: navigation, search
Current revision (15:44, 12 September 2015) (view source)
 
(47 intermediate revisions not shown.)
Line 1: Line 1:
 +
'''''NEWS: Since 2015, we moved all related developments, benchmarks, data sets and tools to our new [http://github.com/ctuning/ck/wiki Collective Knowledge Framework]!'''''
 +
 +
{{CTitle|http://ctuning.org/wiki/images/logo_unidapt_f.gif|Universal Adaptation Framework|Statically enabling run-time optimization and adaptation}}
{{CTitle|http://ctuning.org/wiki/images/logo_unidapt_f.gif|Universal Adaptation Framework|Statically enabling run-time optimization and adaptation}}
-
{|border="0" cellpadding="15" cellspacing="0"
+
{{CShortCut|unidapt}}
-
| valign="top" |
+
{{CMenu:CTools|}}
{{CMenu:CTools|}}
-
UNIversal aDAPTation Framework (UNIDAPT) is the hybrid static/dynamic framework to enable low-overhead run-time adaptation, optimization and scheduling for unicore and heterogeneous multi-core architectures (GPGPU, CELL, etc) based on static function cloning (with explicit memory transfers if needed), dynamic monitoring routines and run-time decision trees based on static and dynamic program and dataset features. We are implementing this framework in GCC 4.4/4.5 combined with [[CTools:ICI|ICI]] (though maybe source-to-source adaptation framework can still be useful) within [http://socghop.appspot.com/org/home/google/gsoc2009/gcc Google Summer of Code'09 program]. We also hope to provide a unified view of heterogeneous architectures (CPU/GPU, CELL-like, FPGA, accelerators), optimizations and data movement/partitioning with a high-level abstraction layer (architectures, compilers, run-time systems) to automate and simplify program development and optimization for heterogeneous multi-core systems.  
+
{{NEWS}}
 +
 
 +
UNIDAPT concept has been developed during 2004-2006 by [http://fursin.net/research Grigori Fursin] to statically enable run-time optimizations and self-tuning binaries through cloning of program hot spots, applying various aggressive optimizations to clones for different optimization cases (that may improve performance/power/fault-tolerance, etc), statically integrating low-overhead program/system behaviour monitoring routines (using hardware counters) and selecting appropriate versions at run-time as a reaction to different program behavior, architectural changes or contentions. 
 +
 
 +
For the first time, Grigori utilized his [[CTools:ICI|Interactive Compilation Interface]] for [http://www.pathscale.com PathScale compiler] with loop vectorization, tiling, unrolling, interchange, fission/fusion, pipelining, prefetching and array padding to make static self-tuning binaries that can automatically learn from the past experience and adapt/react to various environments, run-time behavior and contentions that is important to improve efficiency and cost of both embedded systems and HPC data centers (cloud computing).
 +
 
 +
This technique opened up many research possibilities, has been used in multiple research projects in collaboration with UPC, ICT, IBM, CAPS Enterprise, STMicro, has been supported by [http://cTuning.org/project-milepost MILEPOST], [http://www.hipeac.net HiPEAC] and [http://code.google.com/soc Google Summer of Code] grants, has been referenced in patents and has been extended to speed up iterative compilation ({{Ref|FCOP2005}}, {{Ref|FCOP2006}}), enable transparent continuous collective optimization ({{Ref|FT2010}}, {{Ref|FT2009}},{{Ref|FMPP2007}}), enable portable program characterization techniques based on reactions to optimizations ({{Ref|FT2010}}, {{Ref|FT2009}}), enable predictive scheduling for heterogeneous multicore systems ({{Ref|JGVP2009}}), enable adaptive libraries based on dataset characterization using machine learning and decision trees ({{Ref|LCWP2009}}) among many other usages based on continuous transparent run-time program optimization and adaptation as a reaction to dynamic changes in program behavior and environment. Since 2007 it is being actively extended by [http://research.google.com Google Inc.] for data centers.
 +
 
 +
We are gradually working to move this framework to mainline GCC combined with [[CTools:ICI|ICI]] (though source-to-source adaptation framework can still be useful). We are working to provide a unified view of heterogeneous architectures and optimizations with a high-level abstraction layer (architectures, compilers, run-time systems) to automate and simplify program development and optimization for heterogeneous multi-core systems. We would like to use this framework to automatically detect contentions in computing systems and react to such changes. We also hope to provide a unified view of heterogeneous architectures (CPU/GPU, CELL-like, FPGA, accelerators), optimizations and data movement/partitioning with a high-level abstraction layer (architectures, compilers, run-time systems) to automate and simplify program development and optimization for heterogeneous multi-core systems.
 +
 
 +
You are welcome to [[Join|join]] the project, provide feedback and help with developments.
* '''Background:'''
* '''Background:'''
Line 16: Line 28:
* '''[[CTools:UNIDAPT:Projects|Projects to extend UNIDAPT]]'''
* '''[[CTools:UNIDAPT:Projects|Projects to extend UNIDAPT]]'''
-
<div align="center">http://ctuning.org/wiki/images/figure_unidapt.gif http://ctuning.org/wiki/images/figure_unidapt_hetero.gif</div>
+
<div align="center">http://ctuning.org/wiki/images/unidapt-framework.gif http://ctuning.org/wiki/images/figure_unidapt.gif http://ctuning.org/wiki/images/figure_unidapt_hetero.gif</div>
-
 
+
-
|
+
-
 
+
-
{{News|
+
-
 
+
-
*'''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.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 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.02''' - [http://code.google.com/soc/ Google Summer of Code'2009] will be accepting development applications soon - you are welcome to check [[CTools:UNIDAPT:Projects|UNIDAPT extension projects]] and [[CTools:UNIDAPT:Feedback|UNIDAPT feedback]] pages if you would like to help us to extend our collaborative tools within this program!<br><br>{{Link1}}
+
-
 
+
-
}}
+
-
 
+
-
|}
+
----
----
''You are welcome to [[Join|join]] us and participate in discussions, developments or provide feedback and suggestions to extend UNIDAPT Framework.''
''You are welcome to [[Join|join]] us and participate in discussions, developments or provide feedback and suggestions to extend UNIDAPT Framework.''

Current revision

NEWS: Since 2015, we moved all related developments, benchmarks, data sets and tools to our new Collective Knowledge Framework!


logo_unidapt_f.gif

Universal Adaptation Framework

Statically enabling run-time optimization and adaptation
Web shortcut: http://cTuning.org/unidapt
Navigation: cTuning.org > CTools 

NOTES:

cTuning Google discussions list

UNIDAPT concept has been developed during 2004-2006 by Grigori Fursin to statically enable run-time optimizations and self-tuning binaries through cloning of program hot spots, applying various aggressive optimizations to clones for different optimization cases (that may improve performance/power/fault-tolerance, etc), statically integrating low-overhead program/system behaviour monitoring routines (using hardware counters) and selecting appropriate versions at run-time as a reaction to different program behavior, architectural changes or contentions.

For the first time, Grigori utilized his Interactive Compilation Interface for PathScale compiler with loop vectorization, tiling, unrolling, interchange, fission/fusion, pipelining, prefetching and array padding to make static self-tuning binaries that can automatically learn from the past experience and adapt/react to various environments, run-time behavior and contentions that is important to improve efficiency and cost of both embedded systems and HPC data centers (cloud computing).

This technique opened up many research possibilities, has been used in multiple research projects in collaboration with UPC, ICT, IBM, CAPS Enterprise, STMicro, has been supported by MILEPOST, HiPEAC and Google Summer of Code grants, has been referenced in patents and has been extended to speed up iterative compilation (FCOP2005, FCOP2006), enable transparent continuous collective optimization (FT2010, FT2009,FMPP2007), enable portable program characterization techniques based on reactions to optimizations (FT2010, FT2009), enable predictive scheduling for heterogeneous multicore systems (JGVP2009), enable adaptive libraries based on dataset characterization using machine learning and decision trees (LCWP2009) among many other usages based on continuous transparent run-time program optimization and adaptation as a reaction to dynamic changes in program behavior and environment. Since 2007 it is being actively extended by Google Inc. for data centers.

We are gradually working to move this framework to mainline GCC combined with ICI (though source-to-source adaptation framework can still be useful). We are working to provide a unified view of heterogeneous architectures and optimizations with a high-level abstraction layer (architectures, compilers, run-time systems) to automate and simplify program development and optimization for heterogeneous multi-core systems. We would like to use this framework to automatically detect contentions in computing systems and react to such changes. We also hope to provide a unified view of heterogeneous architectures (CPU/GPU, CELL-like, FPGA, accelerators), optimizations and data movement/partitioning with a high-level abstraction layer (architectures, compilers, run-time systems) to automate and simplify program development and optimization for heterogeneous multi-core systems.

You are welcome to join the project, provide feedback and help with developments.

unidapt-framework.gif figure_unidapt.gif figure_unidapt_hetero.gif

You are welcome to join us and participate in discussions, developments or provide feedback and suggestions to extend UNIDAPT Framework.

Locations of visitors to this page