<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: vectorizing with a constant conditional in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/vectorizing-with-a-constant-conditional/m-p/740241#M215</link>
    <description>&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Dear Joe,&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Due to historical reasons, some but not all loop-oriented optimizations have been applied by the time the vectorizer runs. As a result, often one would see that only loops with simple loop invariant conditionals are vectorized using bit-masking, followed by invariant code hoisting on the vector instructions. Clearly, this is open for improvement and you are hopefully happy to hear that we are currently doing major rewrite of the vectorizer/threadizer to addresses this and related phase-ordering issues.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;As for documentation, the Software Vectorization Handbook (&lt;/FONT&gt;&lt;A href="http://www.intel.com/intelpress/sum_vmmx.htm" target="_blank"&gt;&lt;FONT face="Times New Roman" size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.intel.com/intelpress/sum_vmmx.htm" target="_blank"&gt;http://www.intel.com/intelpress/sum_vmmx.htm&lt;/A&gt;&lt;FONT face="Times New Roman" size="2"&gt;) provides in in-depth presentation of Intels vectorization methodology, including conditional vectorization.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Hope this helps.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Aart Bik&lt;BR /&gt;&lt;/FONT&gt;&lt;A href="http://www.aartbik.com/" target="_blank"&gt;&lt;FONT face="Times New Roman" size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.aartbik.com/" target="_blank"&gt;http://www.aartbik.com/&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 19 Apr 2006 00:30:41 GMT</pubDate>
    <dc:creator>Intel_C_Intel</dc:creator>
    <dc:date>2006-04-19T00:30:41Z</dc:date>
    <item>
      <title>vectorizing with a constant conditional</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/vectorizing-with-a-constant-conditional/m-p/740240#M214</link>
      <description>I used to avoid conditionals inside of loops, but it seems that modern optimizers generally can move constant conditionals out of the loop, making two versions of the loop where needed. I started to think that manually creating two loops to avoid inner-loop conditionals was no longer necessary, but I am finding that such conditionals prevent Intel Fortran from vectorizing loops.&lt;BR /&gt;&lt;BR /&gt;Am I incorrect in thinking that optimizers can avoid re-evaluating inner conditionals, or are the vectorized optimizations just not as robust? Or, maybe it actually depends on the conditional, and not vectorization; I haven't done a lot of testing. Is there documentation on what the optimizer can/cannot do for loops with conditionals?&lt;BR /&gt;&lt;BR /&gt;Thanks!</description>
      <pubDate>Tue, 18 Apr 2006 22:34:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/vectorizing-with-a-constant-conditional/m-p/740240#M214</guid>
      <dc:creator>joe_krahn</dc:creator>
      <dc:date>2006-04-18T22:34:28Z</dc:date>
    </item>
    <item>
      <title>Re: vectorizing with a constant conditional</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/vectorizing-with-a-constant-conditional/m-p/740241#M215</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Dear Joe,&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Due to historical reasons, some but not all loop-oriented optimizations have been applied by the time the vectorizer runs. As a result, often one would see that only loops with simple loop invariant conditionals are vectorized using bit-masking, followed by invariant code hoisting on the vector instructions. Clearly, this is open for improvement and you are hopefully happy to hear that we are currently doing major rewrite of the vectorizer/threadizer to addresses this and related phase-ordering issues.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;As for documentation, the Software Vectorization Handbook (&lt;/FONT&gt;&lt;A href="http://www.intel.com/intelpress/sum_vmmx.htm" target="_blank"&gt;&lt;FONT face="Times New Roman" size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.intel.com/intelpress/sum_vmmx.htm" target="_blank"&gt;http://www.intel.com/intelpress/sum_vmmx.htm&lt;/A&gt;&lt;FONT face="Times New Roman" size="2"&gt;) provides in in-depth presentation of Intels vectorization methodology, including conditional vectorization.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Hope this helps.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Times New Roman" size="2"&gt;Aart Bik&lt;BR /&gt;&lt;/FONT&gt;&lt;A href="http://www.aartbik.com/" target="_blank"&gt;&lt;FONT face="Times New Roman" size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.aartbik.com/" target="_blank"&gt;http://www.aartbik.com/&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Apr 2006 00:30:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/vectorizing-with-a-constant-conditional/m-p/740241#M215</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2006-04-19T00:30:41Z</dc:date>
    </item>
  </channel>
</rss>

