<?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 You would require icc -fast=2 in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053721#M51005</link>
    <description>&lt;P&gt;You would require icc -fast=2 to engage fast limited range and domain complex math functions.&amp;nbsp; The options for full range complex arithmetic on mic are unsatisfactory (perhaps I too might have called them strange if I read only the ad about supporting full IEEE floating point).&amp;nbsp; The strange point is that there is no way with these options to gain language compliance for parentheses, so it may involve extreme defensive coding, beyond the extent you would expect for limited range (roughly half the exponent range of float data type).&lt;/P&gt;</description>
    <pubDate>Wed, 12 Nov 2014 04:41:28 GMT</pubDate>
    <dc:creator>TimP</dc:creator>
    <dc:date>2014-11-12T04:41:28Z</dc:date>
    <item>
      <title>Poor FFT mkl performance (2)</title>
      <link>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053719#M51003</link>
      <description>&lt;P&gt;(This is a new issue after the issue with mkl_dft_grasp_user_thread() was solved in previous post by using separate fft plans in each thread.)&lt;/P&gt;

&lt;P&gt;I am optimizing a new application (written with Xeon Phi in mind) which performs a lot of FFT transforms.&lt;/P&gt;

&lt;P&gt;The transforms are done on 512x512 arrays separately in each thread. This works quite well on Xeon host. When running on Xeon Phi in native mode the performance is much slower than expected - at best 50% of the performance of the host.&lt;/P&gt;

&lt;P&gt;I attached a screenshot of Vtune Amplifiier.&amp;nbsp; It shows that most of the time is spent in __svml_cdiv8_ha_mask() function - I was not able to find the source for it. This is followed by very high CPU usage of sinl()/cosl() functions which show no vectorization.&lt;/P&gt;

&lt;P&gt;This is highly surprising because I would have expected sin/cos to be called during plan creation and, most importantly, these are double ffts, and have no reason to call sin/cos (in fact I do not use long double anywhere in my program).&lt;/P&gt;

&lt;P&gt;Any suggestions ?&lt;/P&gt;

&lt;P&gt;thank you very much&lt;/P&gt;

&lt;P&gt;Vladimir Dergachev&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Nov 2014 18:59:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053719#M51003</guid>
      <dc:creator>Vladimir_Dergachev</dc:creator>
      <dc:date>2014-11-11T18:59:38Z</dc:date>
    </item>
    <item>
      <title>This turned out to be due to</title>
      <link>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053720#M51004</link>
      <description>&lt;P&gt;This turned out to be due to two independent cause:&lt;/P&gt;

&lt;P&gt;* the high usage in __svml_cdiv8_ha_mask() went away after upgrading to newer version of mkl&lt;/P&gt;

&lt;P&gt;* sinl()/cos() was not due to fft library, but because elsewhere in the code I used cexpf() function. Somehow this ends up calling sinl()/cosl()/expl() in Xeon Phi code, which is very strange.&lt;/P&gt;

&lt;P&gt;best&lt;/P&gt;

&lt;P&gt;Vladimir Dergachev&lt;/P&gt;</description>
      <pubDate>Wed, 12 Nov 2014 02:08:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053720#M51004</guid>
      <dc:creator>Vladimir_Dergachev</dc:creator>
      <dc:date>2014-11-12T02:08:08Z</dc:date>
    </item>
    <item>
      <title>You would require icc -fast=2</title>
      <link>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053721#M51005</link>
      <description>&lt;P&gt;You would require icc -fast=2 to engage fast limited range and domain complex math functions.&amp;nbsp; The options for full range complex arithmetic on mic are unsatisfactory (perhaps I too might have called them strange if I read only the ad about supporting full IEEE floating point).&amp;nbsp; The strange point is that there is no way with these options to gain language compliance for parentheses, so it may involve extreme defensive coding, beyond the extent you would expect for limited range (roughly half the exponent range of float data type).&lt;/P&gt;</description>
      <pubDate>Wed, 12 Nov 2014 04:41:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053721#M51005</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2014-11-12T04:41:28Z</dc:date>
    </item>
    <item>
      <title>Thanks for the suggestion !</title>
      <link>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053722#M51006</link>
      <description>&lt;P&gt;Thanks for the suggestion !&lt;/P&gt;

&lt;P&gt;It was even stranger than you describe - cexpf() should operate on single floats, but the functions actually called were computing for long double.&lt;/P&gt;

&lt;P&gt;The solution was to simply not use complex functions and just call sin()/ cos() directly.&lt;/P&gt;</description>
      <pubDate>Wed, 12 Nov 2014 17:37:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Poor-FFT-mkl-performance-2/m-p/1053722#M51006</guid>
      <dc:creator>Vladimir_Dergachev</dc:creator>
      <dc:date>2014-11-12T17:37:41Z</dc:date>
    </item>
  </channel>
</rss>

