greened at obbligato.org
2012-Oct-02 01:16 UTC
[LLVMdev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
Sanjoy Das <sanjoy at playingwithpointers.com> writes:> In short, I propose a intrinsic based approach which hinges on the > concept of a "parallel map". The immediate effect of using intrinsics > is that we no longer have to worry about missing metadata. Moreover, > we are still free to lower the intrinsics in a variety of ways -- > including vectorizing them or lowering them to calls to an actual > openmp backend.I'll re-ask here since this is in its own thread. Why can't we just make ordinary function calls to runtime routines? -David
Chris Lattner
2012-Oct-02 04:26 UTC
[LLVMdev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
On Oct 1, 2012, at 6:16 PM, greened at obbligato.org wrote:> Sanjoy Das <sanjoy at playingwithpointers.com> writes: > >> In short, I propose a intrinsic based approach which hinges on the >> concept of a "parallel map". The immediate effect of using intrinsics >> is that we no longer have to worry about missing metadata. Moreover, >> we are still free to lower the intrinsics in a variety of ways -- >> including vectorizing them or lowering them to calls to an actual >> openmp backend. > > I'll re-ask here since this is in its own thread. > > Why can't we just make ordinary function calls to runtime routines?I agree. I can't imagine any practical way that a metadata-based approach could be preserved by optimizers. -Chris
Hal Finkel
2012-Oct-02 05:37 UTC
[LLVMdev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
On Mon, 01 Oct 2012 21:26:54 -0700 Chris Lattner <clattner at apple.com> wrote:> > On Oct 1, 2012, at 6:16 PM, greened at obbligato.org wrote: > > > Sanjoy Das <sanjoy at playingwithpointers.com> writes: > > > >> In short, I propose a intrinsic based approach which hinges on the > >> concept of a "parallel map". The immediate effect of using > >> intrinsics is that we no longer have to worry about missing > >> metadata. Moreover, we are still free to lower the intrinsics in > >> a variety of ways -- including vectorizing them or lowering them > >> to calls to an actual openmp backend. > > > > I'll re-ask here since this is in its own thread. > > > > Why can't we just make ordinary function calls to runtime routines? > > I agree. I can't imagine any practical way that a metadata-based > approach could be preserved by optimizers.Regarding the metadata approach, it depends on what you mean by preserved. The trick is to make sure that transformations that don't understand the metadata can't cause miscompiles. The specific scheme that I proposed used a combination of procedurization and cross-referencing metadata such that invalidated parallel metadata can be detected and the entire enclosing parallel region can be dropped. The proposal from Intel, which more-heavily uses intrinsics, has other advantages, but will require more modifications to existing passes to realize its potential optimization benefits. -Hal> > -Chris > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
Eric Christopher
2012-Oct-02 17:56 UTC
[LLVMdev] [cfe-dev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
On Mon, Oct 1, 2012 at 9:26 PM, Chris Lattner <clattner at apple.com> wrote:> > On Oct 1, 2012, at 6:16 PM, greened at obbligato.org wrote: > >> Sanjoy Das <sanjoy at playingwithpointers.com> writes: >> >>> In short, I propose a intrinsic based approach which hinges on the >>> concept of a "parallel map". The immediate effect of using intrinsics >>> is that we no longer have to worry about missing metadata. Moreover, >>> we are still free to lower the intrinsics in a variety of ways -- >>> including vectorizing them or lowering them to calls to an actual >>> openmp backend. >> >> I'll re-ask here since this is in its own thread. >> >> Why can't we just make ordinary function calls to runtime routines? > > I agree. I can't imagine any practical way that a metadata-based approach could be preserved by optimizers. >Yes, this. Absolutely. -eric
Hal Finkel
2012-Oct-02 23:42 UTC
[LLVMdev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
On Mon, 01 Oct 2012 21:26:54 -0700 Chris Lattner <clattner at apple.com> wrote:> > On Oct 1, 2012, at 6:16 PM, greened at obbligato.org wrote: > > > Sanjoy Das <sanjoy at playingwithpointers.com> writes: > > > >> In short, I propose a intrinsic based approach which hinges on the > >> concept of a "parallel map". The immediate effect of using > >> intrinsics is that we no longer have to worry about missing > >> metadata. Moreover, we are still free to lower the intrinsics in > >> a variety of ways -- including vectorizing them or lowering them > >> to calls to an actual openmp backend. > > > > I'll re-ask here since this is in its own thread. > > > > Why can't we just make ordinary function calls to runtime routines? > > I agree. I can't imagine any practical way that a metadata-based > approach could be preserved by optimizers.Do you think it would be better to turn these things into actual syntax extensions? This would obviously require more infrastructure work, but it looks like we have a sufficient number of interested parties to implement the changes. Then we'd still need to decide what the appropriate level of abstraction should be at the IR level. Opinions? Thanks again, Hal> > -Chris > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
Possibly Parallel Threads
- [LLVMdev] [cfe-dev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
- [LLVMdev] [cfe-dev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
- [LLVMdev] [cfe-dev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
- [LLVMdev] [cfe-dev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
- [LLVMdev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)