From cTuning.org
m |
|||
| Line 1: | Line 1: | ||
| - | |||
| - | |||
'''Page for GSOC09 and other developments in summer 2009: fine-grain optimizations.''' | '''Page for GSOC09 and other developments in summer 2009: fine-grain optimizations.''' | ||
| - | |||
Yuanjie Huang (ICT, China) | Yuanjie Huang (ICT, China) | ||
This project aims to provide fine-grain optimization selection and tuning abilities in GCC, and thus enable GCC to tune default optimization heuristic of the compiler or fine optimizations for a given program on a given architecture entirely automatically using statistical and machine learning techniques from the MILEPOST project. | This project aims to provide fine-grain optimization selection and tuning abilities in GCC, and thus enable GCC to tune default optimization heuristic of the compiler or fine optimizations for a given program on a given architecture entirely automatically using statistical and machine learning techniques from the MILEPOST project. | ||
| + | |||
== ICI Fine-grain tuning work flow == | == ICI Fine-grain tuning work flow == | ||
| Line 22: | Line 20: | ||
== ICI Features == | == ICI Features == | ||
| + | === New Features === | ||
ICI features added to the framework for fine-grain tuning are documented here. | ICI features added to the framework for fine-grain tuning are documented here. | ||
{| border="1" cellspacing="0" cellpadding="3" style="text-align:left;" | {| border="1" cellspacing="0" cellpadding="3" style="text-align:left;" | ||
| Line 30: | Line 29: | ||
| Name of the file which serves as the main input file of compiler . | | Name of the file which serves as the main input file of compiler . | ||
|} | |} | ||
| - | + | ||
| + | === Known Issue on Current ICI Features === | ||
* "function_filename" can be empty for functions generated by IPCP optimization (cp pass). | * "function_filename" can be empty for functions generated by IPCP optimization (cp pass). | ||
| Line 140: | Line 140: | ||
|} | |} | ||
| - | |||
== Adapt Plugin == | == Adapt Plugin == | ||
| Line 148: | Line 147: | ||
Adapt plugin provides support for GCC pass sequence record/substitution, function-specific optimization tuning, function clone and instrumentation. | Adapt plugin provides support for GCC pass sequence record/substitution, function-specific optimization tuning, function clone and instrumentation. | ||
Plugins developed for fine-grain tuning are documented here. These plugins are developed to work with ICI-2.0 interface. | Plugins developed for fine-grain tuning are documented here. These plugins are developed to work with ICI-2.0 interface. | ||
| - | |||
=== How to use === | === How to use === | ||
| Line 157: | Line 155: | ||
To use adapt plugin with ICI, <tt>ICI_PLUGIN</tt> environment variable should be set to the path to the plugin library (.so), and gcc should be called with with either <tt>-fici</tt> flag or <tt>ICI_USE</tt> environment parameter. | To use adapt plugin with ICI, <tt>ICI_PLUGIN</tt> environment variable should be set to the path to the plugin library (.so), and gcc should be called with with either <tt>-fici</tt> flag or <tt>ICI_USE</tt> environment parameter. | ||
| - | |||
=== Known Issue === | === Known Issue === | ||
none | none | ||
Revision as of 15:20, 10 August 2009
Page for GSOC09 and other developments in summer 2009: fine-grain optimizations.
Yuanjie Huang (ICT, China)
This project aims to provide fine-grain optimization selection and tuning abilities in GCC, and thus enable GCC to tune default optimization heuristic of the compiler or fine optimizations for a given program on a given architecture entirely automatically using statistical and machine learning techniques from the MILEPOST project.
Contents |
ICI Fine-grain tuning work flow
TODO
ICI Events
ICI events added to the framework for fine-grain tuning are documented here.
ICI Features
New Features
ICI features added to the framework for fine-grain tuning are documented here.
| Feature name | Type of contents | Description |
|---|---|---|
| "main_input_filename" | array of strings, i.e., char ** | Name of the file which serves as the main input file of compiler . |
Known Issue on Current ICI Features
- "function_filename" can be empty for functions generated by IPCP optimization (cp pass).
ICI Parameters
ICI parameters now come with a type which should be declared when registering parameters in ICI, currently only a few basic C types are supported: void, char, unsigned char, int, unsigned int, long and unsigned long. A special type named EP_SILENT is introduced to pass parameters that is only used to pass status information to plugin; it's actually int, and is planned to be replaced by a elegant solution. The parameter type is defined in gcc/highlev-plugin-internal.h and gcc/highlev-plugin.h:
typedef enum
{
EP_SILENT,
EP_VOID,
EP_CHAR,
EP_UNSIGNED_CHAR,
EP_INT;
EP_UNSIGNED_INT,
EP_LONG,
EP_UNSIGNED_LONG
} event_parameter_type;
The representation of parameters is defined in file gcc/events.c:
/* Parameter structure. */
struct event_parameter
{
const char *name; /* Name for the parameter */
const void *value; /* Pointer to data */
event_parameter_type type; /* Type enumeration of value */
};
ICI API
register_event_parameter: register a new ICI parameter
| Description
Define a new ICI parameter named name, with a pointer value to some data of type. Trigger an internal compiler error (failed assertion) if name is invalid. Prerequisites name can be neither NULL nor an empty string. <type> is a valid type defined in event_parameter_type. Outputs See also |
get_event_parameter_type: get the type of an ICI event parameter
| Description
Prerequisites Parameter hash table must have been initialized. Outputs Informational message if parameters hash table does not exists. See also |
Adapt Plugin
Description
Adapt plugin provides support for GCC pass sequence record/substitution, function-specific optimization tuning, function clone and instrumentation. Plugins developed for fine-grain tuning are documented here. These plugins are developed to work with ICI-2.0 interface.
How to use
Adapt plugin is depends on MXML library, which provides XML reading and writing ability.
This plugin behaves differently depending on the ICI_ADAPT_CONTROL environmental variable, which can be either set to 1 to record information of current compilation into XML files or to 2 to reuse passes from XML files to perform passes substitution, function clone and other functionalities.
To use adapt plugin with ICI, ICI_PLUGIN environment variable should be set to the path to the plugin library (.so), and gcc should be called with with either -fici flag or ICI_USE environment parameter.
Known Issue
none

