Tobias Grosser via llvm-dev
2017-Sep-23 04:19 UTC
[llvm-dev] Process of integrating Polly into LLVM
Dear all,
The proposal to move Polly into core-LLVM has generated an interesting
conversation and I’d like to supplement the discussion with a proposal
for initial, concrete integration steps. Please provide feedback both on
the goals and also on the process proposed to reach these goals.
First, I propose a set of goals a good integration process should
achieve:
- Start off from a well-tested baseline configuration
- Changes should be incremental or mechanical
- Preserve version history as much as possible
- Broad community review on changes that lead to closer integration into
LLVM and clang
- Closer community integration
A process that aims to match the above requirements is the following:
0) Update Polly website to announce integration plan
1) Close Polly mailing list and instead have Polly discussions on
[llvm-dev] possibly using a [Polly] subject prefix
2) svn copy Polly from its own repo into the LLVM main repository
svn mv <polly>/ to <llvm>/tools/polly
update buildbots
After this step an LLVM + clang checkout will contain a fully functional
build of LLVM + clang + Polly. The default behavior of LLVM is
unchanged, no user-visible flags are exposed, but Polly can be enabled
with “-mllvm -polly”. It can be removed from all LLVM tools by setting
LLVM_POLLY_LINK_INTO_TOOLS=OFF and LLVM_POLLY_BUILD=OFF. The
configuration
with Polly linked into LLVM is the configuration that is shipped as the
LLVM 5.0 release and has been tested in the LLVM release process to work
on all LLVM platforms without negatively impacting anybody.
Already after the very first step, Polly is available to the broader
LLVM community, such that all subsequent steps of the integration
process can be performed incrementally with separate mailing list
discussions or patch reviews that have full community visibility.
The following discussions and changes should follow then:
3) Update Polly website and documentation and mark Polly as
experimental feature
(similar to an experimental backend)
4) Remove unneeded parts of Polly
Do not use PM callbacks, but place the Polly passes directly
into the pass pipeline
Drop support for loading Polly as a plugin
5) Move polly passes and helper libraries such as isl into
appropriate directories. E.g.,
lib/Analysis/Polly, lib/Transforms/Polly and tests into
tests/…
6) Introduce a user visible clang flag to enable Polly
e.g., -floop-optimize-aggressive
7) Cross-reference Polly documentation and LLVM website
8) Continue testing, fuzzing, and profiling
At this point, Polly is available to the wider community, but nobody is
affected in the default configuration as long as no explicit options
have been chosen. I expect now a longer period of extensive development
to further improve robustness of Polly, ensure it does not regress
existing codes, adapt the LLVM passes to Polly, and obviously also
introduce more optimizations based on Polly (or related tools).
When considered stable, regression free, and tested to a level that LLVM
considers sufficient, we can consider turning on Polly by default in
some user facing optimization levels. When this is considered, community
feedback will be asked for once again.
Best,
Tobias
Kristof Beyls via llvm-dev
2017-Sep-29 10:03 UTC
[llvm-dev] Process of integrating Polly into LLVM
On 23 Sep 2017, at 06:19, Tobias Grosser via llvm-dev <llvm-dev at
lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
2) svn copy Polly from its own repo into the LLVM main repository
svn mv <polly>/ to <llvm>/tools/polly
Hi Tobias,
Just a minor point remark: IIUC, in SVN, the different subprojects are all part
of the same repository, but in the official git mirrors, each subproject is its
own separate top-level git project. Have you checked that doing an "svn mv”
like above will also retain the full history in the git mirror? The “svn mv”
will move Polly from one top-level git repository (polly) to another (llvm). I’m
wondering since I wonder how out-of-repository history (i.e. the Polly history
before it was moved to <llvm>/tools/polly) would be represented in git.
Thanks,
Kristof
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20170929/54ec04da/attachment.html>
Tobias Grosser via llvm-dev
2017-Sep-29 10:51 UTC
[llvm-dev] Process of integrating Polly into LLVM
On Fri, Sep 29, 2017, at 12:03, Kristof Beyls via llvm-dev wrote:> > On 23 Sep 2017, at 06:19, Tobias Grosser via llvm-dev > <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: > > 2) svn copy Polly from its own repo into the LLVM main repository > > svn mv <polly>/ to <llvm>/tools/polly > > Hi Tobias, > > Just a minor point remark: IIUC, in SVN, the different subprojects are > all part of the same repository, but in the official git mirrors, each > subproject is its own separate top-level git project. > Have you checked > that doing an "svn mv” like above will also retain the full history in > the git mirror? The “svn mv” will move Polly from one top-level git > repository (polly) to another (llvm). I’m wondering since I wonder how > out-of-repository history (i.e. the Polly history before it was moved to > <llvm>/tools/polly) would be represented in git.In the per-subproject git mirrors history would not be visible AFAIU, but the llvm-project repositories will show the full history. When moving to github (and git in general) we might even be able to get the pre-polly-in-llvm-history into the official repository, as Mehdi explained to me. Best, Tobias> > Thanks, > > Kristof > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev