<div dir="ltr">On Thu, May 23, 2013 at 1:26 PM, Nadav Rotem <span dir="ltr"><<a href="mailto:nrotem@apple.com" target="_blank">nrotem@apple.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><br><div>
<div>On May 23, 2013, at 10:37 AM, Cameron McInally <<a href="mailto:cameron.mcinally@nyu.edu" target="_blank">cameron.mcinally@nyu.edu</a>> wrote:</div><br><blockquote type="cite"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">In all fairness, I do not believe that ivdep is an ICC-specific pragma. There are many compilers that support ivdep and lots of legacy (and modern) codes that benefit from it. Seems silly, to me at least, to reinvent the wheel. </span></blockquote>
</div><br></div><div>Hi Cameron, </div><div><br></div><div>The history of the idvep pragma is fascinating. I did not know that it predated ANSI. People who care about cray compatibility should provide aliases for #ivdep. The name “ivdep” is simply terrible. There is no good reason not to come up with a syntax that is actually meaningful to people. I like arnold’s idea to add additional options so the ‘vector’ pragma.</div>
</div></blockquote><div><br></div><div style>Clang is (still) way behind the curve when it comes to expressing parallelism. Most other compilers support this out of the box, and there is a large body of code that uses such pragmas, be they "nice" or "cryptic". It's unfortunate that there is no ANSI or equivalent standard for ivdep, but the compiler manuals combined plus large bodies of existing code provide a de-facto community standard.</div>
<div style><br></div><div style>If you are looking for a real standard to follow -- and that would be much better than defining a clang-specific extension -- then I suggest OpenMP's "#pragma omp simd". See e.g. <<a href="http://stackoverflow.com/questions/14674049/parallel-for-vs-omp-simd-when-to-use-each">http://stackoverflow.com/questions/14674049/parallel-for-vs-omp-simd-when-to-use-each</a>>, which discusses multi-threading vs. vectorization, or <<a href="http://software.intel.com/en-us/blogs/2012/11/05/openmp-40-may-offer-important-solutions-for-targeting-and-vectorization">http://software.intel.com/en-us/blogs/2012/11/05/openmp-40-may-offer-important-solutions-for-targeting-and-vectorization</a>>.</div>
<div style><br></div><div style>-erik</div></div><div><br></div>-- <br>Erik Schnetter <<a href="mailto:schnetter@cct.lsu.edu" target="_blank">schnetter@cct.lsu.edu</a>><br><a href="http://www.perimeterinstitute.ca/personal/eschnetter/" target="_blank">http://www.perimeterinstitute.ca/personal/eschnetter/</a>
</div></div>