search for: isparallel

Displaying 19 results from an estimated 19 matches for "isparallel".

2016 May 07
3
[GSoC 2016] Introduction - Polly as an Analysis pass in LLVM
...ction pass to be used by PolyhedralInfo pass as mentioned below. 2: Decouple DependenceInfo object from pass and create two passes. Same as above. 3: Create the interface PolyhedralInfo, which will extract Memory Access wise dependence information from Polly and provide few simple interfaces like isParallel(), isVectorizable(), tripCount(Loop&). Please feel free to post your comments and suggestions on this. [1] https://docs.google.com/document/d/1QyUzL3OOwJSI91lDqr7VsvqUsFyTY9FlpAwbGSipUtw/edit# [2] https://groups.google.com/forum/#!topic/polly-dev/DuRxNmKfEnM Regards, Utpal Bora Ph.D. Schol...
2013 Jan 30
0
[LLVMdev] [PATCH] parallel loop metadata
...in such metadata. I agree. Thus, let's start with the 'parallel' semantics first, not the vague ones. A conclusion of some kind for me to update the patch: 1) Rename the loop branch metadata back to llvm.loop.parallel. I'll add a definition of its semantics (as comments to Loop::isParallel()): No loop-carried dependency checking at all can be assumed with this type of loops. If the compiler does some analysis to improve the performance or other reasons, it still can, but is not required to do so. 2) Keep the memory accessing instruction metadata as it is. At least until something...
2013 Jan 30
2
[LLVMdev] [PATCH] parallel loop metadata
Hi, In a personal capacity I'm quite interested in the issues of producing from a high-level language some LLVM IR which is labelled with vectorization info (including potentially actually reordering data in memory). | I don't have any objections. I think the only requirement is that the semantics are clearly defined. I think that's very important :-) | Personally I think this
2013 Jan 28
2
[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
On 01/28/2013 06:45 PM, Nadav Rotem wrote: > I am okay with this patch, assuming that you follow the review of Tobias > and Renato and provide a separate patch for the min-iter-count and a few > test cases. OK. Any opinions on the location of the isParallelLoop() check? Shall I put it to Loop so it is more widely accessible? I.e. Loop->isParallel(). -- Pekka
2013 Jan 30
3
[LLVMdev] [PATCH] parallel loop metadata
..., let's start with the 'parallel' semantics first, not > the vague ones. > > A conclusion of some kind for me to update the patch: > > 1) Rename the loop branch metadata back to llvm.loop.parallel. > > I'll add a definition of its semantics (as comments to Loop::isParallel()): Hello Pekka, I think it would be better to add a section to the LangRef: http://llvm.org/docs/LangRef.html#metadata A good comment would be helpful, too, but LangRef should be normative. Dmitri -- main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if (j){printf("%d\n&...
2013 Feb 28
1
[LLVMdev] parallel loop metadata simplification
...be used for anything > during optimizations (as it's not safe to do so!). > Those are fair points and I can't say whether or not there are other potential users. Certainly clang could use custom loop metadata and the pass could live in its codegen. Another option is two make Loop::isParallel aware of both safe and unsafe parallel metadata and not requires translation at all. In practice, passes like reg2mem are not run so the concern goes away. Perhaps a single loop metadata is good enough for most uses? paul > -- > --Pekka
2013 Feb 08
0
[LLVMdev] Parallel Loop Metadata
...fragile, and it's also uncertain if it's possible to implement it. IMHO, the best alternative presented so far is to have both metadata types and potentially exploit the mem.parallel_loop_access MD even if there were non-annotated instructions in the loop to *help* the dependency analysis. isParallel() would stay as is now in the patch, it can be used as a short cut check for a loop of which accesses all have the metadata (to skip the whole dependency checking). -- --Pekka
2013 Jan 31
0
[LLVMdev] [PATCH] parallel loop metadata
Dear all, Here's an updated version of the parallel loop metadata patch. It includes documentation for the new metadata types with a semantics description. -- Pekka -------------- next part -------------- A non-text attachment was scrubbed... Name: parallel-loop-metadata.patch Type: text/x-patch Size: 12972 bytes Desc: not available URL:
2016 Jun 20
2
[GSoC 2016] Polly as an Analysis pass - Midterm report
...on. 3. These patches are currently under review and I am incorporating changes as suggested by the Polly community. 4. Implemented first version of an interface to Polly's analysis passes- PolyhedralInfo pass (D21486 <http://reviews.llvm.org/D21486>). Implemented isParallel(Loop *) interface to check parallelism of a loop. Pending Work: 1. Complete the interface - PolyhederalInfo pass. Currently I am working on providing more interfaces to check whether a loop is vectorizable or not and to get loop trip count. - isVectorizable(Loop *L, *MinDe...
2013 Feb 08
3
[LLVMdev] Parallel Loop Metadata
On 02/08/2013 07:02 PM, Sebastian Pop wrote: > Nadav Rotem wrote: >> >> On Feb 7, 2013, at 10:55 AM, Pekka Jääskeläinen <pekka.jaaskelainen at tut.fi> wrote: >> >>> Hi Nadav, >>> >>> On 02/07/2013 07:46 PM, Nadav Rotem wrote: >>>> Pekka suggested that we add two kind of metadata: llvm.loop.parallel >>>> (attached to each
2013 Jan 28
0
[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
...eläinen wrote: > On 01/28/2013 06:45 PM, Nadav Rotem wrote: >> I am okay with this patch, assuming that you follow the review of Tobias >> and Renato and provide a separate patch for the min-iter-count and a few >> test cases. > > OK. Any opinions on the location of the isParallelLoop() check? Shall I > put it to Loop so it is more widely accessible? I.e. Loop->isParallel(). > > -- > Pekka > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiu...
2013 Jan 29
0
[LLVMdev] [PATCH] parallel loop metadata
...arallel >> loops. >> >> It uses two types of metadata: >> llvm.loop.ignore_assumed_deps attached to the loop latch's >> branch instruction and llvm.mem.parallel_loop_access attached to >> all of the parallel loop's memory accesses. >> >> Loop::isParallel() checks these. If llvm.loop.ignore_assumed_deps >> is found, it ensures all the memory instructions inside the >> loop body have the llvm.mem.parallel_loop_access attached before >> returning true. >> >> Test included for the LoopVectorizer that uses this info to para...
2013 Feb 28
0
[LLVMdev] parallel loop metadata simplification
Hi Paul, On 02/28/2013 09:30 PM, Redmond, Paul wrote: > I'd like to reopen the discussion on requiring the > llvm.mem.parallel_loop_access metadata. I understand the reason for the > metadata is to protect against transformations that may introduce unsafe > parallel memory accesses (the reg2mem example.) I'm wondering if perhaps we > can make the metadata more user-friendly
2013 Jan 28
0
[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
Hi Pekka, I am okay with this patch, assuming that you follow the review of Tobias and Renato and provide a separate patch for the min-iter-count and a few test cases. I think that it would be a good idea to start a new thread and to discuss the best way to annotate loops in LLVM. Thanks, Nadav On Jan 28, 2013, at 5:49 AM, Pekka Jääskeläinen <pekka.jaaskelainen at tut.fi> wrote: >
2013 Feb 08
3
[LLVMdev] Parallel Loop Metadata
...ertain if > it's possible to implement it. > > IMHO, the best alternative presented so far is to have both metadata types > and potentially exploit the mem.parallel_loop_access MD even if there were > non-annotated instructions in the loop to *help* the dependency analysis. > isParallel() would stay as is now in the patch, it can be used as a short cut > check for a loop of which accesses all have the metadata (to skip the whole > dependency checking). > > -- > --Pekka > > _______________________________________________ > LLVM Developers mailing list &gt...
2020 Jan 03
10
Writing loop transformations on the right representation is more productive
...ASLibary ? convertToBlasLibCall(Root) : applyBLIS(Root): Worklist.replace(Root, Optimized); return; } // Mid level: recognize stencils if (isStencil(Root)) ... // Mid level: Map to compute hierarchy (here: simd -> SMT -> core -> socket for CPUs) if (isParallel(Root) fitsWorkingSet(Root.getBody(), LLCSize) && && isParallel(Root.getPerfectlyNestedLoop(1)) && fitsWorkingSet(Root.getPerfectlyNestedLoop(2).getBody(), L2Size) && isParallel(Root.getPerfectlyNestedLoop(2)) && fitsWorkingSet(Root.g...
2013 Jan 28
3
[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
Hi Renato, On 01/28/2013 03:22 PM, Renato Golin wrote: > This seems an awfully specific check on a generic part of the code... If True. Perhaps the check is better encapsulated, e.g., in the Loop class? Or, if there's such thing as a loop-carried data dependency analyzer, the correct place could be there, as a trivial "no deps" analysis. > this metadata standard in any
2013 Jan 28
5
[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
----- Original Message ----- > From: "Nadav Rotem" <nrotem at apple.com> > To: "Pekka Jääskeläinen" <pekka.jaaskelainen at tut.fi> > Cc: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu> > Sent: Monday, January 28, 2013 10:45:36 AM > Subject: Re: [LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer > > Hi Pekka,
2013 Feb 28
5
[LLVMdev] parallel loop metadata simplification
Hi, I've been working on clang codegen for #pragma ivdep and creating the llvm.mem.parallel_loop_access metadata seems quite difficult. The main problem is that there are so many places where loads and stores are created and all of them need to be changed when emitting a parallel loop. Note that creating llvm.loop.parallel is not a problem. One option is to modify IRBuilder to enable