Home / GCC-ICI / V0.9.5
Name Modified Size Downloads / Week Status
Parent folder
Totals: 6 Items   18.2 MB 6
GCC-ICI-0.9.5-README.txt 2008-02-15 9.2 kB 11 weekly downloads
GCC-ICI-0.9.5-PLUGINS-README.txt 2008-02-15 1.2 kB 11 weekly downloads
GCC-ICI-0.9.5-4.3.x-PATCH-DEVELOPMENT 2008-02-15 48.6 kB 11 weekly downloads
GCC-ICI-0.9.5-4.3.x.tar.gz 2008-02-15 9.1 MB 11 weekly downloads
GCC-ICI-0.9.5-4.2.2-PATCH-CLEAN 2008-02-15 36.4 kB 11 weekly downloads
GCC-ICI-0.9.5-4.2.2.tar.gz 2008-02-15 9.0 MB 11 weekly downloads
**************************************************************** GCC-ICI (Interactive Compilation Interface) February 12, 2008 http://gcc-ici.sourceforge.net **************************************************************** Current developers: Cupertino Miranda, INRIA Futurs, France cupertino.miranda@inria.fr Grigori Fursin, INRIA Futurs, France http://fursin.net/research **************************************************************** Brief Information: The main aim of the Interactive Compilation Interface (ICI) is to transform GCC (production quality non-research compiler that supports many languages and architectures) into research compiler with minimal changes. It can be used to enable research on iterative fine-grain program optimizations for different constraints (performance, code size, power consumption, DSE, different ISAs, etc), to unify optimization knowledge reuse among different programs and architectures using statistical and machine learning techniques, and to improve default compiler optimization heuristic. We hope that it will eventually make compilers truly modular with automatically tuned rapidly evolving optimization heuristics. In a new version we re-designed the ICI completely based on the valuable feedback from the users after the SMART'07 workshop and GCC HiPEAC'07 tutorial (many thanks to Cupertino Miranda who implemented most of it). The communication with the new ICI is now performed through a dynamically linked GCC plug-in written in C (however any high-level or scripting language can be used with a wrapper). Current implementation includes the ability to reorder or add GCC passes dynamically on a function level. We currently work to implement all remaining functions of the specified interface, add passes to extract program features and split analysis and optimization code to enable access to compiler transformations at a fine-grain level. **************************************************************** Directories: docs - GCC-ICI documentation | +-- papers - Our related papers +-- posters - Our related posters +-- ici-headers | +-- ic-interface.h - ICI specification +-- ic-controller.h - ICI controller header file examples - Sample benchmarks to demonstrate ICI and plugins (currently dynamic pass manipulation and optimization) src - GCC and PLUGINS sources | +-- gcc - GCC source directory (not included) | Current work version is 4.3.0 20070711 | (experimental) +-- gmp-4.2.1 - Third-party package for GCC +-- mpfr-2.2.1 - Third-party package for GCC +-- plugins - Directory with plugins (dynamic controller) | +-- save_executed_passes - +-- save_pass_order +-- use_pass_order tools - Auxilary tools install - Directory with installed binaries **************************************************************** Usage: First, get GCC sources from GCC SVN using svn--get-gcc-sources--from-gcc Patch the GCC code with GCC-ICI using patch--apply Compile third-party tools, GCC source and Dynamic Controller using build-all All the binaries and libraries will be installed in the following directories install/bin #GCC BINS install/lib #GCC LIBS install/lib-dyn-controller #PLUGINS ... Set environment variables: export GCC-ICI-HOME = [GCC-ICI home directory (full path)] export PATH = $GCC-ICI-HOME/install/bin:$PATH export LD_LIBRARY_PATH = $GCC-ICI-HOME/install/lib:$LD_LIBRARY_PATH To compile programs using GCC-ICI and Dynamic Controller with Plug-in to save current pass order, use: export ICI_PLUGIN=$GCC-ICI-HOME/install/lib-dyn-controller/ic-save_order_controller.so gcc -O3 -fici <files to compile> or export ICI_PLUGIN=$GCC-ICI-HOME/install/lib-dyn-controller/ic-save_order_controller.so export ICI_USE=1 gcc -O3 <files to compile> **************************************************************** History: 0.9.5 - 20080211 - updated design for correct pass selection and reordering avoiding pass-gate ... + some bug fixes 0.9.1 - 20070916 - bug fix release 0.9 - 20070915 - new design using dynamically linked plug-ins and pass manipulations routines 0.1 - 20070126 - prototyping 0.0.1 - 20061103 - first prototype based on PathScale ICI developed by Grigori Fursin in 2004 **************************************************************** Motivation: Current compilers fail to deliver satisfactory levels of performance on modern processors, due to rapidly evolving hardware, fixed and black-box optimization heuristics, simplistic hardware models, inability to fine-tune the application of transformations, and highly dynamic behavior of the system. This analysis suggests to revisit the structure and interactions of optimizing compilers. Building on the empirical knowledge accumulated from previous iterative optimization prototypes, we propose to open the compiler, exposing its control and decision mechanisms to external optimization heuristics. We suggest a simple, practical, and non-intrusive way to modify current compilers, allowing an external tool to access and modify all compiler optimization decisions. To avoid the pitfall of revealing all the compiler intermediate representation and libraries to a point where it would rigidify the whole internals and stiffen further evolution, we choose to control the decision process itself, granting access to the only high-level features needed to effectively take a decision. This restriction is compatible with our fine-tuning and fine-grained interaction, and allows to tune programs for best performance, code size, power consumption; we also believe it allows for joint architecture-compiler design-space exploration.By exposing only the decisions that arise from the opportunities suggested by the program syntax and semantics and only when the associated legality checks are satisfied, we dramatically reduce the transformation search space. We are developing an Interactive Compilation Interface (ICI) with different external optimization drivers for GCC to enable optimization of large applications (rather than just kernels) through the iterative, fine-grain customization of compilation strategies at the loop or instruction-level.We expect that iterative interactive compilers will replace the current multiplicity of non-portable, rigid transformation frameworks with unnecessary duplications of compiler internals. Furthermore, unifying the interface with compiler passes simplifies future compiler developments, where the best optimization strategy is learned automatically and continuously for a given platform, objective function, program or application domain, using statistical or machine learning techniques. It enables life-long, whole-program compilation research, without the overhead of breaking-up the compiler into a set of well-defined compilation components (communicating through persistent intermediate languages), even if such an evolution could be desirable at some point (but much more intrusive). It also opens optimization heuristics to a wide area of iterative search, decision and adaptation schemes and allows optimization knowledge reuse among different programs and architectures for collective optimizations. **************************************************************** Acknowledgments: Francois Bodin, IRISA, France John Cavazos, University of Delaware, USA Albert Cohen, INRIA Futurs, France Hugh Lather, University of Edinburgh, UK Mircea Namolaru, IBM, Israel Michael O'Boyle, University of Edinburgh, UK Sebastian Pop, AMD, USA Olivier Temam, INRIA Futurs, France HiPEAC network of excellence (http://www.hipeac.net) Milepost project (http://www.milepost.eu) SARC project (http://www.sarc-ip.org) GGCC (http://www.ggcc.info) Other colleagues from IBM, NXP, STMicro, ARC, CAPS Enterprise ... **************************************************************** Future work: We need to decide on how to enumerate specific loops (in the loop nests) and specific statements - could be in lexicographical order or using numbering similar to ones used at INRIA for polyhedral transformation framework. Then we need to finish GCC-ICI implementation based on the available specification. Further, we plan to do research on automatically generating dependencies between passes, learning best order of optimization passes, improving our component model for passes to enable dynamic linking of external optimization plug-ins and eventually making compiler fully modular with automatically tuned rapidly evolving compiler optimization heuristic. ****************************************************************
Source: GCC-ICI-0.9.5-README.txt, updated 2008-02-15

Thanks for helping keep SourceForge clean.

Screenshot instructions:
Windows
Mac
Red Hat Linux   Ubuntu

Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies
X

Briefly describe the problem (required):

Upload screenshot of ad (required):
Select a file, or drag & drop file here.

Please provide the ad click URL, if possible:

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks