Dangeti Tharun kumar via llvm-dev
2016-Oct-09 17:09 UTC
[llvm-dev] On Loop Distribution pass
Dear community, Our team at IITH have been experimenting with loop-distribution pass in LLVM. We see the following results on few benchmarks. clang -O3 -mllvm -enable-loop-distribute -Rpass=loop-distribute file.c clang -O3 -mllvm -enable-loop-distribute -Rpass-analysis=loop-distribute file.c TORCH <http://crd.lbl.gov/departments/computer-science/PAR/research/previous-projects/torch-testbed/> : There are nearly 488 loops in this benchmark. LLVM was not able to distribute any loop. TSVC <https://github.com/shantanuatiith/TSVC_>: There are 151 loops coded in plain ‘C’, none of them got distributed. TSVC has particularly candidates valid for distribution like the one below. The inner loop in this example can be distributed. for (int nl = 0; nl < ntimes/2; nl++) { for (int i = 1; i < LEN; i++) { a[i] += c[i] * d[i]; b[i] = b[i - 1] + a[i] + d[i]; } dummy(a, b, c, d, e, aa, bb, cc, 0.); } MiBench <http://vhosts.eecs.umich.edu/mibench//>: There are 6539 loops in MiBench. *None* of the loops were distributed by the loop-distribution pass of LLVM. CoMD <https://github.com/exmatex/CoMD>: CoMD is a reference implementation of typical classical molecular dynamics algorithms and workloads. Out of 112 loops none of them are distributed. For the specific loop I have shown above which is straight forward a good distribution candidate, the remark is "*loop not distributed: memory operations are safe for vectorization [-Rpass-analysis=loop-distribute]*". Can someone reason these results and this remark? I humbly request the community to correct me, if am missing something in my analysis. -- Thank you D Tharun kumar CS15MTECH11002 9948373970 CSE-IITH -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161009/f5f8c81b/attachment.html>
----- Original Message -----> From: "Dangeti Tharun kumar via llvm-dev" <llvm-dev at lists.llvm.org> > To: llvm-dev at lists.llvm.org > Cc: "Santanu Das" <cs15mtech11018 at iith.ac.in> > Sent: Sunday, October 9, 2016 12:09:01 PM > Subject: [llvm-dev] On Loop Distribution pass> Dear community,> Our team at IITH have been experimenting with loop-distribution pass > in LLVM. We see the following results on few benchmarks.> clang -O3 -mllvm -enable-loop-distribute -Rpass=loop-distribute > file.c > clang -O3 -mllvm -enable-loop-distribute > -Rpass-analysis=loop-distribute file.c> TORCH : > There are nearly 488 loops in this benchmark. LLVM was not able to > distribute any loop.> TSVC : > There are 151 loops coded in plain ‘C’, none of them got distributed. > TSVC has particularly candidates valid for distribution like the one > below. The inner loop in this example can be distributed.> for (int nl = 0; nl < ntimes/2; nl++) { > for (int i = 1; i < LEN; i++) { > a[i] += c[i] * d[i]; > b[i] = b[i - 1] + a[i] + d[i]; > } > dummy(a, b, c, d, e, aa, bb, cc, 0.); > }> MiBench : > There are 6539 loops in MiBench. None of the loops were distributed > by the loop-distribution pass of LLVM.> CoMD : > CoMD is a reference implementation of typical classical molecular > dynamics algorithms and workloads. > Out of 112 loops none of them are distributed.> For the specific loop I have shown above which is straight forward a > good distribution candidate, the remark is " loop not distributed: > memory operations are safe for vectorization > [-Rpass-analysis=loop-distribute] ".> Can someone reason these results and this remark?The current loop distribution implementation is focused on enabling vectorization. The comment at the top of the file says: // This file implements the Loop Distribution Pass. Its main focus is to // distribute loops that cannot be vectorized due to dependence cycles. It // tries to isolate the offending dependences into a new loop allowing // vectorization of the remaining parts. Hopefully, this helps explain the diagnostic. Regarding why the loop you highlight is not distributed to enable the vectorization of the a[i] update, I don't know. Adam? -Hal> I humbly request the community to correct me, if am missing something > in my analysis.> --> Thank you > D Tharun kumar > CS15MTECH11002 > 9948373970 > CSE-IITH > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-- Hal Finkel Lead, Compiler Technology and Programming Languages Leadership Computing Facility Argonne National Laboratory -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161010/7295d145/attachment.html>
> On Oct 10, 2016, at 2:50 PM, Hal Finkel <hfinkel at anl.gov> wrote: > > > From: "Dangeti Tharun kumar via llvm-dev" <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> > To: llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > Cc: "Santanu Das" <cs15mtech11018 at iith.ac.in <mailto:cs15mtech11018 at iith.ac.in>> > Sent: Sunday, October 9, 2016 12:09:01 PM > Subject: [llvm-dev] On Loop Distribution pass > > Dear community, > > Our team at IITH have been experimenting with loop-distribution pass in LLVM. We see the following results on few benchmarks. > > clang -O3 -mllvm -enable-loop-distribute -Rpass=loop-distribute file.c > clang -O3 -mllvm -enable-loop-distribute -Rpass-analysis=loop-distribute file.c > > > TORCH <http://crd.lbl.gov/departments/computer-science/PAR/research/previous-projects/torch-testbed/>: > There are nearly 488 loops in this benchmark. LLVM was not able to distribute any loop. > > TSVC <https://github.com/shantanuatiith/TSVC_>: > There are 151 loops coded in plain ‘C’, none of them got distributed. TSVC has particularly candidates valid for distribution like the one below. The inner loop in this example can be distributed. > > for (int nl = 0; nl < ntimes/2; nl++) { > for (int i = 1; i < LEN; i++) { > a[i] += c[i] * d[i]; > b[i] = b[i - 1] + a[i] + d[i]; > } > dummy(a, b, c, d, e, aa, bb, cc, 0.); > } > > MiBench <http://vhosts.eecs.umich.edu/mibench//>: > There are 6539 loops in MiBench. None of the loops were distributed by the loop-distribution pass of LLVM. > > CoMD <https://github.com/exmatex/CoMD>: > CoMD is a reference implementation of typical classical molecular dynamics algorithms and workloads. > Out of 112 loops none of them are distributed. > > > For the specific loop I have shown above which is straight forward a good distribution candidate, the remark is "loop not distributed: memory operations are safe for vectorization [-Rpass-analysis=loop-distribute]". > > Can someone reason these results and this remark? > > The current loop distribution implementation is focused on enabling vectorization. The comment at the top of the file says: > > // This file implements the Loop Distribution Pass. Its main focus is to > // distribute loops that cannot be vectorized due to dependence cycles. It > // tries to isolate the offending dependences into a new loop allowing > // vectorization of the remaining parts. > > Hopefully, this helps explain the diagnostic. Regarding why the loop you highlight is not distributed to enable the vectorization of the a[i] update, I don't know. Adam?Yeah, it’s not immediate clear to me why we’re not distributing that. I think it’s s221() from TSVC. I will take a look later. Adam> > -Hal > > I humbly request the community to correct me, if am missing something in my analysis. > > -- > Thank you > D Tharun kumar > CS15MTECH11002 > 9948373970 > CSE-IITH > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> > > > > -- > Hal Finkel > Lead, Compiler Technology and Programming Languages > Leadership Computing Facility > Argonne National Laboratory-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161010/e7620672/attachment.html>
Hi, This is interesting data. I’m wondering if you could figure out (in at least some of the instances) when and why loop distribution would speed-up a benchmark by how much? Apart from some technicalities the major difficulty why LD is off by default is the cost model. Your analysis could shed more light on what it should be. Thanks, Gerolf> On Oct 9, 2016, at 10:09 AM, Dangeti Tharun kumar via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Dear community, > > Our team at IITH have been experimenting with loop-distribution pass in LLVM. We see the following results on few benchmarks. > > clang -O3 -mllvm -enable-loop-distribute -Rpass=loop-distribute file.c > clang -O3 -mllvm -enable-loop-distribute -Rpass-analysis=loop-distribute file.c > > > TORCH <http://crd.lbl.gov/departments/computer-science/PAR/research/previous-projects/torch-testbed/>: > There are nearly 488 loops in this benchmark. LLVM was not able to distribute any loop. > > TSVC <https://github.com/shantanuatiith/TSVC_>: > There are 151 loops coded in plain ‘C’, none of them got distributed. TSVC has particularly candidates valid for distribution like the one below. The inner loop in this example can be distributed. > > for (int nl = 0; nl < ntimes/2; nl++) { > for (int i = 1; i < LEN; i++) { > a[i] += c[i] * d[i]; > b[i] = b[i - 1] + a[i] + d[i]; > } > dummy(a, b, c, d, e, aa, bb, cc, 0.); > } > > MiBench <http://vhosts.eecs.umich.edu/mibench//>: > There are 6539 loops in MiBench. None of the loops were distributed by the loop-distribution pass of LLVM. > > CoMD <https://github.com/exmatex/CoMD>: > CoMD is a reference implementation of typical classical molecular dynamics algorithms and workloads. > Out of 112 loops none of them are distributed. > > > For the specific loop I have shown above which is straight forward a good distribution candidate, the remark is "loop not distributed: memory operations are safe for vectorization [-Rpass-analysis=loop-distribute]". > > Can someone reason these results and this remark? > > > I humbly request the community to correct me, if am missing something in my analysis. > > -- > Thank you > D Tharun kumar > CS15MTECH11002 > 9948373970 > CSE-IITH > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161017/6cde1e7a/attachment.html>