<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">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.<div class=""><br class=""></div><div class="">Thanks,</div><div class="">Gerolf<br class=""><div><blockquote type="cite" class=""><div class="">On Oct 9, 2016, at 10:09 AM, Dangeti Tharun kumar via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Dear community,<div class=""><br class=""></div><div class="">Our team at IITH have been experimenting with loop-distribution pass in LLVM. We see the following results on few benchmarks.</div><div class=""><br class=""></div><div class=""><span id="gmail-docs-internal-guid-e7e6be9a-aa54-3006-2059-effa9157d485" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;" class=""><span style="font-size: 13.3333px; font-family: 'courier new'; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">clang -O3 -mllvm -enable-loop-distribute -Rpass=loop-distribute file.c</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;" class=""><span style="font-size: 13.3333px; font-family: 'courier new'; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class=""><span style="font-size:13.3333px;line-height:18.4px" class="">clang -O3 -mllvm -enable-loop-distribute -Rpass-analysis=loop-distribute file.c</span><br class=""></span></div><br class=""><br class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;" class=""><font face="monospace, monospace" class=""><a href="http://crd.lbl.gov/departments/computer-science/PAR/research/previous-projects/torch-testbed/" style="text-decoration:none" class=""><span style="font-size:16px;font-weight:700;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class="">TORCH</span></a><span style="font-size: 16px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">:</span></font></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class=""><font face="monospace, monospace" class="">There are nearly 488 loops in this benchmark. LLVM was not able to distribute any loop.</font></span></div><font face="monospace, monospace" class=""><br class=""></font><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;" class=""><font face="monospace, monospace" class=""><a href="https://github.com/shantanuatiith/TSVC_" style="text-decoration:none" class=""><span style="font-size:16px;font-weight:700;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class="">TSVC</span></a><span style="font-size: 16px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">:</span></font></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><font face="monospace, monospace" class=""><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">There are 151 loops coded in plain ‘C’, </span><span style="font-size: 16px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">none</span><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class=""> of them got distributed. TSVC has particularly candidates valid for distribution like the one below. The inner loop in this example can be distributed.</span></font></div><font face="monospace, monospace" class=""><br class=""></font><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class="">for (int nl = 0; nl < ntimes/2; nl++) {</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class="">for (int i = 1; i < LEN; i++) {</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 108pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class="">a[i] += c[i] * d[i];</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 108pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class="">b[i] = b[i - 1] + a[i] + d[i];</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class="">}</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class="">dummy(a, b, c, d, e, aa, bb, cc, 0.);</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: 36pt;" class=""><span style="font-size:13.3333px;vertical-align:baseline;white-space:pre-wrap;background-color:transparent" class=""><font face="monospace, monospace" color="#444444" class=""> }</font></span></div><font face="monospace, monospace" class=""><br class=""></font><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font face="monospace, monospace" class=""><span style="font-size:16px;vertical-align:baseline;background-color:transparent" class="">     <a href="http://vhosts.eecs.umich.edu/mibench//" style="font-weight:700;white-space:pre-wrap;text-decoration:none" class="">MiBench</a></span><span style="font-size: 16px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">:</span></font></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class=""><font face="monospace, monospace" class="">There are 6539 loops in MiBench. <b class="">None</b> of the loops were distributed by the loop-distribution pass of LLVM.</font></span></div><font face="monospace, monospace" class=""><br class=""></font><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font face="monospace, monospace" class=""><span style="font-size:16px;vertical-align:baseline;background-color:transparent" class="">     <a href="https://github.com/exmatex/CoMD" style="font-weight:700;white-space:pre-wrap;text-decoration:none" class="">CoMD</a></span><span style="font-size: 16px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;" class="">:</span></font></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;" class=""><font face="monospace, monospace" class="">CoMD is a reference implementation of typical classical molecular dynamics algorithms and workloads.</font></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><font face="monospace, monospace" class=""><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;" class="">Out of 112 loops </span><span style="font-size: 16px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;" class="">none</span><span style="font-size: 16px; vertical-align: baseline; white-space: pre-wrap;" class=""> of them are distributed.</span></font></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><span style="font-size: 16px; font-family: arial; vertical-align: baseline; white-space: pre-wrap;" class=""><br class=""></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt; margin-left: 72pt;" class=""><span style="font-size: 16px; font-family: arial; vertical-align: baseline; white-space: pre-wrap;" class=""><br class=""></span></div>For the specific loop I have shown above which is straight forward a good distribution candidate, the remark is "<b class="">loop not distributed: memory operations are safe for vectorization [-Rpass-analysis=loop-distribute]</b>". </span></div><div class=""><span class=""><br class=""></span></div><div class=""><span class="">Can someone reason these results and this remark?</span></div><div class=""><span class=""><br class=""><br class="">I humbly request the community to correct me, if am missing something in my analysis.</span><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class="">Thank you<div class="">D Tharun kumar</div><div class="">CS15MTECH11002</div><div class="">9948373970</div><div class="">CSE-IITH</div></div></div></div></div>
</div></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""></div></div></body></html>