<?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: FFT consumption in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875593#M8891</link>
    <description>&lt;DIV style="margin:0px;"&gt;Dear Dima,&lt;BR /&gt;I did some more research on this issue, and I found that actually "DftiCommitDescriptor" allocates memory of about the size of arrays that length is twice FFT dimension length. So if I would like to compute 3D FFT with dimension lengths: m = 1024, n = 1024, k = 64, I will need 2*SizeOf(double)* (m + n + k) = 33 Kb of Extra memory. That's OK. BUT if I would like to compute 1D FFT with dimension length equal to 1024*1024*64 (note, that the size of my x_in array is the same as in 3D case = 1GB), I will need 2*SizeOf(double)*1024*1024*64 = 1GB of Extra memory. And that's the problem! Uncomment "//lengths[2] = m*n*k;" and you will see how much memory it allocates. So any comments on this? Is there a possible way to reduce such consumption of "DftiCommitDescriptor"? Bellow is my trivial codeof C++.NET console app (I couldn't login at &lt;A href="https://premier.intel.com"&gt;https://premier.intel.com&lt;/A&gt;):&lt;/DIV&gt;&lt;DIV style="margin:0px;"&gt;&lt;BR /&gt;// 88.cpp : main project file. VS2008&lt;/DIV&gt;&lt;P&gt;#include "stdafx.h"&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include "mkl_dfti.h"&lt;BR /&gt;#include &lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;&lt;P&gt;using namespace System;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;int main(array&lt;:STRING&gt; ^args)&lt;BR /&gt;{&lt;BR /&gt;Console::WriteLine(L"Hello World");&lt;BR /&gt;&lt;BR /&gt;DFTI_DESCRIPTOR_HANDLE Desc_Handle = 0;&lt;BR /&gt;array&lt;INT&gt; ^lengths;&lt;BR /&gt;int Status, i1, m, n, k;&lt;/INT&gt;&lt;/:STRING&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;m = 1024;&lt;BR /&gt;n = 1024;&lt;BR /&gt;k = 64;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;i1 = 3;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lengths = gcnew array&lt;INT&gt;(i1);&lt;BR /&gt;&lt;BR /&gt;lengths[0] = m;&lt;BR /&gt;lengths[1] = n;&lt;BR /&gt;lengths[2] = k;&lt;BR /&gt;//lengths[2] = m*n*k;&lt;/INT&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;Console::ReadKey();&lt;BR /&gt;Status = DftiCreateDescriptor(&amp;amp;Desc_Handle, DFTI_DOUBLE, DFTI_COMPLEX, i1, lengths); &lt;BR /&gt;printf("DftiCreateDescriptor error_message = %s n", DftiErrorMessage(Status));&lt;BR /&gt;Console::ReadKey();&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;Status = DftiCommitDescriptor( Desc_Handle );&lt;BR /&gt;printf("DftiCommitDescriptor error_message = %s n", DftiErrorMessage(Status));&lt;BR /&gt;Console::ReadKey();&lt;BR /&gt;DftiFreeDescriptor(&amp;amp;Desc_Handle);&lt;BR /&gt;printf("DftiFreeDescriptor error_message = %s n", DftiErrorMessage(Status));&lt;BR /&gt;Console::ReadKey();&lt;BR /&gt;return 0;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;}&lt;/P&gt;&lt;P&gt;Additionaly:&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;BR /&gt;1. I included these libs Linker-&amp;gt;Input-&amp;gt;Additional dependencies: mkl_intel_c.lib, mkl_core.lib, libiomp5md.lib, mkl_intel_thread.lib.&lt;BR /&gt;2. I copied libiomp5md.dll to my project dir, as it somehow couldn't find it at ...MKL10.0.5.025ia32bin.&lt;/P&gt;&lt;P&gt;Thanks for help, &lt;BR /&gt;Audrius&lt;/P&gt;</description>
    <pubDate>Thu, 02 Oct 2008 16:31:51 GMT</pubDate>
    <dc:creator>audrius</dc:creator>
    <dc:date>2008-10-02T16:31:51Z</dc:date>
    <item>
      <title>FFT consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875591#M8889</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: " calibri=""&gt;Why DftiCommitDescriptor allocates memory for FFT even DFTI_PLACEMENT = DFTI_INPLACE? Its annoying, because when working with data arrays of 1GB or more, there might NOT be another 1GB RAM available for FFT. Is there a possible way to force it towork withmy allocated arrayessentiallyin place?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: " calibri=""&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: " calibri=""&gt; Audrius Zaukevicius&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Oct 2008 08:18:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875591#M8889</guid>
      <dc:creator>audrius</dc:creator>
      <dc:date>2008-10-02T08:18:05Z</dc:date>
    </item>
    <item>
      <title>Re: FFT consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875592#M8890</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/404779"&gt;audrius&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: " calibri=""&gt;Why DftiCommitDescriptor allocates memory for FFT even DFTI_PLACEMENT = DFTI_INPLACE? Its annoying, because when working with data arrays of 1GB or more, there might NOT be another 1GB RAM available for FFT. Is there a possible way to force it towork withmy allocated arrayessentiallyin place?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: " calibri=""&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: " calibri=""&gt; Audrius Zaukevicius&lt;/SPAN&gt;&lt;/P&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Audrius,&lt;/P&gt;&lt;P&gt;DftiCommitDescriptor allocatesand computes trigonometric tables, and thismay take considerable amount of storage, even for in-place transforms. Storage for performing stages of FFT, such as transposition, may also be required, depending on parameters of the transform, such as strides, butit is mainly allocated byDftiCompute functions.The compute fuctionsmay fail if the memory is used up by that time, even if DftiCommitDescriptor succeeded. Anyway, consider submitting your issue at &lt;A href="http://premier.intel.com"&gt;http://premier.intel.com&lt;/A&gt;.A small example to reproduce the problem will be helpful.&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Dima&lt;/P&gt;</description>
      <pubDate>Thu, 02 Oct 2008 13:40:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875592#M8890</guid>
      <dc:creator>Dmitry_B_Intel</dc:creator>
      <dc:date>2008-10-02T13:40:13Z</dc:date>
    </item>
    <item>
      <title>Re: FFT consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875593#M8891</link>
      <description>&lt;DIV style="margin:0px;"&gt;Dear Dima,&lt;BR /&gt;I did some more research on this issue, and I found that actually "DftiCommitDescriptor" allocates memory of about the size of arrays that length is twice FFT dimension length. So if I would like to compute 3D FFT with dimension lengths: m = 1024, n = 1024, k = 64, I will need 2*SizeOf(double)* (m + n + k) = 33 Kb of Extra memory. That's OK. BUT if I would like to compute 1D FFT with dimension length equal to 1024*1024*64 (note, that the size of my x_in array is the same as in 3D case = 1GB), I will need 2*SizeOf(double)*1024*1024*64 = 1GB of Extra memory. And that's the problem! Uncomment "//lengths[2] = m*n*k;" and you will see how much memory it allocates. So any comments on this? Is there a possible way to reduce such consumption of "DftiCommitDescriptor"? Bellow is my trivial codeof C++.NET console app (I couldn't login at &lt;A href="https://premier.intel.com"&gt;https://premier.intel.com&lt;/A&gt;):&lt;/DIV&gt;&lt;DIV style="margin:0px;"&gt;&lt;BR /&gt;// 88.cpp : main project file. VS2008&lt;/DIV&gt;&lt;P&gt;#include "stdafx.h"&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include "mkl_dfti.h"&lt;BR /&gt;#include &lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;&lt;P&gt;using namespace System;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;int main(array&lt;:STRING&gt; ^args)&lt;BR /&gt;{&lt;BR /&gt;Console::WriteLine(L"Hello World");&lt;BR /&gt;&lt;BR /&gt;DFTI_DESCRIPTOR_HANDLE Desc_Handle = 0;&lt;BR /&gt;array&lt;INT&gt; ^lengths;&lt;BR /&gt;int Status, i1, m, n, k;&lt;/INT&gt;&lt;/:STRING&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;m = 1024;&lt;BR /&gt;n = 1024;&lt;BR /&gt;k = 64;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;i1 = 3;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lengths = gcnew array&lt;INT&gt;(i1);&lt;BR /&gt;&lt;BR /&gt;lengths[0] = m;&lt;BR /&gt;lengths[1] = n;&lt;BR /&gt;lengths[2] = k;&lt;BR /&gt;//lengths[2] = m*n*k;&lt;/INT&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;Console::ReadKey();&lt;BR /&gt;Status = DftiCreateDescriptor(&amp;amp;Desc_Handle, DFTI_DOUBLE, DFTI_COMPLEX, i1, lengths); &lt;BR /&gt;printf("DftiCreateDescriptor error_message = %s n", DftiErrorMessage(Status));&lt;BR /&gt;Console::ReadKey();&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;Status = DftiCommitDescriptor( Desc_Handle );&lt;BR /&gt;printf("DftiCommitDescriptor error_message = %s n", DftiErrorMessage(Status));&lt;BR /&gt;Console::ReadKey();&lt;BR /&gt;DftiFreeDescriptor(&amp;amp;Desc_Handle);&lt;BR /&gt;printf("DftiFreeDescriptor error_message = %s n", DftiErrorMessage(Status));&lt;BR /&gt;Console::ReadKey();&lt;BR /&gt;return 0;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;}&lt;/P&gt;&lt;P&gt;Additionaly:&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;BR /&gt;1. I included these libs Linker-&amp;gt;Input-&amp;gt;Additional dependencies: mkl_intel_c.lib, mkl_core.lib, libiomp5md.lib, mkl_intel_thread.lib.&lt;BR /&gt;2. I copied libiomp5md.dll to my project dir, as it somehow couldn't find it at ...MKL10.0.5.025ia32bin.&lt;/P&gt;&lt;P&gt;Thanks for help, &lt;BR /&gt;Audrius&lt;/P&gt;</description>
      <pubDate>Thu, 02 Oct 2008 16:31:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875593#M8891</guid>
      <dc:creator>audrius</dc:creator>
      <dc:date>2008-10-02T16:31:51Z</dc:date>
    </item>
    <item>
      <title>Re: FFT consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875594#M8892</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Dear Audrius,&lt;/P&gt;
&lt;P&gt;Thank you very much for the example and the code. I understand the problem.The memory is consumedfor the trigonometric tables and it takes almost the same size as the data itself. Unfortunately,the problemcannot be worked around currently.&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Dima&lt;/P&gt;</description>
      <pubDate>Fri, 03 Oct 2008 06:13:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875594#M8892</guid>
      <dc:creator>Dmitry_B_Intel</dc:creator>
      <dc:date>2008-10-03T06:13:11Z</dc:date>
    </item>
    <item>
      <title>Re: FFT consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875595#M8893</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Dear Dima,&lt;/P&gt;
&lt;P&gt;thank you for clearing things up for me.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt; Audrius Zaukevicius&lt;/P&gt;</description>
      <pubDate>Fri, 03 Oct 2008 10:05:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FFT-consumption/m-p/875595#M8893</guid>
      <dc:creator>audrius</dc:creator>
      <dc:date>2008-10-03T10:05:59Z</dc:date>
    </item>
  </channel>
</rss>

