Interactive Compilation Interface

{{Short description|Plugin API for compilers}}

{{Infobox software

| name = Interactive Compilation Interface (ICI)

| developer = Grigori Fursin

| released = {{start date and age|2007|df=yes}}

| latest release version = 2.0.1 (development discontinued after this project was integrated with the GNU_Compiler_Collection)

| latest release date = {{release date|2009|05|29}}

| operating system = Linux, Mac OS X, Microsoft Windows, Android

| genre = Optimizing_compiler, Interfaces, Plug-in_(computing), API| programming language = C++

| license = GNU_General_Public_License

| website = {{URL|https://sourceforge.net/projects/gcc-ici}}

}}

The Interactive Compilation Interface (ICI) is a plugin system with a high-level compiler-independent and low-level compiler-dependent API to transform production compilers into interactive research toolsets. It was developed by Grigori Fursin during the MILEPOST project.Grigori Fursin. Collective Tuning Initiative:

automating and accelerating development and optimization of computing systems. Proceedings of the GCC Summit'09, Montreal, Canada,

June 2009 ([https://hal.inria.fr/inria-00436029 link])Grigori Fursin, Yuriy Kashnikov, Abdul Wahid Memon, Zbigniew Chamski, Olivier Temam, Mircea Namolaru, Elad Yom-Tov, Bilha Mendelson, Ayal Zaks, Eric Courtois, Francois Bodin, Phil Barnard, Elton Ashton, Edwin Bonilla, John Thomson, Chris Williams, Michael O'Boyle. Milepost gcc: Machine learning enabled self-tuning compiler International journal of parallel programming, Volume 39, Issue 3, pp. 296-327, June 2011 ([https://scholar.google.com/citations?view_op=view_citation&hl=en&user=IwcnpkwAAAAJ&citation_for_view=IwcnpkwAAAAJ:LkGwnXOMwfcC link])

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, and predict profitable optimization to improve program execution time, code size and compilation time.

Developments

ICI is now available in mainline GCC since version 4.5{{cite web |title=GCC plugins

|url=https://gcc.gnu.org/wiki/plugins

|accessdate=2017-05-30}}

ICI was extended during the [https://web.archive.org/web/20110728122409/http://socghop.appspot.com/org/home/google/gsoc2009/gcc Google Summer of Code'2009] to enable fine-grain program optimizations including polyhedral transformations, function level run-time adaptation and collective optimization.

References