From cTuning.org
NEWS: Since 2015, we moved all related developments to our new Collective Knowledge Framework! Demo of a new live repository is available here.
![]() |
Interactive Compilation Interface |
Enabling Collaborative Interactive Research Compilers |
Web shortcut: http://cTuning.org/ici
Navigation: cTuning.org > CTools
NOTES:
- Reference publications about cTuning.org long-term vision: GCC Summit'09, ACM TACO'10 journal and IJPP'11 journal.
cTuning.org is based on the following reference publications: GCC Summit'09, CPE'04, HiPEAC'05, PhD thesis'04, SMART'09, PLDI'10, HiPEAC'09, IJPP'11
The Interactive Compilation Interface (or 'ICI' for short) is a plugin system with a high-level compiler-independent and low-level compiler-dependent API to transform current compilers into collaborative open modular interactive toolsets. The ICI framework acts as a "middleware" interface between the compiler and the user-definable plugins. It opens up and reuses the production-quality compiler infrastructure to enable program analysis and instrumentation, fine-grain program optimizations, simple prototyping of new development and research ideas while avoiding building new compilation tools from scratch. For example, it is used in MILEPOST GCC to automate compiler and architecture design and program optimizations based on statistical analysis and machine learning. It should enable universal self-tuning compilers adaptable to heterogeneous, reconfigurable, multi-core architectures ranging from supercomputers to embedded systems.
At the beginning of 2010, parts of ICI and related plugin frameworks have been finally included in mainline GCC 4.5!
- Background:
- Current development - source code repository, bug reports, discussions
- Documentation and API - functionality, API reference guide, features, FAQ
- Projects to extend ICI, plugins and compilers - more than 15 projects currently

ICI is an open collaborative community-driven project. You are welcome to join and participate in developments, discussions, provide feedback or suggestions to extend ICI or add new features. We develop ICI for GCC at the moment, but trying to keep it compiler independent in case someone would like to port it to other compilers to extend collaborative tools.