- User Since
- Jun 17 2015, 7:07 AM (157 w, 20 h)
Tue, Jun 19
Did you check whether Polly recognizes the call to exp as part of the SCoP?
Mon, Jun 18
I applied this patch. However, your test-case fails.
Fri, Jun 15
Thanks for the test case
Thu, Jun 14
Polly only optimizes part of the kernel. The loops containing exp calls are not. The swtich -ffast-math might help.
Using Polly's -debug-only=polly-scops output showed that the kernel is in fact not optimized:
Invalidate SCoP because of reason 0
- Remove FIXME
- Add comment about O(n^2) execution time when adding attributes
- Do not store enable_if attributes in temporary list
Wed, Jun 13
For reference: This is an alternative to D47604
- Remove obsolete comment
- Refactor getOrderedEnableIfAttrs
Could you check whether llvm-lit correctly collects execution time,compile/link time, LLVM -stats, code size?
Tue, Jun 12
Why was there a lambda in the first place?
Mon, Jun 11
How long does the benchmark run with/without Polly?
Looks great. Did you do a performance comparison with/without Polly?
[serious] Could you add a test-case?
Fri, Jun 8
Thu, Jun 7
I still think that any(True for ... is unnecessary.
I could not apply the patch: test/Analysis/Delinearization/test_sext.ll is marked to modify an existing file which does not exist. Did you add the file using git add -N and created the diff against that?
Wed, Jun 6
Tue, Jun 5
Did you consider putting the driver code (initialization, malloc, free, checking result), Into a different file than the kernel code? This would allow measuring it (code size, LLVM statistics, compile time, etc.) independently from the boilerplate code.
Does Polly recognize the SCoP?
Mon, Jun 4
Fri, Jun 1
[serious] Could you document what you expect to happen in out-of-quote situations? I just noticed that eg. USet.get_set_list will allocate a new list, thus may fail in IslQuotaScopes.
[suggestion] unit tests?
Nice one, at least for lists.
Thu, May 31
Tue, May 29
Fri, May 25
Thu, May 24
Yes, this is what I had in mind. Thank you.
Wed, May 23
This is straightforward in that it clones the implementation of #pragma unroll for unroll_and_jam.
May 18 2018
SCEVExpander itself already has a cache. For some reason (I don't understand myself) ScopExpander recursively visits the SCEV before calling into SCEVExpander (and in the process expands subelements itself, then converts it back using getSCEV?!!!?). The SCEV has already been visited even before polly::expandCodeFor is called in trySynthesizeNewValue to replace original (non-SCEV) values by generated ones.
May 16 2018
May 14 2018
The patch doesn't apply cleanly anymore, but generally LGTM after r332240
Scop::containsExtensionNode is missing
May 11 2018
Sorry, I did not read the summary. I expected it to just contain a description of blur and sobel.
Some context: Pankaj is a GSoC student on a project to add more Polly-optimizable benchmarks. Currently, only SingleSource/Benchmarks/Polybench is really optimizable, most other benchmarks contain some kind of pre-optimization that makes it difficult for Polly to preserve semantics, even if the algorithm itself is 100% optimizable.
May 10 2018
May 9 2018
Congratulations for your first contribution!
@cs15btech11044 is it ok if I commit this on your behalf?
May 8 2018
I'm waiting for the ok from Tobias.
May 2 2018
Could you re-upload the patch with the LLVM source directory as patch root (so it patches include/llvm/Analysis/ScalarEvolution.h instead of ./ScalarEvolution.h).
Apr 30 2018
Why not just waiting until isl_*_every is available? When it comes, do we need to undo the changes here again?
Could you add a paragraph about what (and) this is trying to accomplish into the summary? Even better, add documentation?
Apr 27 2018
Apr 25 2018
Apr 24 2018
Thanks for the work, I would like to replace Polly's jsoncpp with this one once it is done.
Apr 23 2018
Apr 20 2018
Deprecated in favor of D45066.
Apr 19 2018
Apr 18 2018
As discussed, here is a test-case. It was more difficult than I originally thought because ScalarEvolution does not support plain select (Array subscripts must be SCEVs). Using JScop-import also was no solution because Polly does not create new aliasing expressions after the import. I used smax expressions instead, which SCEVAffinator produces piecewise pw_affs. polly::simplify must also not coalesce these sets after remove_divs() and range() (it does still coalesces some of them), and I need at least 9 pieces.
Apr 17 2018
Use a ScopStmt's instruction list.