<?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: Are VML routines 'pure'? in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888526#M10197</link>
    <description>&lt;P&gt;Fair enough. Metcalf, Reid &amp;amp; Cohen state (section 6.9):&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"[The standard DO construct] represents a potentially severe impediment to optimization on a parallel processor so, for this purpose, Fortran has the forall statement"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;...which is why I have made a lot of use ofit in the non-VML version of my application, but you're quite right that comp.lang.fortran documents plenty of cases where forall causes more problems than it solves. &lt;/P&gt;
&lt;P&gt;It looks like the way ahead is to use VML calls in DO loops and, if I find I really need to crank out an extra few percent in performance, use compiler directives like DISTRIBUTE POINT,IVDEP and LOOP COUNT to help things along.&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;</description>
    <pubDate>Sat, 13 Sep 2008 19:44:23 GMT</pubDate>
    <dc:creator>eos_pengwern</dc:creator>
    <dc:date>2008-09-13T19:44:23Z</dc:date>
    <item>
      <title>Are VML routines 'pure'?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888522#M10193</link>
      <description>&lt;P&gt;I'm in the process of taking an application with a lot of long (~200 element) vector operations performed in FORALL loops, and replacing them with VML calls. As the vectors are so long I would expect to get a performance enhancement from doing this, though I haven't got as far as testing this yet.&lt;/P&gt;
&lt;P&gt;I notice, however, that the compiler won't let me have VML calls inside FORALL loops. If I replace the FORALL loops with more prosaic DO loops, then everything works fine. Is this because the VML procedures aren't 'pure', or is there some other reason? The 'mkl_vml.fi' interface doesn't declare the functions as pure, but can I safely write my own interface declaring them thus?&lt;/P&gt;
&lt;P&gt;I'm concerned about this because some of my functions need to be passed as arguments and I believe that they need to be pure themselves for this reason. I can forsee problems if they contain calls to VML subroutines that aren't pure.&lt;/P&gt;</description>
      <pubDate>Wed, 10 Sep 2008 23:05:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888522#M10193</guid>
      <dc:creator>eos_pengwern</dc:creator>
      <dc:date>2008-09-10T23:05:50Z</dc:date>
    </item>
    <item>
      <title>Re: Are VML routines 'pure'?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888523#M10194</link>
      <description>&lt;P&gt;Optimal performance of VML functions can be observed on multi-core/multi-processor systems for vector lengths greater than 200. Please, have a look at the performance graphs available at &lt;A href="http://www3.intel.com/cd/software/products/asmo-na/eng/266863.htm"&gt;http://www3.intel.com/cd/software/products/asmo-na/eng/266863.htm&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;VML interface file mkl_vml.fi is the same for both Fortrans 90 and 95, this is one of the reasons we avoid using 'pure' attribute for Vector Math functions. Also, VML functions admit in-place calls, and use of the attribute should be additionally&lt;BR /&gt;tested in your VML usage model.&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Sep 2008 10:23:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888523#M10194</guid>
      <dc:creator>Andrey_N_Intel</dc:creator>
      <dc:date>2008-09-12T10:23:09Z</dc:date>
    </item>
    <item>
      <title>Re: Are VML routines 'pure'?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888524#M10195</link>
      <description>Thank you; it sounds as though I'm right in the sweet-spot to get the best value out of these. Can I safely assume that the benefit gained from the VML routines will offset the lost parallellizability in going from FORALL structures to DO loops?</description>
      <pubDate>Fri, 12 Sep 2008 15:46:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888524#M10195</guid>
      <dc:creator>eos_pengwern</dc:creator>
      <dc:date>2008-09-12T15:46:27Z</dc:date>
    </item>
    <item>
      <title>Re: Are VML routines 'pure'?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888525#M10196</link>
      <description>&lt;P&gt;What lost parallelizability? forall might be a help in diagnosing programming practices which defeat optimization, but it introduces obstacles of its own. Read about it on comp.lang.fortran archives, for example.&lt;/P&gt;
&lt;P&gt;I don't think there's even much demand for ifort to optimize forall as well as might be done, although it generally does as well as other compilers.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Sep 2008 17:52:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888525#M10196</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2008-09-12T17:52:24Z</dc:date>
    </item>
    <item>
      <title>Re: Are VML routines 'pure'?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888526#M10197</link>
      <description>&lt;P&gt;Fair enough. Metcalf, Reid &amp;amp; Cohen state (section 6.9):&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"[The standard DO construct] represents a potentially severe impediment to optimization on a parallel processor so, for this purpose, Fortran has the forall statement"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;...which is why I have made a lot of use ofit in the non-VML version of my application, but you're quite right that comp.lang.fortran documents plenty of cases where forall causes more problems than it solves. &lt;/P&gt;
&lt;P&gt;It looks like the way ahead is to use VML calls in DO loops and, if I find I really need to crank out an extra few percent in performance, use compiler directives like DISTRIBUTE POINT,IVDEP and LOOP COUNT to help things along.&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Sat, 13 Sep 2008 19:44:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Are-VML-routines-pure/m-p/888526#M10197</guid>
      <dc:creator>eos_pengwern</dc:creator>
      <dc:date>2008-09-13T19:44:23Z</dc:date>
    </item>
  </channel>
</rss>

