search for: ivdeps

Displaying 20 results from an estimated 69 matches for "ivdeps".

Did you mean: ivdep
2019 Aug 15
4
[LLVM] (RFC) Addition/Support of new Vectorization Pragmas in LLVM
The ivdep pragma is designed to do exactly what the name states - ignore vector dependencies.  Cray Research first implemented this in 1978 in their CFT compiler, and has supported it since. This pragma is typically used by application developers who want vectorized code when the compiler cannot automatically determine safety; it is not equivalent to the OpenMP SIMD pragma in that the compiler is
2013 May 23
3
[LLVMdev] LLVM Loop Vectorizer puzzle
On May 23, 2013, at 8:52 AM, "Redmond, Paul" <paul.redmond at intel.com> wrote: > > !0 = metadata !{ metadata !1, metadata !2 } > !1 = metadata !{ metadata !"llvm.loop.parallel" } > !2 = metadata !{ metadata !"llvm.vectorization.vector_width", i32 8 } > > I'm not even sure you would need the llvm.loop.parallel anymore since the
2013 May 23
0
[LLVMdev] LLVM Loop Vectorizer puzzle
On Thu, May 23, 2013 at 12:02 PM, Nadav Rotem <nrotem at apple.com> wrote: > > On May 23, 2013, at 8:52 AM, "Redmond, Paul" <paul.redmond at intel.com> > wrote: > > > !0 = metadata !{ metadata !1, metadata !2 } > !1 = metadata !{ metadata !"llvm.loop.parallel" } > !2 = metadata !{ metadata !"llvm.vectorization.vector_width", i32 8
2013 Mar 03
2
[LLVMdev] parallel loop metadata simplification
On 03/03/2013 02:34 PM, Tobias Grosser wrote: > Meaning they are due to an array or pointer access. What about loop-scope arrays? void foo(long *A, long b) { long i; #pragma ivdep for (i = 0; i < 100; i++) { long t[100]; t[0] = i + 2; A[i] = A[i+b] + t[0]; } } Clang places the alloca for t to the entry block, creating a new race condition.
2013 Mar 03
0
[LLVMdev] parallel loop metadata simplification
...; i < 100; i++) { > long t[100]; > t[0] = i + 2; > A[i] = A[i+b] + t[0]; > } > } > > Clang places the alloca for t to the entry block, creating > a new race condition. Very good example, indeed. Is there a formal definition of what #pragma ivdeps means? I see two options here: 1) No memory based dependences at all We assume all t[*] allocations point to the same memory location. By defining #pragma ivdep the user states that there are no memory dependences caused by the t[*] array. In this case the example above would be an invalid use of...
2013 Mar 03
2
[LLVMdev] parallel loop metadata simplification
On 03/03/2013 06:43 PM, Tobias Grosser wrote: > Very good example, indeed. Is there a formal definition of what > #pragma ivdeps means? I see two options here: In the previous discussion we could not find a proper definition for #pragma ivdep so we concluded we can treat it as a statement of "treat the loop as parallel, I do not expect any dependency checking by the compiler", thus what the llvm.loop.parallel is n...
2013 May 23
2
[LLVMdev] LLVM Loop Vectorizer puzzle
On May 23, 2013, at 10:37 AM, Cameron McInally <cameron.mcinally at nyu.edu> wrote: > In all fairness, I do not believe that ivdep is an ICC-specific pragma. There are many compilers that support ivdep and lots of legacy (and modern) codes that benefit from it. Seems silly, to me at least, to reinvent the wheel. Hi Cameron, The history of the idvep pragma is fascinating. I did not
2019 Aug 09
3
[LLVM] (RFC) Addition/Support of new Vectorization Pragmas in LLVM
> There is a fundamental problem with the way that ivdep is defined by Intel's current documentation, at least for C/C++. As you note in your Google doc, it essentially says that the optimizer may ignore loop-carried dependencies except for those dependencies it can definitely prove are present. These are not semantics that any other compiler can actually replicate, and is not equivalent to
2013 Mar 03
0
[LLVMdev] parallel loop metadata simplification
....es> > Cc: llvmdev at cs.uiuc.edu > Sent: Sunday, March 3, 2013 11:49:03 AM > Subject: Re: [LLVMdev] parallel loop metadata simplification > > On 03/03/2013 06:43 PM, Tobias Grosser wrote: > > Very good example, indeed. Is there a formal definition of what > > #pragma ivdeps means? I see two options here: > > In the previous discussion we could not find a proper > definition for #pragma ivdep so we concluded we can treat it > as a statement of "treat the loop as parallel, I do not expect > any dependency checking by the compiler", thus what th...
2019 Aug 08
3
[LLVM] (RFC) Addition/Support of new Vectorization Pragmas in LLVM
On 8/8/19 2:03 PM, Hal Finkel wrote: Hi, First, as a high-level note, you posted a link to a Google doc, and at the end of the Google doc, you have a list of questions that you'd like answered. In the future, please put the questions directly in the email. For one thing, more people will read your email than will open your Google doc. Second, having the questions in the email should allow a
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 Mar 02
4
[LLVMdev] parallel loop metadata simplification
On 03/01/2013 10:05 PM, Redmond, Paul wrote: [...] > I have discovered that you can provide a custom inserter to IRBuilder (who knew!). This has basically solved all my problems and allowed me to generate the proper metadata with minimal changes to clang codegen. Currently it adds the metadata to all loads and stores but I don't think this is a problem and can be refined later if necessary.
2019 Aug 08
4
[LLVM] (RFC) Addition/Support of new Vectorization Pragmas in LLVM
Hello all, We are students from Indian Institute of Technology(IIT), Hyderabad, we would like to propose the addition of the following pragmas in LLVM that aide in (or possibly increase the scope of) vectorization in LLVM (in comparison with other compilers). 1. ivdep 2. Nontemporal 3. [no]vecremainder 4. [no]mask_readwrite 5. [un]aligned Could you please
2013 May 23
4
[LLVMdev] LLVM Loop Vectorizer puzzle
On May 23, 2013, at 9:15 AM, Renato Golin <renato.golin at linaro.org> wrote: > On 23 May 2013 14:52, Arnold Schwaighofer <aschwaighofer at apple.com> wrote: > I would like us to grow a few annotations, among others, one to force vectorization irrespective whether the loop vectorizer thinks it is beneficial or not - however, this is future music. > > Isn't that part
2013 Jan 28
0
[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
On 01/28/2013 06:51 PM, Hal Finkel wrote: > Is this sufficient to implement #pragma ivdep in clang? I'm not completely sure of this: "Note: The proven dependencies that prevent vectorization are not ignored, only assumed dependencies are ignored."
2020 May 18
2
LLVM's loop unroller & llvm.loop.parallel_accesses
Would you guys be open to supporting a new hint with the right semantics, like e.g. llvm.loop.noalias_accesses?! I would need to find support in clang however and the main point of support would be the loop unroller behaving as stated in the OP. On Thu, May 14, 2020 at 3:04 PM Michael Kruse <llvmdev at meinersbur.de> wrote: > Trivial example: > > #pragma clang loop
2019 Aug 13
2
[LLVM] (RFC) Addition/Support of new Vectorization Pragmas in LLVM
vecremainder/novecremainder: Should the pragma simply call the vectorizer to attempt to vectorize the remainder loop, or should the vectorizer use a different method? > > Something like that. There were patches posted at some point to enable tail-loop vectorization. At this point, I imagine that you'd construct a VPlan with the vectorized tail. Yep, committed in
2013 Jan 28
0
[LLVMdev] parallel loop awareness to the LoopVectorizer
About these disclaimers associated with ivdep and such... You guys are overthinking it. They're just saying you cannot force the compiler to vectorize or parallelize a loop that it knows (can prove!) is not a parallel loop. They are not obliging the compiler to do dependence analysis or alias analysis or anything. For example len = 0; while (A[i]) { i++; len++; } Assert all you want;
2013 May 23
0
[LLVMdev] LLVM Loop Vectorizer puzzle
On 2013-05-23, at 10:37 AM, Arnold Schwaighofer wrote: > > On May 23, 2013, at 9:15 AM, Renato Golin <renato.golin at linaro.org> wrote: > >> On 23 May 2013 14:52, Arnold Schwaighofer <aschwaighofer at apple.com> wrote: >> I would like us to grow a few annotations, among others, one to force vectorization irrespective whether the loop vectorizer thinks it is
2020 May 14
3
LLVM's loop unroller & llvm.loop.parallel_accesses
This is interesting! So are you saying that loop.parallel_accesses strictly loop parallel, and says nothing about aliasing? I see, I guess we may have been "abusing" the hint and re-purposed it. But isn't llvm's vectorizer using loop.parallel_accesses to vectorize loops including vectorize memory accesses that if you ignore loop-carried dependencies, usually means effectively