User Details
- User Since
- Feb 22 2018, 1:10 AM (291 w, 5 d)
Aug 13 2018
All the regression tests pass successfully.
Aug 5 2018
Addressed @philip.pfaffe 's concern regarding disabling getArrayOffset().
Aug 4 2018
For Chapel Arrays with custom dimension ranges (like arr[1..4][1..4] for instance), there were two issues
- For generating OffsetValue in the Kernel function for GPU, there wasn't any reference to the value counterpart given to expandCodeFor() in IslExprBuilder.cpp. It is fixed by passing the GlobalMap to the function.
Aug 1 2018
I am following this suggestion. However, I would like to clarify something.
Suppose we are considering a 3-dimensional array named arr (Consider C language for now).
Does the offset/padding solution suggested in the previous comment model the situation where each dimension of the array has its range from 0 to some dimension size value and while accessing the array, we use some arithmetic along with the respective dimension index ( arr[i+1][2*j-1][3*k] for instance)?
Jul 28 2018
Optimized the previous patch by passing only dimension Sizes and injecting LLVM-IR related to computation of block values from Dimension Sizes
Changes made to this diff
- Fixed the complementing memory allocation and index expression problems by making some design changes in ShapeInfo class. The main reason for this change is that the block values which chapel uses aren't exactly the array sizes per dimension. So there arises a need to include the parameters to ShapeInfo which corresponds to actual array sizes.
Jul 17 2018
Modified getFortranArrayIds() to check over all dimensions of the array.
- Added the changes related to IslNodeBuilder and IslExprBuilder which were using ShapeInfo related information
- In PPCGCodeGeneration, handling of polly_array_index() has been taken care of.
- An extra test case has been added to the GPGPU/ demonstrating the crash related to improper context generation in the SCoP.
Jul 12 2018
Updated the test case for reference.
Updates made in this patch:
- There were some places which were strictly using size representation for their purpose. These failed whenever we relied on stride based representation. Some changes were made to ShapeInfo to allow flexible usage of Sizes or Shapes vector depending on their availability.
Jul 9 2018
Added the minimal test case, which is causing isl_map assertion failure.
Jul 8 2018
Updated this patch according to Chapel's intrinsic conventions exclusively, thus it needs to be improved upon.
Only the ScopBuilder and ScopHelper are affected by this update.
Jul 6 2018
Next Steps:
- There was a need to introduce a new kind of value map for this to work, a map from const SCEV * -> Value *. I hugely dislike this design, and would love to change this.
Jul 5 2018
Jun 28 2018
Used for-each loop with llvm::drop_begin() in hasVariantIndex().
Removed hasVariantIndex()definition from header file and made it static.
Added %loadPolly in the test case and modified the run statement.
Jun 27 2018
Outlined the loop as per @Meinersbur 's suggestion and corrected the loop header responsible for checking invariant nature of the GEP indices.
Jun 26 2018
Simplified the GEP index checks by just checking invariant property at the outermost loop.
Improved the patch, which now analyzes every GEP index for all the nested loops.
Strengthened the condition for pattern matching and added the required comments.
Jun 25 2018
Added comments in ScopHelper.cpp explaining the purpose of the new code.
Removed unnecessary BB's in the test case.
Addressed Philip's concerns and removed unnecessary declarations and instructions.
Jun 22 2018
Addressed all the comments related to the test case.
Refined the test case according to the comments.
Updates in this patch:
- Added a test case
- Removed // break
- Added const to variables which do not change.
Updates made to this diff:
- Addressed Phillip's concerns.
- Some more variable name changes.
- Minor updates to the fixed-point iteration approach.
Jun 21 2018
Updates made in this patch:
- Implemented @philip.pfaffe 's fixed-point iteration idea to decide the invariant loads, which also solves the instability issue of the previous approach.
- Added Doxygen comment for the newly introduced parameter.
- Renamed the temporary variables according to LLVM standards.
- Used foreach for iterating over the invariant load set.
Jun 11 2018
May 27 2018
Updates made to this differential:
- Removed manage(release) pattern in this diff
- Replaced auto keyword with explicit type wherever necessary.
May 21 2018
Thank you for letting me review this patch.
LGTM. @grosser, could you please commit this patch (I do not have commit rights as of now)?
May 16 2018
Yes, @philip.pfaffe.
I do not currently have commit access as of now.
Could you please commit it on my behalf with an annotation mentioning the contributor?
May 9 2018
Yes, it is fine.
May 7 2018
This patch has been quite inactive for some time.
Are there any issues with this diff which are preventing it from getting committed to Polly codebase?
Apr 21 2018
Updates in the new diff:
- Attached a test case run-time-check-many-piecewise-aliasing.ll with appropriate checks.
- Incorporating these changes on the latest version of Polly present, thereby updating the diff.
- Summary of the changes in this patch
Apr 20 2018
I think the given test case is sufficient enough for this fix. When I tried to run this test case manually over opt, after applying Set.simple_hull(), it gave exactly the same reduced set as mentioned in the previous comment.
Apr 17 2018
Apr 16 2018
Updates in this patch:
- Removed the unnecessary alias reference of Set in calculateMinMaxAccess
- Function signature of buildMinMaxAccess has been changed, removing reference to a set.
- Removing MaxDisjunctsInDomain condition
- Calling remove_divs() on Set before polly::simplify()
Apr 14 2018
Changes made to this new patch:
- Modified variable names according to LLVM coding standards.
- Used RunTimeChecksMaxAccessDisjuncts for the initial check.
- Modified the assertion according to @Meinersbur's second suggestion.
Apr 13 2018
Apr 12 2018
Apr 11 2018
Addressing the previous suggestions as well as incorporating some of mine.
Apr 10 2018
Apr 9 2018
Apr 5 2018
Implementing the changes suggested by @Meinersbur
List of failing regression tests:
Apr 1 2018
Mar 29 2018
List of failing regression tests:
Mar 21 2018
Hi all,
Sorry for this delayed response