|
|
(5 intermediate revisions not shown.) |
Line 1: |
Line 1: |
- | Continuing innovation in science and industry requires ever-increasing computing resources while placing strict requirements on system performance, power consumption, size, response, reliability, portability and design time. Both embedded and large-scale systems evolve toward complex heterogeneous multi-chip systems with dramatically increased design, test and optimization time. Optimizing compilers play a key role in producing executable codes quickly and automatically while satisfying all the above requirements for a broad range of programs and architectures. However, for many years, state-of-the-art compilers fail to deliver portable performance due to necessarily simplistic hardware models, fixed and black-box optimization heuristics, inability to tune application at fine-grain level, large optimization spaces, highly dynamic behavior of the system and inability to adapt to varying program and system behavior at run time with low overhead. Possibility for architecture reconfiguration makes system optimization problem even worse. This suggests that current compiler and architecture design and program optimization technologies are reaching their limits and should be revisited to keep pace with rapidly evolving hardware. We believe that compiler and architecture design should be simplified and automated using iterative feedback-directed compilation techniques, collective optimization, run-time adaptation, statistical analysis and machine learning.
| + | Moved [http://cTuning.org/about.html here] |
- | | + | |
- | The roots of the cTuning project go back to the [http://cordis.europa.eu/esprit/src/22729.htm Oceans project] started in 1996 to investigate empirical iterative compilation for embedded applications {{Ref|BBBP1998}}. It was followed by the [http://cordis.europa.eu/esprit/src/24942.htm MHAOTEU project] where memory hierarchy analysis and optimisation tools for large applications had to be developed. [http://fursin.net/research Grigori Fursin] joined this project in 1999 as a PhD student and had to automate program optimizations using iterative compilation. It was difficult to continue this research since there was a lack of stable, powerful, extensible, open-source compiler and optimization tools. After having a disappointing experience using multiple incompatible unstable research tools and unsupported third-party software or trying to replicate experiments from various academic research papers, Grigori decided to develop open-source research tools with common APIs based on production-quality compilers and Collective Optimization Database to enable collaborative and replicable R&D and avoid duplicate developments. At that time various collaborative tools have been tested, used and extended to investigate practical iterative compilation techniques to optimize programs (on a global, function, loop or instruction level) or architectures automatically, speed them up using statistical and machine learning techniques, automate design space exploration and enable run-time optimizations for statically compiled applications within [http://unidapt.org UNIDAPT Group (INRIA, France)], [https://alchemy.saclay.inria.fr/site Alchemy Group (INRIA, France)] and [http://www.icsa.informatics.ed.ac.uk/compilers CArD group (University of Edinburgh, UK)]. Here is the acknowledgment [[Community:People|list]] of all colleagues who have been helping Grigori to extend Collective Tools, Collective Optimization Database and Collective Research during last 6 years.
| + | |
- | | + | |
- | We believe that current way of disseminating novel techniques only through publications without providing tools to verify and replicate results or with incompatible unstable prototypes is intended mainly to claim the authorship of the idea in a niche research area, but often do not help the community to use these techniques immediately in a collaborative research to continue addressing global challenges. Hence, we decided to disseminate our [[CTools|open-source research tools]] with common APIs to help the community with the collaborative and replicable R&D while avoiding costly, time-consuming duplicate developments. Open [[CDatabase|Collective Optimization Database]] is used to share interesting optimization cases from the community to improve the quality of academic research since it enables collaborative, reproducible and referenced experiments and results.
| + | |
- | | + | |
- | Using collaborative R&D tools also accelerated our research and resulted in a [http://ctuning.org/wiki/index.php/Dissemination:Projects:MILEPOST MILEPOST project] where we developed collaborative [[CTools:MilepostFramework|MILEPOST Framework]] that includes machine learning enabled self-tuning compiler ([[CTools:MilepostGCC|MILEPOST GCC]]), [[CDatabase|Collective Optimization Database]] and [[CTools:CCC|Continuous Collective Compilation Framework]] to enable learning and predicting of good compiler optimizations or architecture configurations ({{Ref|FMTP2008}}, {{Ref|FT2009}}). In this project, we obtained promising results optimizing realistic codes (programs/libraries/OS modules) for performance/code size for IBM servers, different configurations of ARC processors, Loongson architecture and various x86 systems. We now believe that collective optimization concept can be useful to the IT community. Therefore, Grigori opened [[Main_Page|Collective Tuning Center]] at the end of 2008 to disseminate this technology and extend it collaboratively. <br>
| + | |
- | <br>
| + | |
- | | + | |
- | Nowadays, cTuning.org is a community-driven collaborative Mediawiki-based portal that brings together industry, academia and IT users to optimize programs and architectures collectively and build smart self-tuning adaptive computing systems based on statistical and machine learning techniques. We are participating in the following collaborative activities: <br>
| + | |
- | | + | |
- | *Develop common open-source tools with unified APIs (universal compiler for heterogeneous architectures, computer architecture simulators, run-time systems) to optimize programs and architectures collectively using iterative compilation, statistical and machine learning techniques.<br> <div align="right">''More information is available at [[CTools|cTools page]].''</div>
| + | |
- | *Share interesting optimization cases from the community for programs/libraries/OS (compiler optimizations/architecture configurations to improve execution time, code size, architecture size, power consumption, etc) in the Collective Optimization Database to help users optimize their systems, enable replicability of the results and improve the quality of academic research. <br><div align="right">''More information is available at [[CDatabase|cDatabase page]].''</div>
| + | |
- | *Enable collaborative research using cTools to automate and simplify the process of developing and optimizing new computer architectures, compilers, operating systems and programming environments using statistical analysis, machine learning, dynamic adaptation and bio-inspired techniques. We believe that our adaptive approaches are critical to overcome the complexity of computing systems and improve their performance, power consumption, system size and fault-tolerance automatically while reducing their cost and time to market. <br><div align="right">''More information is available at [[CResearch|cResearch page]].''</div>
| + | |
- | | + | |
- | You are warmly welcome to [[Join|join]] cTuning community (and quickly self-register at this website) if you share our [[About|vision]] on collaborative R&D and would like to :
| + | |
- | * use cTools for your R&D
| + | |
- | * share, rank and reference interesting optimization cases using [[CDatabase|COD]]
| + | |
- | * provide news, feedback or actively participate in this collaborative effort
| + | |
- | * extend cTools, cResearch and propose new collaborative R&D projects for the cTuning community.
| + | |
- | | + | |
- | We hope that this community effort will help to:
| + | |
- | * improve execution time, code size, compilation time, etc on all existing and emerging single-core and heterogeneous multi-core architectures (ranging from supercomputers to embedded systems)
| + | |
- | * provide novel adaptive mechanisms for heterogeneous, reconfigurable multi-core systems and emerging technologies such as cloud computing
| + | |
- | * simplify program and architecture design and optimization
| + | |
- | * minimize repetitive time consuming tasks and human intervention, reduce system cost and time-to-market
| + | |
- | * improve the quality and reproducibility of research on code and architecture optimization
| + | |
- | * boost innovation in compiler, OS and architecture technology
| + | |