<?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 How to find optmized FFT dimension size in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775001#M916</link>
    <description>I am using MKL DFTI to do FFT on 1D and 2D.&lt;BR /&gt;I would like to pad my array/Matrix to get best FFT performance.&lt;BR /&gt;There is some guideline in the manual saying the dimension should not be multiple of 2048 (for 2D FFT) and aligned. &lt;BR /&gt;I can align my 1D and 2D arrays, but I wonder how do I really get the optmized size. If I would like to generate an optmized size table, how it will look like?&lt;BR /&gt;&lt;BR /&gt;In FFTW, they usually use multiple of small prime numbers. Does this apply to MKL?&lt;BR /&gt;&lt;BR /&gt;Please provide some guideline on how to generate a table of optimized dimension number. This apply to both 1D and 2D. &lt;BR /&gt;&lt;BR /&gt;Also for 2D, the row and col will follow the same rule, right?&lt;BR /&gt;&lt;BR /&gt;To summarize, if I have 1D array, say 457 numbers, and I run FFT on it. What is the optimized dimension I should pad my array to?&lt;BR /&gt;&lt;BR /&gt;for 2D, if it is 457x671, what is the optmized dimension?&lt;BR /&gt;&lt;BR /&gt;Thank you.</description>
    <pubDate>Wed, 01 Dec 2010 05:30:19 GMT</pubDate>
    <dc:creator>missing__zlw</dc:creator>
    <dc:date>2010-12-01T05:30:19Z</dc:date>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775001#M916</link>
      <description>I am using MKL DFTI to do FFT on 1D and 2D.&lt;BR /&gt;I would like to pad my array/Matrix to get best FFT performance.&lt;BR /&gt;There is some guideline in the manual saying the dimension should not be multiple of 2048 (for 2D FFT) and aligned. &lt;BR /&gt;I can align my 1D and 2D arrays, but I wonder how do I really get the optmized size. If I would like to generate an optmized size table, how it will look like?&lt;BR /&gt;&lt;BR /&gt;In FFTW, they usually use multiple of small prime numbers. Does this apply to MKL?&lt;BR /&gt;&lt;BR /&gt;Please provide some guideline on how to generate a table of optimized dimension number. This apply to both 1D and 2D. &lt;BR /&gt;&lt;BR /&gt;Also for 2D, the row and col will follow the same rule, right?&lt;BR /&gt;&lt;BR /&gt;To summarize, if I have 1D array, say 457 numbers, and I run FFT on it. What is the optimized dimension I should pad my array to?&lt;BR /&gt;&lt;BR /&gt;for 2D, if it is 457x671, what is the optmized dimension?&lt;BR /&gt;&lt;BR /&gt;Thank you.</description>
      <pubDate>Wed, 01 Dec 2010 05:30:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775001#M916</guid>
      <dc:creator>missing__zlw</dc:creator>
      <dc:date>2010-12-01T05:30:19Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775002#M917</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;For the best performance please provide 16-byte alignment of data.&lt;BR /&gt;&lt;BR /&gt;As to optimized radices: MKL User Guide states (see&lt;SPAN class="sectionBodyText"&gt;&lt;STRONG&gt;Tips and Techniques to Improve Performance&lt;/STRONG&gt;&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;H1 style="padding-left: 20pt;" class="topictitle1"&gt;FFT Optimized Radices&lt;/H1&gt;&lt;DIV style="padding-left: 20pt;"&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;You can improve the performance of the Intel Math Kernel Library (Intel MKL) FFT if the length of your data vector permits factorization into powers of optimized radices.&lt;BR /&gt;&lt;BR /&gt;In Intel MKL, the optimized radices are 2, 3, 5, 7, and 11.&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 01 Dec 2010 08:04:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775002#M917</guid>
      <dc:creator>barragan_villanueva_</dc:creator>
      <dc:date>2010-12-01T08:04:34Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775003#M918</link>
      <description>Thanks for the info.&lt;BR /&gt;I also read in the MKL manual which says:&lt;BR /&gt;&lt;P&gt;&lt;BR /&gt;leading dimension values (n*element_size) of two-dimensional arrays are divisible by 16&lt;/P&gt;&lt;P&gt;for two-dimensional arrays, leading dimension values divisible by 2048 are avoided&lt;/P&gt;&lt;P&gt; For the C-style FFT, the distance L between arrays that represent real and imaginary&lt;/P&gt;&lt;P&gt;parts is not divisible by 64. The best case is when L=k*64 + 16&lt;/P&gt;&lt;P&gt; Leading dimension values, in bytes (n*element_size), of two-dimensional arrays are&lt;/P&gt;&lt;P&gt;not power of two.&lt;BR /&gt;&lt;BR /&gt;could you give some explanation here on leading dimension? If I have array like Real_1, Imag_1, Real_2, Imag_2, ... is this an optimized FFT data?&lt;/P&gt;</description>
      <pubDate>Wed, 01 Dec 2010 18:39:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775003#M918</guid>
      <dc:creator>missing__zlw</dc:creator>
      <dc:date>2010-12-01T18:39:32Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775004#M919</link>
      <description>&lt;PRE&gt;[fortran]FUNCTION FGET_BUFFER_SIZE(datalen)

    IMPLICIT NONE
   
    INTEGER :: FGET_BUFFER_SIZE
    INTEGER, INTENT(IN) :: datalen
    REAL(8) :: ln2, ln3, ln5, ln7, ln11, ln13
    REAL(8) :: lndata   

    ln2 = DLOG(2.0_8)
    ln3 = DLOG(3.0_8)
    ln5 = DLOG(5.0_8)
    ln7 = DLOG(7.0_8)
    ln11 = DLOG(11.0_8)
    ln13 = DLOG(13.0_8)
    lndata = DLOG(DBLE(datalen))
    
    IF (MOD(datalen,2) &amp;gt;= 1) THEN 
        FGET_BUFFER_SIZE = ODD_BUFFER()
    ELSE
        FGET_BUFFER_SIZE = EVEN_BUFFER()
    END IF
    
CONTAINS

FUNCTION ODD_BUFFER()
    INTEGER :: ODD_BUFFER
    INTEGER :: buffsize, buffest
    REAL(8) :: cnt3 ,cnt5, cnt7, cnt11, cnt13, N
    REAL(8) :: tmp3, tmp5, tmp7, tmp11, tmp13
    
    buffsize = HUGE(buffsize)
    N = DLOG(DBLE(buffsize))
    cnt3 = 0.0_8
    cnt5 = 0.0_8
    cnt7 = 0.0_8
    cnt11 = 0.0_8 
    cnt13 = 0.0_8
    DO WHILE(cnt13*ln13&lt;N&gt;Here is how I find the optimal buffer size for MKL fft. The number returned is your data length + symetric padding. The code does some rather unusual things on the surface. It starts its search on the small end of the scale. This is because there is no "known" way to determine if you have found the best solution except to check all the values between your best estimate and thelength of your data. I did some testing on the original (before MKL added 13 as an optimized prime) and found it took on average less then 100 iterations of the inner loop to find an odd buffer size and about 300 inner loop runs to find an even buffer size. Most likely there are faster methods or improvements that could be made to this code. If you find them please post.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/N&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 05 Dec 2010 14:25:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775004#M919</guid>
      <dc:creator>Frank_M</dc:creator>
      <dc:date>2010-12-05T14:25:52Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775005#M920</link>
      <description>&lt;DIV id="tiny_quote"&gt;
                &lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=458147" class="basic" href="https://community.intel.com/en-us/profile/458147/"&gt;Frank_M&lt;/A&gt;&lt;/DIV&gt;
                &lt;DIV style="background-color: #e5e5e5; padding: 5px; border: 1px inset; margin-left: 2px; margin-right: 2px;"&gt;&lt;I&gt;&lt;DIV class="dp-highlighter"&gt;&lt;DIV class="bar"&gt;&lt;DIV class="tools"&gt;&lt;A href="#" onclick="dp.sh.Toolbar.Command('CollapseSource',this);return false;"&gt;- collapse source&lt;/A&gt;&lt;A href="#" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;"&gt;view plain&lt;/A&gt;&lt;A href="#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"&gt;copy to clipboard&lt;/A&gt;&lt;A href="#" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;"&gt;print&lt;/A&gt;&lt;A href="#" onclick="dp.sh.Toolbar.Command('About',this);return false;"&gt;?&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;OL start="1"&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;FUNCTION&lt;/SPAN&gt;&lt;SPAN&gt;FGET_BUFFER_SIZE(datalen)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;IMPLICIT&lt;/SPAN&gt;&lt;SPAN&gt;NONE&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTEGER&lt;/SPAN&gt;&lt;SPAN&gt;::FGET_BUFFER_SIZE&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTEGER&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTENT&lt;/SPAN&gt;&lt;SPAN&gt;(IN)::datalen&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;REAL&lt;/SPAN&gt;&lt;SPAN&gt;(8)::ln2,ln3,ln5,ln7,ln11,ln13&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;REAL&lt;/SPAN&gt;&lt;SPAN&gt;(8)::lndata&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;ln2=DLOG(2.0_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;ln3=DLOG(3.0_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;ln5=DLOG(5.0_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;ln7=DLOG(7.0_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;ln11=DLOG(11.0_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;ln13=DLOG(13.0_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;lndata=DLOG(&lt;SPAN class="keyword bold"&gt;DBLE&lt;/SPAN&gt;&lt;SPAN&gt;(datalen))&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;MOD&lt;/SPAN&gt;&lt;SPAN&gt;(datalen,2)&amp;gt;=1)&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;THEN&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;FGET_BUFFER_SIZE=ODD_BUFFER()&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ELSE&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;FGET_BUFFER_SIZE=EVEN_BUFFER()&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;END&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;CONTAINS&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;FUNCTION&lt;/SPAN&gt;&lt;SPAN&gt;ODD_BUFFER()&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTEGER&lt;/SPAN&gt;&lt;SPAN&gt;::ODD_BUFFER&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTEGER&lt;/SPAN&gt;&lt;SPAN&gt;::buffsize,buffest&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;REAL&lt;/SPAN&gt;&lt;SPAN&gt;(8)::cnt3,cnt5,cnt7,cnt11,cnt13,N&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;REAL&lt;/SPAN&gt;&lt;SPAN&gt;(8)::tmp3,tmp5,tmp7,tmp11,tmp13&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;buffsize=&lt;SPAN class="keyword bold"&gt;HUGE&lt;/SPAN&gt;&lt;SPAN&gt;(buffsize)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;N=DLOG(&lt;SPAN class="keyword bold"&gt;DBLE&lt;/SPAN&gt;&lt;SPAN&gt;(buffsize))&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt3=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt5=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt7=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt11=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt13=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt13*ln13&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp13=cnt13*ln13&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt11*ln11+tmp13&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp11=cnt11*ln11+tmp13&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt7*ln7+tmp11&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp7=cnt7*ln7+tmp11&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt5*ln5+tmp7&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp5=cnt5*ln5+tmp7&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt3=DNINT((lndata-tmp5)/ln3+0.45_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt3*ln3+tmp5&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;tmp3=cnt3*ln3+tmp5&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;buffest=&lt;SPAN class="keyword bold"&gt;NINT&lt;/SPAN&gt;&lt;SPAN&gt;(DEXP(tmp3))&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(buffest.GE.datalen)&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;THEN&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;N=tmp3&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;buffsize=buffest&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(buffsize==datalen)&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;200&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDIF&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt3=cnt3+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt3=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt5=cnt5+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt5=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt7=cnt7+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt7=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt11=cnt11+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt11=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt13=cnt13+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;200&lt;SPAN class="keyword bold"&gt;CONTINUE&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;ODD_BUFFER=buffsize&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;END&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;FUNCTION&lt;/SPAN&gt;&lt;SPAN&gt;ODD_BUFFER&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;FUNCTION&lt;/SPAN&gt;&lt;SPAN&gt;EVEN_BUFFER()&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTEGER&lt;/SPAN&gt;&lt;SPAN&gt;::EVEN_BUFFER&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;INTEGER&lt;/SPAN&gt;&lt;SPAN&gt;::buffsize,buffest&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;REAL&lt;/SPAN&gt;&lt;SPAN&gt;(8)::cnt2,cnt3,cnt5,cnt7,cnt11,cnt13,N&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;REAL&lt;/SPAN&gt;&lt;SPAN&gt;(8)::tmp2,tmp3,tmp5,tmp7,tmp11,tmp13&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;buffsize=&lt;SPAN class="keyword bold"&gt;HUGE&lt;/SPAN&gt;&lt;SPAN&gt;(buffsize)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;N=DLOG(&lt;SPAN class="keyword bold"&gt;DBLE&lt;/SPAN&gt;&lt;SPAN&gt;(buffsize))&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt3=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt5=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt7=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt11=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt13=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt13*ln13&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp13=cnt13*ln13&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(ln2+cnt11*ln11+tmp13&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp11=ln2+cnt11*ln11+tmp13&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt7*ln7+tmp11&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp7=cnt7*ln7+tmp11&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt5*ln5+tmp7&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp5=cnt5*ln5+tmp7&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt3*ln3+tmp5&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp3=cnt3*ln3+tmp5-ln2&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt2=DNINT((lndata-tmp3)/ln2+0.45_8)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;If&lt;/SPAN&gt;&lt;SPAN&gt;(cnt2&amp;lt;1.0_8)cnt2=1.0_8&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;DO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN&gt;(cnt2*ln2+tmp3&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;tmp2=cnt2*ln2+tmp3&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;buffest=&lt;SPAN class="keyword bold"&gt;NINT&lt;/SPAN&gt;&lt;SPAN&gt;(DEXP(tmp2))&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(buffest.GE.datalen)&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;THEN&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;N=tmp2&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;buffsize=buffest&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(buffsize==datalen)&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;300&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDIF&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt2=cnt2+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt2=1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt3=cnt3+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt3=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt5=cnt5+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt5=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt7=cnt7+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt7=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt11=cnt11+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;cnt11=0.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;cnt13=cnt13+1.0_8&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;ENDDO&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;300&lt;SPAN class="keyword bold"&gt;CONTINUE&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;EVEN_BUFFER=buffsize&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;END&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;FUNCTION&lt;/SPAN&gt;&lt;SPAN&gt;EVEN_BUFFER&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class="alt"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN class="keyword bold"&gt;END&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="keyword bold"&gt;FUNCTION&lt;/SPAN&gt;&lt;SPAN&gt;FGET_BUFFER_SIZE&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/I&gt;&lt;PRE&gt;&lt;I&gt;[fortran]FUNCTION FGET_BUFFER_SIZE(datalen)

    IMPLICIT NONE
   
    INTEGER :: FGET_BUFFER_SIZE
    INTEGER, INTENT(IN) :: datalen
    REAL(8) :: ln2, ln3, ln5, ln7, ln11, ln13
    REAL(8) :: lndata   

    ln2 = DLOG(2.0_8)
    ln3 = DLOG(3.0_8)
    ln5 = DLOG(5.0_8)
    ln7 = DLOG(7.0_8)
    ln11 = DLOG(11.0_8)
    ln13 = DLOG(13.0_8)
    lndata = DLOG(DBLE(datalen))
    
    IF (MOD(datalen,2) &amp;gt;= 1) THEN 
        FGET_BUFFER_SIZE = ODD_BUFFER()
    ELSE
        FGET_BUFFER_SIZE = EVEN_BUFFER()
    END IF
    
CONTAINS

FUNCTION ODD_BUFFER()
    INTEGER :: ODD_BUFFER
    INTEGER :: buffsize, buffest
    REAL(8) :: cnt3 ,cnt5, cnt7, cnt11, cnt13, N
    REAL(8) :: tmp3, tmp5, tmp7, tmp11, tmp13
    
    buffsize = HUGE(buffsize)
    N = DLOG(DBLE(buffsize))
    cnt3 = 0.0_8
    cnt5 = 0.0_8
    cnt7 = 0.0_8
    cnt11 = 0.0_8 
    cnt13 = 0.0_8
    DO WHILE(cnt13*ln13&lt;N&gt;Here is how I find the optimal buffer size for MKL fft. The number returned is your data length + symetric padding. The code does some rather unusual things on the surface. It starts its search on the small end of the scale. This is because there is no "known" way to determine if you have found the best solution except to check all the values between your best estimate and thelength of your data. I did some testing on the original (before MKL added 13 as an optimized prime) and found it took on average less then 100 iterations of the inner loop to find an odd buffer size and about 300 inner loop runs to find an even buffer size. Most likely there are faster methods or improvements that could be made to this code. If you find them please post.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/N&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;@Frank_M: can you clarify why you used a radix value of 13, when the MKL recommendation has a maximum radix of 11? You refer to Intel expanding it to 13; in which version of MKL? I can't seem to find documentation for this change.&lt;BR /&gt;&lt;BR /&gt;Thanks much,&lt;BR /&gt;Ozzer</description>
      <pubDate>Mon, 06 Dec 2010 14:57:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775005#M920</guid>
      <dc:creator>John_S_18</dc:creator>
      <dc:date>2010-12-06T14:57:13Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775006#M921</link>
      <description>from page 22 of Document 321417-002US &lt;BR /&gt;dated 12 August 2010&lt;BR /&gt;&lt;BR /&gt;Intel Visual Fortran Compiler Professional Edition 11.1 for Windows&lt;BR /&gt;Installation Guide and Release Notes &lt;BR /&gt;&lt;BR /&gt;Performance improvements&lt;BR /&gt;&lt;BR /&gt;FFTS&lt;BR /&gt; Enhanced performance for transforms which are multiple of 8 of 13&lt;BR /&gt;&lt;BR /&gt; Optimized 1d complex cluster FFTs for non-power-of-2 vector lengths&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 07 Dec 2010 04:37:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775006#M921</guid>
      <dc:creator>Frank_M</dc:creator>
      <dc:date>2010-12-07T04:37:32Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775007#M922</link>
      <description>@Frank_M -- Thanks much. With a little sleuthing, I tracked this to the Release Notes associated with &lt;B&gt;MKL Release 10.2, Update 4.&lt;/B&gt;&lt;BR /&gt;&lt;BR /&gt;-Ozzer</description>
      <pubDate>Tue, 07 Dec 2010 22:12:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775007#M922</guid>
      <dc:creator>John_S_18</dc:creator>
      <dc:date>2010-12-07T22:12:24Z</dc:date>
    </item>
    <item>
      <title>How to find optmized FFT dimension size</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775008#M923</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;There are some considerations about selecting optimized dimensions and data layout for multidimensional transforms recently published in MKL Knowledge Base article &lt;A href="http://software.intel.com/en-us/articles/fft-length-and-layout-advisor/" title="FFT length and layout advisor"&gt;FFT length and layout advisor&lt;/A&gt;. This may not be exactly what you are looking for, but it may help.&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;Dima&lt;BR /&gt;</description>
      <pubDate>Tue, 14 Dec 2010 15:17:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-find-optmized-FFT-dimension-size/m-p/775008#M923</guid>
      <dc:creator>Dmitry_B_Intel</dc:creator>
      <dc:date>2010-12-14T15:17:49Z</dc:date>
    </item>
  </channel>
</rss>

