[llvm-dev] On Loop Distribution pass

Adam Nemet via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 10 14:52:18 PDT 2016


> 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>


More information about the llvm-dev mailing list