Marcello Maggioni
2011-Oct-01 14:26 UTC
[LLVMdev] How to make Polly ignore some non-affine memory accesses
Hello everyone, I'm trying to use LLVM+Polly to obtain a polyhedral representation of some loops to use later for passes I want to implement, but seems like Polly will stop when reaching any statement that has non-affine access functions of the loop bounds discarding the whole SCoP entirely. What I would like to achieve is still getting some information for the statements that , instead, have affine access functions, practically "ignoring" the non-affine ones. There is a way to do such a thing? Thanks Marcello
Tobias Grosser
2011-Oct-01 21:55 UTC
[LLVMdev] How to make Polly ignore some non-affine memory accesses
On 10/01/2011 03:26 PM, Marcello Maggioni wrote:> Hello everyone, > > I'm trying to use LLVM+Polly to obtain a polyhedral representation of > some loops to use later for passes I want to implement, but seems like > Polly will stop when reaching any statement that has non-affine access > functions of the loop bounds discarding the whole SCoP entirely. > > What I would like to achieve is still getting some information for the > statements that , instead, have affine access functions, practically > "ignoring" the non-affine ones. > > There is a way to do such a thing?Hi Marcello, this is not yet integrated into Polly, but a very valuable extension which I planned to integrate myself. In case you want to give it a try, I am very glad to help you. Basically, what you want is to adapt lib/Analysis/ScopDetection.cpp to not reject non-affine constructs. In lib/Analysis/ScopInfo.cpp we would need to adapt the translation into the polyhedral description. Instead of creating a map defining an affine must access (such as Stmt[i,j] -> A[2 * i + j]), we create a map that defines a may access to all elements of the corresponding array. Something like 'Stmt[i,j] -> A[x]'. Cheers Tobi
Marcello Maggioni
2011-Oct-03 14:04 UTC
[LLVMdev] How to make Polly ignore some non-affine memory accesses
Hi Tobias, thanks for the answer. I'll try to give a look to the code you pointed me to , and I'll try to make the modification myself. I'm new to LLVM and Polly, but the code of both seem clean and understandable, so I hope to be able to do it myself. In case I'll ask here for support :) Marcello 2011/10/1 Tobias Grosser <tobias at grosser.es>:> On 10/01/2011 03:26 PM, Marcello Maggioni wrote: >> >> Hello everyone, >> >> I'm trying to use LLVM+Polly to obtain a polyhedral representation of >> some loops to use later for passes I want to implement, but seems like >> Polly will stop when reaching any statement that has non-affine access >> functions of the loop bounds discarding the whole SCoP entirely. >> >> What I would like to achieve is still getting some information for the >> statements that , instead, have affine access functions, practically >> "ignoring" the non-affine ones. >> >> There is a way to do such a thing? > > Hi Marcello, > > this is not yet integrated into Polly, but a very valuable extension which I > planned to integrate myself. In case you want to give it a try, > I am very glad to help you. > > Basically, what you want is to adapt lib/Analysis/ScopDetection.cpp to > not reject non-affine constructs. In lib/Analysis/ScopInfo.cpp we would > need to adapt the translation into the polyhedral description. Instead of > creating a map defining an affine must access (such as > Stmt[i,j] -> A[2 * i + j]), we create a map that defines a may access to all > elements of the corresponding array. Something like 'Stmt[i,j] -> A[x]'. > > Cheers > Tobi > >
Maybe Matching Threads
- [LLVMdev] How to make Polly ignore some non-affine memory accesses
- [LLVMdev] How to make Polly ignore some non-affine memory accesses
- [LLVMdev] How to make Polly ignore some non-affine memory accesses
- [LLVMdev] Polly and non affine branches in ScoPs
- [LLVMdev] Polly and non affine branches in ScoPs