David Greene via llvm-dev
2020-Jul-06 14:50 UTC
[llvm-dev] How to get information about data dependencies?
Michael Kruse via llvm-dev <llvm-dev at lists.llvm.org> writes:> LLVM has multiple dependence analyses, each with its up- and downsides: > > * llvm::DependenceAnalysis > * llvm::LoopAccessAnalysisCan someone explain the differences between these? As far as I can tell they essentially do the same thing (though perhaps one is more precise?). LAA seems to be used by vectorization (what else?) while DA seems to be used by loop transformations (what else?). I am not a loop opt guy so while I'm familiar with the basic ideas, the details are somewhat lost on me. Is there a reason to have two passes or should they be combined and maintained as one pass? If I have need of dependence analysis it's not clear which I should use and the comments are not much help. -David
Michael Kruse via llvm-dev
2020-Jul-06 15:26 UTC
[llvm-dev] How to get information about data dependencies?
AFAIK they are independent developments. LoopAccessAnalysis was extracted out of the LoopVectorizer in 2015, and first developed in 2013 (https://github.com/llvm/llvm-project/commit/d517976758c8674bdcd4c74457f7a83f20e432c5) DependenceAnalysis was a from-scratch implementation from 2012 (https://github.com/llvm/llvm-project/commit/59b61b9e2c549956b1094417a72c3943c20c9234) I do not know why LoopVectorize would not make use of DependenceAnalysis in 2013. Michael Am Mo., 6. Juli 2020 um 09:51 Uhr schrieb David Greene <david.greene at hpe.com>:> > Michael Kruse via llvm-dev <llvm-dev at lists.llvm.org> writes: > > > LLVM has multiple dependence analyses, each with its up- and downsides: > > > > * llvm::DependenceAnalysis > > * llvm::LoopAccessAnalysis > > Can someone explain the differences between these? As far as I can tell > they essentially do the same thing (though perhaps one is more > precise?). LAA seems to be used by vectorization (what else?) while DA > seems to be used by loop transformations (what else?). > > I am not a loop opt guy so while I'm familiar with the basic ideas, the > details are somewhat lost on me. Is there a reason to have two passes > or should they be combined and maintained as one pass? If I have need > of dependence analysis it's not clear which I should use and the > comments are not much help. > > -David
David Greene via llvm-dev
2020-Jul-07 15:16 UTC
[llvm-dev] How to get information about data dependencies?
Michael Kruse via llvm-dev <llvm-dev at lists.llvm.org> writes:> AFAIK they are independent developments. LoopAccessAnalysis was > extracted out of the LoopVectorizer in 2015, and first developed in > 2013 (https://github.com/llvm/llvm-project/commit/d517976758c8674bdcd4c74457f7a83f20e432c5) > > DependenceAnalysis was a from-scratch implementation from 2012 > (https://github.com/llvm/llvm-project/commit/59b61b9e2c549956b1094417a72c3943c20c9234) > > I do not know why LoopVectorize would not make use of > DependenceAnalysis in 2013.Is anyone looking at unifying these? It's super confusing as things stand. -David> Am Mo., 6. Juli 2020 um 09:51 Uhr schrieb David Greene <david.greene at hpe.com>: >> >> Michael Kruse via llvm-dev <llvm-dev at lists.llvm.org> writes: >> >> > LLVM has multiple dependence analyses, each with its up- and downsides: >> > >> > * llvm::DependenceAnalysis >> > * llvm::LoopAccessAnalysis >> >> Can someone explain the differences between these? As far as I can tell >> they essentially do the same thing (though perhaps one is more >> precise?). LAA seems to be used by vectorization (what else?) while DA >> seems to be used by loop transformations (what else?). >> >> I am not a loop opt guy so while I'm familiar with the basic ideas, the >> details are somewhat lost on me. Is there a reason to have two passes >> or should they be combined and maintained as one pass? If I have need >> of dependence analysis it's not clear which I should use and the >> comments are not much help. >> >> -David > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev