Venkataramanan Kumar via llvm-dev
2018-Sep-18 13:30 UTC
[llvm-dev] Regarding Dependence distance dump
Hi,
For the below test case, I need the dependence distance between the array
references "a[j][i]" and "a[j-1][i-2]".
--Snip--
int a[5][5];
int b[10];
void test()
{
for (int j=1;j<5;j++)
for (int i=2;i<5;i++)
{
a[j][i] = 3.0;
b[i]= a[j-1][i-2] ;
}
}
--Snip-
Compile steps
clang -O1 -emit-llvm -S test.c
opt -analyze -da dist.ll
I tried dumping the dependence information with LLVM trunk (2018_09_17), it
shows:
Printing analysis 'Dependence Analysis' for function 'test':
da analyze - none!
da analyze - flow [< <>]! <== dumps direction vector
da analyze - none!
da analyze - none!
da analyze - none!
da analyze - consistent output [S 0]!
LLVM Release 6.0.1 dumps the expected distance.
Printing analysis 'Dependence Analysis' for function 'test':
da analyze - none!
da analyze - consistent flow [1 2]!
da analyze - none!
da analyze - none!
da analyze - none!
da analyze - consistent output [S 0]!
In trunk, it is now showing directions instead of distances.
How to get the dependence distance?
regards,
Venkat.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20180918/8ec02f89/attachment.html>
Venkataramanan Kumar via llvm-dev
2018-Sep-19 09:58 UTC
[llvm-dev] Regarding Dependence distance dump
Hi,
I tired to see when this behavior changed in LLVM.
It seems to start from.
--snip--
commit 95e5d37d5868ebde2302bc302c1e0af407c5646d
Author: Sebastian Pop <sebpop at gmail.com>
Date: Tue Mar 6 21:55:59 2018 +0000
DA: remove uses of GEP, only ask SCEV
--snip--
https://reviews.llvm.org/D35430
Review URL says "GEP" based approach was wrong for multidimensional
array
references. The LLVM-DA now uses SCEV representation. But why we are not
getting the distance with SCEV? Current DA will not work for
multidimensional arrays?
I need to get dependence distance for a transformation that I am working
on. How do I get distance for such cases, esp multidimensional arrays?
Thanks and regards,
Venkat.
On Tue, 18 Sep 2018 at 19:00, Venkataramanan Kumar <
venkataramanan.kumar.llvm at gmail.com> wrote:
> Hi,
>
> For the below test case, I need the dependence distance between the array
> references "a[j][i]" and "a[j-1][i-2]".
>
> --Snip--
> int a[5][5];
> int b[10];
>
> void test()
> {
> for (int j=1;j<5;j++)
> for (int i=2;i<5;i++)
> {
> a[j][i] = 3.0;
> b[i]= a[j-1][i-2] ;
> }
> }
> --Snip-
>
> Compile steps
> clang -O1 -emit-llvm -S test.c
> opt -analyze -da dist.ll
>
> I tried dumping the dependence information with LLVM trunk (2018_09_17),
> it shows:
>
> Printing analysis 'Dependence Analysis' for function
'test':
> da analyze - none!
> da analyze - flow [< <>]! <== dumps direction vector
> da analyze - none!
> da analyze - none!
> da analyze - none!
> da analyze - consistent output [S 0]!
>
> LLVM Release 6.0.1 dumps the expected distance.
> Printing analysis 'Dependence Analysis' for function
'test':
> da analyze - none!
> da analyze - consistent flow [1 2]!
> da analyze - none!
> da analyze - none!
> da analyze - none!
> da analyze - consistent output [S 0]!
>
> In trunk, it is now showing directions instead of distances.
> How to get the dependence distance?
>
> regards,
> Venkat.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20180919/60e3b1b6/attachment.html>
Sebastian Pop via llvm-dev
2018-Sep-19 22:26 UTC
[llvm-dev] Regarding Dependence distance dump
On Wed, Sep 19, 2018 at 4:58 AM Venkataramanan Kumar < venkataramanan.kumar.llvm at gmail.com> wrote:> Hi, > > I tired to see when this behavior changed in LLVM. > It seems to start from. > --snip-- > commit 95e5d37d5868ebde2302bc302c1e0af407c5646d > Author: Sebastian Pop <sebpop at gmail.com> > Date: Tue Mar 6 21:55:59 2018 +0000 > > DA: remove uses of GEP, only ask SCEV > --snip-- > > https://reviews.llvm.org/D35430 > Review URL says "GEP" based approach was wrong for multidimensional array > references. The LLVM-DA now uses SCEV representation. But why we are not > getting the distance with SCEV? Current DA will not work for > multidimensional arrays? >It should work with delinearization of multi-dim arrays.> > I need to get dependence distance for a transformation that I am working > on. How do I get distance for such cases, esp multidimensional arrays? > > Thanks and regards, > Venkat. > > On Tue, 18 Sep 2018 at 19:00, Venkataramanan Kumar < > venkataramanan.kumar.llvm at gmail.com> wrote: > >> Hi, >> >> For the below test case, I need the dependence distance between the array >> references "a[j][i]" and "a[j-1][i-2]". >> >> --Snip-- >> int a[5][5]; >> int b[10]; >> >> void test() >> { >> for (int j=1;j<5;j++) >> for (int i=2;i<5;i++) >> { >> a[j][i] = 3.0; >> b[i]= a[j-1][i-2] ; >> } >> } >> --Snip- >> >> Compile steps >> clang -O1 -emit-llvm -S test.c >> opt -analyze -da dist.ll >> >>you are missing the -delinearize flag to opt.> I tried dumping the dependence information with LLVM trunk (2018_09_17), >> it shows: >> >> Printing analysis 'Dependence Analysis' for function 'test': >> da analyze - none! >> da analyze - flow [< <>]! <== dumps direction vector >> da analyze - none! >> da analyze - none! >> da analyze - none! >> da analyze - consistent output [S 0]! >> >> LLVM Release 6.0.1 dumps the expected distance. >> Printing analysis 'Dependence Analysis' for function 'test': >> da analyze - none! >> da analyze - consistent flow [1 2]! >> da analyze - none! >> da analyze - none! >> da analyze - none! >> da analyze - consistent output [S 0]! >> >> In trunk, it is now showing directions instead of distances. >> How to get the dependence distance? >> >> regards, >> Venkat. >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180919/1937f35d/attachment.html>