<?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: Intra vectorization and Intel Linux FORTRAN 90 compiler in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762118#M17605</link>
    <description>Aart contacted me offline to let me know that my descriptions of the various Intel processor vectorization features was somewhat "off".&lt;BR /&gt;&lt;BR /&gt;SSE was single-precision, SSE2 was double precision and SSE3 extended features from SSE2.&lt;BR /&gt;&lt;BR /&gt;Itanium processors don't have vectorization, per se, but the architecture there is very different and the compiler can use various features such as rotating registers to do a lot of computations in fewer cycles.</description>
    <pubDate>Thu, 15 Sep 2005 01:51:45 GMT</pubDate>
    <dc:creator>Steven_L_Intel1</dc:creator>
    <dc:date>2005-09-15T01:51:45Z</dc:date>
    <item>
      <title>Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762111#M17598</link>
      <description>Dear Sirs,&lt;BR /&gt;&lt;BR /&gt;My apoligies in advance if this question has already been posed.&lt;BR /&gt;If I am not mistaken, apparently the INTEL processor has intra-vectorization possibilities.  I am not sure how this works&lt;BR /&gt;because I am also told that unless we are dealing with a CRAY,&lt;BR /&gt;processors with vector registers are no longer made (?)&lt;BR /&gt;&lt;BR /&gt;At any rate, this vectorization can be triggered when using the&lt;BR /&gt;PORTLAND compiler using the -fastsse option.  In general, this&lt;BR /&gt;is the sse option and variations thereof...&lt;BR /&gt;&lt;BR /&gt;Question is: what is that intra-vectorization for the Linux&lt;BR /&gt;             FORTRAN 90 compiler?&lt;BR /&gt;&lt;BR /&gt;The intra-vectorization possibilities is a hardware feature of&lt;BR /&gt;the chip itself and so I would think this should be accessible&lt;BR /&gt;regardless of the language or operating system (in principle).&lt;BR /&gt;&lt;BR /&gt;Any feedback would be greatly appreciated&lt;BR /&gt;&lt;BR /&gt;Tony Scott&lt;BR /&gt;RWTH-Aachen</description>
      <pubDate>Tue, 13 Sep 2005 15:39:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762111#M17598</guid>
      <dc:creator>scottrwth</dc:creator>
      <dc:date>2005-09-13T15:39:40Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762112#M17599</link>
      <description>Welcome to the forum, Tony.&lt;BR /&gt;&lt;BR /&gt;Yes, the Intel compilers can perform vectorization when you specify that you are compiling for one or more of the Intel processor types which include vector instructions.  There are three generations of vector instructions in our IA-32 processors.  SSE (Streaming SIMD Extensions) was introduced with Pentium III and primarily dealt with integers.  SSE2 was introduced with Pentium 4 and adds floating types, while SSE3, the newest, was introduced with more recent Pentium 4 and Xeon processors.  You use the -x switch to specify processor generation, for example, -xP enables generation of SSE3 instructions.  See the Intel Fortran Compiler Compiler Options reference for details on the switches.&lt;BR /&gt;&lt;BR /&gt;Intel Itanium processors also offer vectorization and our compilers for Itanium use this feature.&lt;BR /&gt;&lt;BR /&gt;For more information, refer to the optimization sections of the Intel Fortran Optimizing Applications manual, as well as extensive general discussion of the SSE instructions on the Intel web site.</description>
      <pubDate>Tue, 13 Sep 2005 20:09:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762112#M17599</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2005-09-13T20:09:00Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762113#M17600</link>
      <description>Dear Sir,&lt;BR /&gt;&lt;BR /&gt;Many thanks for the info.  I have checked the -xp with the&lt;BR /&gt;-vec_report1 or -vec_report3 to see what was vectorized and&lt;BR /&gt;what wasn't.  It seems that all my loops for e.g. setting&lt;BR /&gt;a matrix or array to zero were vectorized.&lt;BR /&gt;&lt;BR /&gt;There is an important loop I am trying to vectorized but&lt;BR /&gt;it involves a call to a subroutine, i.e.:&lt;BR /&gt;&lt;BR /&gt;Do 1000 i=1,N&lt;BR /&gt;        call UMD2SO(....)&lt;BR /&gt;1000 continue&lt;BR /&gt;&lt;BR /&gt;Even though each subroutine call is independent,  the loop&lt;BR /&gt;is NOT vectorized.&lt;BR /&gt;&lt;BR /&gt;Any advice?&lt;BR /&gt;&lt;BR /&gt;Is it a matter of putting the vectorization block inside&lt;BR /&gt;the subroutine UMD?&lt;BR /&gt;&lt;BR /&gt;best wishes&lt;BR /&gt;&lt;BR /&gt;Tony Scott</description>
      <pubDate>Tue, 13 Sep 2005 23:11:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762113#M17600</guid>
      <dc:creator>scottrwth</dc:creator>
      <dc:date>2005-09-13T23:11:23Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762114#M17601</link>
      <description>A subroutine call will prevent vectorization.  You may want to split this into two loops, one which does the computations and one which does the subroutine calls.</description>
      <pubDate>Wed, 14 Sep 2005 00:23:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762114#M17601</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2005-09-14T00:23:37Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762115#M17602</link>
      <description>If your subroutine has no loop in it, and you are looking to enable vectorization by in-line expansion in the calling program, you would require the -ipo option (for separate files) or -ip (inline within same file).  Pushing the DO loop inside the subroutine may be more satisfactory.</description>
      <pubDate>Wed, 14 Sep 2005 00:23:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762115#M17602</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2005-09-14T00:23:52Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762116#M17603</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;FONT size="2"&gt;Hi Tony,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;As an additional comment, since you use the term intra vectorization, I guess you meant intra-register vectorization, a term I used a few years ago to distinguish vectorization for multimedia extensions from vectorization for traditional vector processors, like the Cray (the term SIMDizationseems to havebecome more popular, however). An online tutorial forvectorization can be found at IDS at:&lt;BR /&gt;&lt;/FONT&gt;&lt;A href="http://www.intel.com/cd/ids/developer/asmo-na/eng/65774.htm" target="_blank"&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.intel.com/cd/ids/developer/asmo-na/eng/65774.htm" target="_blank"&gt;http://www.intel.com/cd/ids/developer/asmo-na/eng/65774.htm&lt;/A&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;and, after reading this, you want to know more on the background of vectorization for multimedia extensions, you may want to consider reading The Software Vectorization Handbook at:&lt;BR /&gt;&lt;/FONT&gt;&lt;A href="http://www.intel.com/intelpress/sum_vmmx.htm" target="_blank"&gt;&lt;FONT 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;BR /&gt;&lt;FONT size="2"&gt;or some other publications at:&lt;BR /&gt;&lt;/FONT&gt;&lt;A href="http://www.aartbik.com/pub.html" target="_blank"&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.aartbik.com/pub.html" target="_blank"&gt;http://www.aartbik.com/pub.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;Aart Bik&lt;BR /&gt;&lt;/FONT&gt;&lt;A href="http://www.aartbik.com/" target="_blank"&gt;&lt;FONT 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;&lt;/DIV&gt;&lt;P&gt;Message Edited by abik on &lt;SPAN class="date_text"&gt;09-16-2005&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;12:16 PM&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Sep 2005 02:11:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762116#M17603</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2005-09-14T02:11:58Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762117#M17604</link>
      <description>Dear Sirs,&lt;BR /&gt;&lt;BR /&gt;Again my apologies.  I found out through a test example&lt;BR /&gt;taht if I use -ip or -ipo, then the loop does vectorize&lt;BR /&gt;after all even if it has a subroutine or function call.&lt;BR /&gt;&lt;BR /&gt;best wishes&lt;BR /&gt;&lt;BR /&gt;Tony</description>
      <pubDate>Wed, 14 Sep 2005 17:42:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762117#M17604</guid>
      <dc:creator>scottrwth</dc:creator>
      <dc:date>2005-09-14T17:42:17Z</dc:date>
    </item>
    <item>
      <title>Re: Intra vectorization and Intel Linux FORTRAN 90 compiler</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762118#M17605</link>
      <description>Aart contacted me offline to let me know that my descriptions of the various Intel processor vectorization features was somewhat "off".&lt;BR /&gt;&lt;BR /&gt;SSE was single-precision, SSE2 was double precision and SSE3 extended features from SSE2.&lt;BR /&gt;&lt;BR /&gt;Itanium processors don't have vectorization, per se, but the architecture there is very different and the compiler can use various features such as rotating registers to do a lot of computations in fewer cycles.</description>
      <pubDate>Thu, 15 Sep 2005 01:51:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Intra-vectorization-and-Intel-Linux-FORTRAN-90-compiler/m-p/762118#M17605</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2005-09-15T01:51:45Z</dc:date>
    </item>
  </channel>
</rss>

