This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[plugins-ici-cloning-instrumentation] new GCC plugin developements
- From: "Grigori Fursin" <grigori dot fursin at inria dot fr>
- To: "'Joern Rennecke'" <amylaar at spamcop dot net>
- Cc: "'Zbigniew Chamski'" <zbigniew dot chamski at gmail dot com>, "'Richard Guenther'" <richard dot guenther at gmail dot com>, "'Basile STARYNKEVITCH'" <basile at starynkevitch dot net>, "'Ian Lance Taylor'" <iant at google dot com>, "'GCC Mailing List'" <gcc at gcc dot gnu dot org>, "'Albert Cohen'" <Albert dot Cohen at inria dot fr>, <ctuning-discussions at googlegroups dot com>, "'Yuri Kashnikoff'" <yuri dot kashnikoff at gmail dot com>, "Yuanjie Huang" <huangyuanjie at ict dot ac dot cn>, "Liang Peng" <pengliang at ict dot ac dot cn>, <announce at hipeac dot net>, <ctuning-announce at googlegroups dot com>, <dorit at il dot ibm dot com>, "Mircea Namolaru" <NAMOLARU at il dot ibm dot com>, "'Diego Novillo'" <dnovillo at google dot com>
- Date: Thu, 5 Nov 2009 12:17:34 +0100
- Subject: [plugins-ici-cloning-instrumentation] new GCC plugin developements
- References: <4AE6E471.4020200@starynkevitch.net> <84fc9c000910270518s147e0cc4t7f1cd53049c5d590@mail.gmail.com> <4AE6E5D0.4010401@starynkevitch.net> <mcrvdi1klsb.fsf@dhcp-172-17-9-151.mtv.corp.google.com> <4AE7014A.1000903@starynkevitch.net> <mcr3a54lwb4.fsf@dhcp-172-17-9-151.mtv.corp.google.com> <4AE70C5E.4050005@starynkevitch.net> <84fc9c000910270839v2d9efe0dw829c8647f361c96f@mail.gmail.com> <4AE7164D.9010200@starynkevitch.net> <84fc9c000910270855w736df367qe511d8db280aaeb4@mail.gmail.com> <2dc303d60910271056h17038110ib63c53cfa374f5c7@mail.gmail.com> <002c01ca5746$9dd43da0$d97cb8e0$@fursin@inria.fr> <20091102074959.p8410ulv28sg0w44-nzlynne@webmail.spamcop.net>
Hi all,
Just wanted to announce that we will now collaborative with Joern until the end of
December to sync the GCC GSOC'09 developments and ICI with the mainline GCC. Joern
can transfer all the code to FSF since he is covered by INRIA agreement
until the end of December at least.
As a reminder, the goal of our developments is to sync our Interactive Compilation
Interface with the current plugin framework to enable already established research community
continue working with ICI directly in the official GCC without any changes. We would
also like to continue attracting more researchers to GCC and enable quick prototyping
of research ideas in a real production quality compiler while avoiding a long process
of hacking it ;) ... This in turn should help us move useful research ideas back to
GCC much faster to improve program performance, compilation time, code size, etc ...
Furthermore, this can eventually help us clean and modularize compiler, and hopefully
eventually provide a clean interface and full documentation of all modules (I think we
all agreed on that in the last few years and there are already multiple on-going projects
in that direction ...)
Our current plan of work:
* Create ICI branch, create related Wiki page on GCC website (or reuse/update the current one),
agree on testing methodology, agree on plugin location
* Sync current ICI and pass manager hooks with the branch (Zbigniew can advise on that).
This will allow users select/deselect/reorder current passes to continue research on adaptive compilation
technology to improve performance, code size, compilation time or add new passes (generic function cloning,
feature extraction from the MILEPOST project, analysis and instrumentation routines, passes written in MELT, etc).
Our latest plugins also use XML to dump current info about executed passes, change them and put them back to the compiler...
* Check that ICI uses the same calling convention as current plugins (compiler flags, etc)
* Sync function cloning and basic program instrumentation (GSOC'09 extensions by Liang and Yuanjie - they can help with that).
This will allow users create multiversioning applications to adapt to different architectures or program behavior at run-time,
or even create multi-target applications such as GPU/CELL/accelerators, etc. It is implemented as a generic IP pass that can
be called on demand through ICI and the clones can be optimized differently selecting/deselecting/reordering passes through ICI...
All the above is already in the reasonably stable stage, requires minimal modifications to GCC and mainly requires testing and
moving to the mainline. Me and Yuri (in CC) are testing pass selection and reordering mechanism in GCC...
* Check fine-grain optimization selection in GCC through ICI (another GCC GSOC'09 development by Yunajie and Liang). The idea
is to enable selection and tuning of individual transformations such as unrolling, vectorization, tiling, inlining, etc through
plugins. The prototype is available, however it seems that it slows down the compiler so we have to check what to do if we have
too many hooks in the compiler - we need some simple testing mechanism that will turn them off if not used ...
So, before moving those developments, we have to thoroughly investigate this matter since we can't afford to slow down GCC ;) ..
* Check/add MILEPOST feature extractor - it just a pass that is not invoked unless called by ICI so it is simple to add but
we need to show the useful usage cases ...
The latest version of ICI and GSOC developments for GCC 4.4.0 is available at SVN:
http://gcc-ici.svn.sourceforge.net/viewvc/gcc-ici/branches/
(gcc-4.4.0-ici-2.0-adapt)
The stable version of MILEPOST GCC with ICI and feature extractor from IBM is available at:
http://sourceforge.net/projects/gcc-ici/files/
The latest documentation for ICI and GSOC developments is available here:
http://ctuning.org/wiki/index.php/CTools:ICI:Documentation
http://ctuning.org/wiki/index.php/CTools:ICI:Projects:GSOC09:Function_cloning_and_program_instrumentation
http://ctuning.org/wiki/index.php/CTools:ICI:Projects:GSOC09:Fine_grain_tuning
The idea is to move all the these developments and the documentation to the GCC branch and GCC site now
By the way, just a small reminder that the submission deadline for the GROW'10 workshop
is coming soon: http://ctuning.org/workshop-grow10
We hope to have a 1-hour open discussion at the end of the GROW workshop about plugins, LTO and
further R&D opportunities in GCC ...
Also, until the end of December, the main contact point about these developments will be Joern ...
Will keep in touch,
Grigori
> -----Original Message-----
> From: Joern Rennecke [mailto:amylaar@spamcop.net]
> Sent: Monday, November 02, 2009 1:50 PM
> To: Grigori Fursin
> Cc: 'Zbigniew Chamski'; 'Richard Guenther'; 'Basile STARYNKEVITCH'; 'Ian Lance Taylor'; 'GCC
> Mailing List'; 'Albert Cohen'; ctuning-discussions@googlegroups.com; Yuri Kashnikoff
> Subject: RE: plugin hooks
>
> Quoting Grigori Fursin <grigori.fursin@inria.fr>:
> > Also, I hope that we will start collaborating with Joern Rennecke in
> > a few weeks to update the ICI
> > and GSOC'09
> >
> > developments based on the recent feedback to see if we can move it
> > to the mainline ...
>
> We still need a branch name for that. Since GCC is currently in phase 3,
> I suppose we should plan on re-baselining at least once - re-baselining
> from 4.6 experimental mainline after 4.5 is branched - so instead of
> a gcc version number a branch date seems more suitable.
>
> I.e. if the branch were to be created today, I propose to use the name
> branches/ici-20091102-branch for the branch.