<div dir="ltr">Dear Adam Nemet,<br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 23, 2016 at 11:15 PM, Adam Nemet <span dir="ltr"><<a href="mailto:anemet@apple.com" target="_blank">anemet@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">Hi Dangeti,<div><br><div><span class=""><blockquote type="cite"><div>On Jun 23, 2016, at 8:20 AM, Dangeti Tharun kumar via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div><br><div><div dir="ltr"><div>Dear LLVM Community,</div><div><br></div><div>I am D Tharun Kumar, masters student at Indian Institute of Technology Hyderabad, working in a team to improve current vectorizer in LLVM. As an initial study, we are studying various benchmarks to analyze and compare vectorizing capabilities of LLVM, GCC and ICC. We found that vectorization remarks given by LLVM are vague and brief, comparatively GCC and ICC are giving detailed diagnostics. </div></div></div></blockquote><div><br></div></span><div>Yes this is an area that needs further improvement.  We have some immediate plans to make these more useful.  See the recent llvm-dev threads [1], [2].</div><span class=""><blockquote type="cite"><div><div dir="ltr"><div><div><ul><li>I am interested to know why the LLVM diagnostics are brief and not intuitive (making them less helpful)?</li></ul></div></div></div></div></blockquote></span><div>I think it’s just lack of work or weakness in the analyses to provide more detailed information.  It would be good to file bugs for specific cases where we fall behind.</div><span class=""><blockquote type="cite"><div><div dir="ltr"><div><div><ul><li>In our analysis we never seen llvm trying to vectorize outer loops. Is this well known? Is outer loop vectorization implemented in LLVM as in GCC? (<a href="http://dl.acm.org/citation.cfm?id=1454119" target="_blank">http://dl.acm.org/citation.cfm?id=1454119</a>) If not, is someone working on it?</li></ul></div></div></div></div></blockquote><div><br></div></span><div>I heard various people mention this but I am not sure whether actual work is already taking place.</div><span class=""><br><blockquote type="cite"><div><div dir="ltr"><div><div><ul><li>On the TSVC benchmark suite, out of a total of 151 loops, LLVM, GCC and ICC vectorized 70, 82 and 112 loops respectively. Is the cause for lag of LLVM the inability of LLVM’s vectorizer, or are there any (enabling) optimization passes running before GCC’s vectorizer that are helping GCC perform better?</li></ul></div></div></div></div></blockquote><div><br></div></span><div>I don’t know about the GCC but I’ve seen ICC perform loop transformation more aggressively that can increase the coverage for loop vectorization.  ICC performs Loop Distribution/Fusion/Interchange, etc by default at their highest optimization level.  We have some of these passes (distribution, interchange) but not on by default yet.</div><div><br></div><div>Arguably, there is also some difference between focus areas for these compilers.  I think that ICC has a more HPC focus than LLVM or GCC.  We have Polly which is geared toward more the HPC use cases.</div><span class=""><br><blockquote type="cite"><div><div dir="ltr"><div><div><ul><li>Loop peeling to enhance vectorization is present in GCC and ICC, but, the LLVM remarks don’t say anything about alignment. Does LLVM has this functionality and the vectorizer doesn’t remark about it, or it doesn’t it have the functionality at all?</li></ul></div></div></div></div></blockquote></span><div>We don’t have it.</div><span class=""><br></span></div></div></div></blockquote><span id="docs-internal-guid-fc8e96f9-b955-8c29-f07d-2f15a867c524"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><font color="#000000">About alignment, we tried few examples as below</font></span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color="#000000"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><span class="" style="white-space:pre">   </span></span><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">for(int i = 0; i<N; i++)</span></font></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color="#000000"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><span class="" style="white-space:pre">   </span></span><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">{</span></font></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color="#000000"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><span class="" style="white-space:pre">     </span></span><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><span class="" style="white-space:pre">   </span></span><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">A[i+3] = B[i+1] + C[i+2]</span></font></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color="#000000"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><span class="" style="white-space:pre">      </span></span><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">}</span></font></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color="#000000"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">LLVM-vectorizer did not responded with any remark either not-vectorized or the reason for not vectorizing it. Our team is showing interest in enhancing vectorizer to support unaligned structures. </span><a href="http://dl.acm.org/citation.cfm?id=996853" style="text-decoration:none"><span style="font-family:Arial;font-weight:700;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">http://dl.acm.org/citation.cfm?id=996853</span></a></font></p><font color="#000000"><br></font><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><font color="#000000">Are there anyone already working on this?</font></span></p></span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><div><span class=""><blockquote type="cite"><div><div dir="ltr"><div><div>Finally, we appreciate suggestions and directions for improving the vectorization framework of LLVM.</div></div></div></div></blockquote><div><br></div></span><div>This is a pretty active area.  Probably reading up on recent llvm-dev discussion in this area would be helpful to you.</div><span class=""><br><blockquote type="cite"><div><div dir="ltr"><div><div>I would also like to know if anyone worked or is working on improving vectorization remarks.</div></div></div></div></blockquote><div><br></div></span><div>Yes we are.  If you’re interested working on this area it would be good to coordinate.</div><div><br></div></div></div></div></blockquote><span id="docs-internal-guid-fc8e96f9-b956-1a67-7591-9350a6e95b50"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><font color="#000000">Yes, we are very much interested for coordinating in this area.</font></span></p></span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><div><div></div><div>Adam</div><br><blockquote type="cite"><div><span class=""><div dir="ltr"><div><br></div><div>Regards,</div><div><br></div><div>Dangeti Tharun kumar</div><div data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div>M.TECH Computer Science</div><div>IIT Hyderabad</div></div></div></div>
</div></span>
_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br></div></blockquote></div><br></div><div><br></div><div>[1] <a href="http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334" target="_blank">http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334</a></div><div>[2] <a href="http://thread.gmane.org/gmane.comp.compilers.llvm.devel/99126" target="_blank">http://thread.gmane.org/gmane.comp.compilers.llvm.devel/99126</a></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Thank you<div>D Tharun kumar</div><div>CS15MTECH11002</div><div>9948373970</div><div>CSE-IITH</div></div></div></div></div>
</div></div>