From cTuning.org
m (Protected "CTools:ICI:Functionality" [edit=sysop:move=sysop]) |
Current revision (12:06, 27 March 2009) (view source) |
||
(4 intermediate revisions not shown.) | |||
Line 6: | Line 6: | ||
<div align="center"> | <div align="center"> | ||
- | {| | + | {| align="center" border="1" cellspacing="0" cellpadding="3" style="text-align:left;" |
- | + | ! API level | |
- | + | ! Scope of the level | |
- | + | ! Available functions | |
|- | |- | ||
- | | | + | | <tt>FICI0</tt> |
- | | | + | | |
+ | - loading and unloading of user-provided plugins<br/>- invocation of user-provided parameter- and result-less callback functions at selected locations in compiler code, with read/write access to selected elements of compiler state<br/> | ||
+ | - access to compiler version information<br/> | ||
+ | - access to the list of compiler passes, flags and parameters<br/> | ||
+ | - reordering of compiler passes<br/> | ||
+ | - read/write access to compiler flags and parameters | ||
+ | | | ||
+ | [[CTools:ICI:API_Reference#ici_load:_load_and_initialise_a_plugin|<tt>ici_load</tt>]], [[CTools:ICI:API_Reference#ici_unload:_stop_the_currently_loaded_ICI_plugin|<tt>ici_unload</tt>]],<br/> | ||
+ | [[CTools:ICI:API_Reference#ici_register_event:_register_an_ICI_event_handler|<tt>ici_register_event</tt>]], | ||
+ | [[CTools:ICI:API_Reference#ici_call_event:_trigger_an_ICI_event_handler|<tt>ici_call_event</tt>]],<br/> | ||
+ | [[CTools:ICI:API_Reference#ici_init_features:_initialise_the_list_of_features_exposed_by_ICI|<tt>ici_init_features</tt>]], | ||
+ | [[CTools:ICI:API_Reference#ici_get_feature:_get_the_value_of_an_ICI_feature|<tt>ici_get_feature</tt>]],<br/> | ||
+ | [[CTools:ICI:API_Reference#ici_get_feature_size:_get_the_size_of_an_ICI_feature|<tt>ici_get_feature_size</tt>]], | ||
+ | [[CTools:ICI:API_Reference#ici_get_subfeature:_get_the_value_of_an_element_of_an_ICI_feature|<tt>ici_get_subfeature</tt>]],<br/> | ||
+ | [[CTools:ICI:API_Reference#ici_register_parameter:_register_a_new_ICI_parameter|<tt>ici_register_parameter</tt>]], [[CTools:ICI:API_Reference#ici_unregister_parameter:_unregister_a_previously_registered_ICI_parameter|<tt>ici_unregister_parameter</tt>]],[[CTools:ICI:API_Reference#ici_get_parameter:_get_the_value_of_an_ICI_parameter|<tt>ici_get_parameter</tt>]] | ||
|- | |- | ||
- | | | + | | <tt>FICI1</tt> |
- | | | + | | |
+ | - function cloning and specialization | ||
+ | | | ||
+ | | | ||
|- | |- | ||
- | | | + | | <tt>FICI2</tt> |
- | | | + | | |
+ | - linking with external libraries<br/> | ||
+ | - add call to external function at the beginning of the program<br/> | ||
+ | - add call to external function at the program exit<br/> | ||
+ | - add -OML flag to select plugin with machine learning optimization heuristic<br/> | ||
+ | | | ||
+ | | | ||
|- | |- | ||
- | | | + | | <tt>FICI3</tt> |
- | | function | + | | |
+ | - get compiled filename with full path at the beginning of each function<br/> | ||
+ | - get start line/stop line for the compiled function in this file<br/> | ||
+ | - get language name for the compiled program (f77, c, cpp)<br/> | ||
+ | | | ||
|} | |} | ||
</div> | </div> | ||
+ | [[CTools:ICI:Projects:Basic_Functionality|Discussion page to extend basic plugin functionality]] | ||
= ICI Versions = | = ICI Versions = | ||
Line 37: | Line 65: | ||
|- | |- | ||
| {{Anchor|2.0}} | | {{Anchor|2.0}} | ||
- | | | + | | On-going |
- | | | + | | Supports FICI0, FICI3, (FICI2?) |
| Zbigniew Chamski, Cupertino Miranda, Grigori Fursin<BR>based on user feedback | | Zbigniew Chamski, Cupertino Miranda, Grigori Fursin<BR>based on user feedback | ||
|- | |- | ||
| {{Anchor|1.0}} | | {{Anchor|1.0}} | ||
| ''2008.06.15'' | | ''2008.06.15'' | ||
- | | | + | | Supports part of FICI0 |
| Grigori Fursin | | Grigori Fursin | ||
|- | |- |
Current revision
Navigation: cTuning.org > CTools > ICI
ICI Functionality
We decided to number ICI functionality to clearly mark the modified source code of the compiler and simplify porting to new compilers or compiler releases.
API level | Scope of the level | Available functions | |
---|---|---|---|
FICI0 |
- loading and unloading of user-provided plugins |
ici_load, ici_unload, | |
FICI1 |
- function cloning and specialization | ||
FICI2 |
- linking with external libraries | ||
FICI3 |
- get compiled filename with full path at the beginning of each function |
Discussion page to extend basic plugin functionality
ICI Versions
ICI Version: | Release: | Brief description: | Developer(s): |
[2.0] | On-going | Supports FICI0, FICI3, (FICI2?) | Zbigniew Chamski, Cupertino Miranda, Grigori Fursin based on user feedback |
[1.0] | 2008.06.15 | Supports part of FICI0 | Grigori Fursin |
[0.9.6] | 2008.03.12 | Updated version for the MILEPOST GCC | Grigori Fursin |
[0.9.5] | 2008.02.11 | Updated design for correct pass selection and reordering while avoiding pass-gate, and some bug fixes | Cupertino Miranda, Grigori Fursin |
[0.9.1] | 2007.09.16 | Bug fixes | Cupertino Miranda, Grigori Fursin |
[0.9] | 2007.07.15 | New design using dynamically linked plugins and pass manipulation routine | Cupertino Miranda, Grigori Fursin |
[0.1] | 2007.01.26 | Prototyping | Grigori Fursin |
[0.0.1] for GCC | 2006.11.03 | First prototype for GCC based on PathScale/Open64 ICI | Grigori Fursin |
[0.0.3] | 2007.07.10 | Stable version that has been released and used in multiple projects | Grigori Fursin |
[0.0.2] | 2007.03.04 | Bug fixes | Grigori Fursin |
[0.0.1] for PathScale/Open64 | 2004.11.01 | First prototype that supported selection and paramter tuning for loop tiling, loop unrolling, loop fusion/fission, loop vectorization, register tiling, array padding and prefetching at a fine-grain level (program, function, loop or instruction level) | Grigori Fursin |