From cTuning.org
Line 12: | Line 12: | ||
<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> | <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 improve execution time of the program by nearly 2 times over the highest GCC optimization level after using CCC framework | + | 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 | (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: | optimizations (selecting optimization cases on the optimization space frontier shown by red circles and blue dots) such as: |
Revision as of 00:36, 16 March 2010
CCC framework: Frequently Asked Questions:
Navigation: cTuning.org > CTools > CCC
Do I really need CCC framework? I thought that compilers already produce perfect code
If you think that compilers produce optimal code, look carefully at the following motivation example (produced by CCC framework):
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:


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)
We also use MILEPOST GCC to correlate program features and behavior to predict good optimizations for unseen programs based on prior learning.
Is CCC framework similar to ACOVEA tool?
Yes, there are some similarities with the useful ACOVEA tool. However, the main difference is the possibility to share optimization knowledge with the community automatically using Collective Optimization Database (to enable learning of optimizations across multiple programs and architectures in MILEPOST GCC) and the possibility for third-party high-level plugins to implement various search techniques besides genetic algorithms. In fact, some time ago, we have been discussing with ACOVEA author a possibility to implement ACOVEA algorithm as one of the search plugins for CCC framework in the future.