<?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 Hi Thomas, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025094#M19851</link>
    <description>&lt;P&gt;Hi Thomas,&lt;/P&gt;

&lt;P&gt;Please post the pseudo code here.&lt;/P&gt;

&lt;P&gt;Evgueni.&lt;/P&gt;</description>
    <pubDate>Fri, 24 Jul 2015 06:06:19 GMT</pubDate>
    <dc:creator>Evgueni_P_Intel</dc:creator>
    <dc:date>2015-07-24T06:06:19Z</dc:date>
    <item>
      <title>Multidimensional DFT and OpenMP</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025093#M19850</link>
      <description>&lt;P&gt;I'm working on a program that performs several 3 x 3d (N1xN2xN3) DFTs using the MKL DFT algorithm. I'm running most of the program in parallel using OpenMP and I'd like to get as much parallel performance from the DFT section as well as it accounts for a significant portion of the programs runtime. However when I try to increase the number of threads I find that the performance improvement plateaus at 3 threads, i.e., the number of transforms for each call. If instead I break up the transform into 3xN1 2d transforms the parallel performance continues to scale beyond 3 threads. This seems like a lot of extra work for performance gains I would expect to be handled internally. Is there a way of directing MKL's DFT to do this on it's own?&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;As it may be relevant, I'm already passing the number of available threads to the DFT via the DFTI_NUMBER_OF_THREADS DftiSetValue option and each of the 3 3d tranforms is done by setting the DFTI_NUMBER_OF_TRANSFORMS option. I can provide some pseudo code if that would be helpful.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jul 2015 21:52:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025093#M19850</guid>
      <dc:creator>Thomas_D_1</dc:creator>
      <dc:date>2015-07-23T21:52:08Z</dc:date>
    </item>
    <item>
      <title>Hi Thomas,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025094#M19851</link>
      <description>&lt;P&gt;Hi Thomas,&lt;/P&gt;

&lt;P&gt;Please post the pseudo code here.&lt;/P&gt;

&lt;P&gt;Evgueni.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jul 2015 06:06:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025094#M19851</guid>
      <dc:creator>Evgueni_P_Intel</dc:creator>
      <dc:date>2015-07-24T06:06:19Z</dc:date>
    </item>
    <item>
      <title>I've included the basic code</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025095#M19852</link>
      <description>&lt;P&gt;I've included the basic code layout below. I've tried running this kind of program with the number of OpenMP threads ranging from 1 to 8 and the runtime stops improving after 3 threads.&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;program main
  ! defining variables and stuff
  real :: array(2*(Nx/2 + 1),Ny,Nz,3)
  ...

  nThreads = OMP_GET_NUM_THREADS()
  call OMP_SET_NESTED(.TRUE.)

  ! create backward descriptor
  status = DftiCreateDescriptor(descr, DFTI_SINGLE, DFTI_REAL, 3, [Nx,Ny,Nz])
  status = DftiSetValue(Bdescr, DFTI_NUMBER_OF_USER_THREADS, nThreads)
  status = DftiSetValue(Bdescr, DFTI_NUMBER_OF_TRANSFORMS, 3)
  status = DftiSetValue(Bdescr, DFTI_INPUT_DISTANCE, 2*(Nx/2 + 1)*Ny*Nz)
  status = DftiSetValue(Bdescr, DFTI_OUTPUT_DISTANCE, 2*(Nx/2 + 1)*Ny*Nz)
  status = DftiSetValue(Bdescr, DFTI_INPUT_STRIDES, [0,1,2*(Nx/2 + 1),2*(Nx/2 + 1)*Ny])
  status = DftiSetValue(Bdescr, DFTI_OUTPUT_STRIDES, [0,1,2*(Nx/2 + 1),2*(Nx/2 + 1)*Ny])


  ! create forward descriptor
  status = DftiCreateDescriptor(descr, DFTI_SINGLE, DFTI_REAL, 3, [Nx,Ny,Nz])
  status = DftiSetValue(Fdescr, DFTI_NUMBER_OF_USER_THREADS, nThreads)
  status = DftiSetValue(Fdescr, DFTI_NUMBER_OF_TRANSFORMS, 3)
  status = DftiSetValue(Fdescr, DFTI_INPUT_DISTANCE, 2*(Nx/2 + 1)*Ny*Nz)
  status = DftiSetValue(Fdescr, DFTI_OUTPUT_DISTANCE, (Nx/2 + 1)*Ny*Nz)
  status = DftiSetValue(Fdescr, DFTI_INPUT_STRIDES, [0,1,2*(Nx/2 + 1),2*(Nx/2 + 1)*Ny])
  status = DftiSetValue(Fdescr, DFTI_OUTPUT_STRIDES, [0,1,(Nx/2 + 1),(Nx/2 + 1)*Ny])

  ! initialize array
  array = 1.0
  
  ! do many loops of forward and backward DFT
  ! start timer
  do i = 1, nLoops
    status = DftiCommitDescriptor(Fdescr)
    status = DftiComputeForward(Fdescr, array(:,1,1,1))
    status = DftiCommitDescriptor(Bdescr)
    status = DftiComputeBackward(Bdescr, array(:,1,1,1))
  end do
  ! end timer

end program main&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jul 2015 22:20:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025095#M19852</guid>
      <dc:creator>Thomas_D_1</dc:creator>
      <dc:date>2015-07-24T22:20:58Z</dc:date>
    </item>
    <item>
      <title>Hi Thomas,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025096#M19853</link>
      <description>&lt;P&gt;Hi Thomas,&lt;/P&gt;

&lt;P&gt;You mentioned "I'm running most of the program in parallel using OpenMP".&amp;nbsp; so as I understand, you should have some OpenMP external &amp;nbsp;thread at DFT call or aka nested parallel model.&amp;nbsp; But&amp;nbsp;it seems not in the code.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;It is ok &amp;nbsp;&amp;nbsp;&lt;FONT face="Courier New"&gt;&amp;nbsp;DFTI_NUMBER_OF_TRANSFORMS, 3 as you will &lt;/FONT&gt;&lt;STRONG&gt;3&lt;/STRONG&gt; x 3d (N1xN2xN3) DFTs.&amp;nbsp;&amp;nbsp; so your performance result are based on&amp;nbsp;3 threads.&lt;/P&gt;

&lt;P&gt;But&amp;nbsp;&amp;nbsp;&lt;FONT face="Courier New"&gt;DFTI_NUMBER_OF_USER_THREADS should be no used at latest version&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;DFTI_NUMBER_OF_USER_THREADS&lt;BR /&gt;
	The DFTI_NUMBER_OF_USER_THREADS configuration parameter is no longer used and kept for compatibility&lt;BR /&gt;
	with previous versions of Intel MKL.&lt;/P&gt;

&lt;P&gt;Could you please tell what MKL version and command line&amp;nbsp; and your hardware configuration?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jul 2015 03:52:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025096#M19853</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2015-07-27T03:52:42Z</dc:date>
    </item>
    <item>
      <title>The DFT isn't embeded in a</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025097#M19854</link>
      <description>&lt;P&gt;Thanks for the reply. The DFT in my program isn't embedded in a parallel section. But I would like to run it in parallel as it accounts for a significant percent of the total calculation. The structure of the programs looks like this&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;program main
  ! initialization stuff
  ...

  do
    ! perform lots of parallel calculations
    ...

    ! perform forward DFT
    call DFTForward(descrF, array(:,1,1,1))
    
    ! perform parallel calculations with DFT of array
    ...

    ! perform backward DFT
    call DFTBackward(descrB, array(:,1,1,1))

    ! perform more parallel calculations
    ...
  end do
end program main&lt;/PRE&gt;

&lt;P&gt;I'm using ifort version 14.0.2 20140120. Not sure which version of MKL that has. As for hardware I'm working on a Linux cluster with AMD Opteron 6212 Processors each with 16 CPUs.&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jul 2015 17:38:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025097#M19854</guid>
      <dc:creator>Thomas_D_1</dc:creator>
      <dc:date>2015-07-27T17:38:42Z</dc:date>
    </item>
    <item>
      <title>Hi Thomas, </title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025098#M19855</link>
      <description>&lt;P&gt;Hi Thomas,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Thanks for the clarification. &amp;nbsp;You haven't show how you compile the code and what the exact performance data vs threading number, not sure i get all of them, but please try.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;1. Could &amp;nbsp;you&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;remove the limitation&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="keyword" style="font-size: 13.0080003738403px; line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; font-weight: bold !important; min-height: inherit !important; color: rgb(0, 102, 153) !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;status&lt;/CODE&gt;&lt;SPAN style="font-size: 13.0080003738403px; color: rgb(0, 0, 0); font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; line-height: 14.3088006973267px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="plain" style="font-size: 13.0080003738403px; line-height: 14.3088006973267px; color: rgb(0, 0, 0); font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;= DftiSetValue(Bdescr, DFTI_NUMBER_OF_USER_THREADS, nThreads) and try again?&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;Please let us know the result.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;2. In addition, &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;there are sample code under MKL install directory.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;MKLexample\dftf\source&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;\&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;config_number_of_transforms.f90&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;and&amp;nbsp;config_number_of_user_threads.f90. you may test the performance of MKL DFT part. &amp;nbsp;then consider total parallel part?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;3. Or&amp;nbsp;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;may you try &amp;nbsp;insert OMP threading control code in the parallel calculation,of your code &amp;nbsp;and obverse the &lt;/SPAN&gt;behavious&amp;nbsp;of thread number&lt;/P&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="keyword" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: bold !important; min-height: inherit !important; color: rgb(0, 102, 153) !important; background: none !important;"&gt;do&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;06&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;
					&lt;P&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&lt;/CODE&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;call omp_get_num_procs() ;&lt;/SPAN&gt;&lt;/P&gt;

					&lt;P&gt;&lt;SPAN style="font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; font-size: 1em; line-height: 1.1em; background-color: initial;"&gt;call &lt;/SPAN&gt;&lt;FONT color="#ffffff" style="font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; font-size: 1em; line-height: 1.1em; background-color: rgb(51, 153, 255);"&gt;omp_set_num_threads&lt;/FONT&gt;&lt;SPAN style="font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; font-size: 1em; line-height: 1.1em; background-color: initial;"&gt;(8) &amp;nbsp;//8 physical core, right?&lt;/SPAN&gt;&lt;/P&gt;

					&lt;P&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;

					&lt;P&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;! perform lots of parallel calculations&lt;/CODE&gt;&lt;/P&gt;
				&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;07&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;...&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;08&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&amp;nbsp;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;09&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;! perform forward DFT&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;

	&lt;P&gt;&amp;nbsp;&lt;/P&gt;

	&lt;P&gt;&lt;SPAN style="color: rgb(0, 0, 0); font-size: 1em; line-height: 1.1em; font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; background-color: initial;"&gt;call&amp;nbsp;&lt;/SPAN&gt;&lt;FONT color="#ffffff" style="font-size: 1em; line-height: 1.1em; font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; background-color: rgb(51, 153, 255);"&gt;omp_set_num_threads&lt;/FONT&gt;&lt;SPAN style="color: rgb(0, 0, 0); font-size: 1em; line-height: 1.1em; font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; background-color: initial;"&gt;(3)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;10&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="keyword" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: bold !important; min-height: inherit !important; color: rgb(0, 102, 153) !important; background: none !important;"&gt;call&lt;/CODE&gt;&amp;nbsp;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;DFTForward(descrF, array(:,1,1,1))&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;11&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&amp;nbsp;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;12&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;! perform parallel calculations with DFT of array&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;13&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;...&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;14&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&amp;nbsp;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;15&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;! perform backward DFT&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;16&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="keyword" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: bold !important; min-height: inherit !important; color: rgb(0, 102, 153) !important; background: none !important;"&gt;call&lt;/CODE&gt;&amp;nbsp;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;DFTBackward(descrB, array(:,1,1,1))&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;

	&lt;P&gt;&amp;nbsp;&lt;/P&gt;

	&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.1em; color: rgb(0, 0, 0); font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; background-color: initial;"&gt;call&amp;nbsp;&lt;/SPAN&gt;&lt;FONT color="#ffffff" style="font-size: 1em; line-height: 1.1em; font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; background-color: rgb(51, 153, 255);"&gt;omp_set_num_threads&lt;/FONT&gt;&lt;SPAN style="font-size: 1em; line-height: 1.1em; color: rgb(0, 0, 0); font-family: Consolas, 'Lucida Console', Menlo, Monaco, 'DejaVu Sans Mono', monospace, sans-serif; background-color: initial;"&gt;(8)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;17&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&amp;nbsp;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;18&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;! perform more parallel calculations&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt1" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background-image: none !important; background-attachment: initial !important; background-size: initial !important; background-origin: initial !important; background-clip: initial !important; background-position: initial !important; background-repeat: initial !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;19&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="plain" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;...&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;DIV class="line alt2" style="line-height: 14.3088006973267px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13.0080003738403px; color: rgb(96, 96, 96); margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; min-height: inherit !important; background: none rgb(248, 248, 248) !important;"&gt;
	&lt;TABLE style="border-collapse: collapse !important; border: 0px !important; font-size: 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; width: auto !important; vertical-align: baseline !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;
		&lt;TBODY style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
			&lt;TR style="border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; background: none !important;"&gt;
				&lt;TD class="number" style="border-width: 0px !important; border-style: initial !important; padding: 0px !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(175, 175, 175) !important; background: none !important;"&gt;&lt;CODE style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px 0.3em 0px 0px !important; border: 0px !important; outline: 0px !important; text-align: right !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 2.7em !important; line-height: 1.1em !important; min-height: inherit !important; display: block !important; background: none !important;"&gt;20&lt;/CODE&gt;&lt;/TD&gt;
				&lt;TD class="content" style="border-width: 0px 0px 0px 3px !important; padding: 0px 0px 0px 0.5em !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; outline: 0px !important; float: none !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 0, 0) !important; background: none !important;"&gt;&lt;CODE class="spaces" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; min-height: inherit !important; background: none !important;"&gt;&amp;nbsp;&amp;nbsp;&lt;/CODE&gt;&lt;CODE class="keyword" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: bold !important; min-height: inherit !important; color: rgb(0, 102, 153) !important; background: none !important;"&gt;end&lt;/CODE&gt;&amp;nbsp;&lt;CODE class="keyword" style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; margin: 0px !important; padding: 0px !important; border: 0px !important; outline: 0px !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: bold !important; min-height: inherit !important; color: rgb(0, 102, 153) !important; background: none !important;"&gt;do&lt;/CODE&gt;&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Please let us know the result.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Best Regards,&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Ying&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jul 2015 08:55:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025098#M19855</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2015-07-29T08:55:42Z</dc:date>
    </item>
    <item>
      <title>Since pseudo-code doesn't</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025099#M19856</link>
      <description>&lt;P&gt;Since pseudo-code doesn't appear to be doing the trick I boiled my program down to a simple example listed here&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;!=========================================================================================
program main
!=========================================================================================
  use, intrinsic :: iso_fortran_env
  use mkl_dfti
  use omp_lib
  implicit none
  ! local parameters:
  integer(IK), parameter :: IK = 4
  integer(IK), parameter :: RK = 8
  integer(IK), parameter :: DFT_CK = 4
  integer(IK), parameter :: DFT_RK = 4
  integer(IK), parameter :: NLOOPS = 100
  integer(IK), parameter :: NX = 100
  integer(IK), parameter :: NY = 40
  integer(IK), parameter :: NZ = 60
  integer(IK), parameter :: MX = 2*NX - 1
  integer(IK), parameter :: MY = 2*NY - 1
  integer(IK), parameter :: MZ = 2*NZ - 1
  ! local variables:
  real(DFT_RK), allocatable :: array(:,:,:,:)
  integer(IK) :: status

  write(6,'("Number of processors = "I0)') OMP_GET_NUM_PROCS()
  write(6,'("Maximum number of available threads = "I0)') OMP_GET_MAX_THREADS()
  write(6,'(A)') ''

  write(6,'("Generating array...")')
  allocate(array(2*(MX/2+1),MY,MZ,3))
  array = 1.0
  write(6,'(A)') ''

  write(6,'("TEST DFT_r2r_3D...")')

  write(6,'("Number of OMP threads = "I0)') 1
  call omp_set_num_threads(1)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 2
  call omp_set_num_threads(2)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 3
  call omp_set_num_threads(3)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 4
  call omp_set_num_threads(4)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 5
  call omp_set_num_threads(5)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 6
  call omp_set_num_threads(6)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 7
  call omp_set_num_threads(7)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

  write(6,'("Number of OMP threads = "I0)') 8
  call omp_set_num_threads(8)
  call TEST_DFT_r2r_3D(array, 3, MX, MY, MZ, NLOOPS)
  write(6,'(A)') ''

contains

!=========================================================================================
! TEST_DFT_r2r_3D:
!
!   Performs a number of forward and backward DFTs using 3d transforms.
!
  subroutine TEST_DFT_r2r_3D( array, MK, MX, MY, MZ, NLOOPS )
    real(DFT_RK), intent(inout) :: array(:,:,:,:)
    integer(IK) , intent(in)    :: MK, MX, MY, MZ
    integer(IK) , intent(in)    :: NLOOPS
    ! local variables:
    integer(IK) :: cFinish, cStart, cRate, cMax
    type(DFTI_DESCRIPTOR), pointer :: descrB, descrF
    integer(IK) :: i
    integer(IK) :: status
    real(RK)    :: start, finish, time

    ! create backward descriptor
    print *,"Creating DFTI Backward descriptor"
    status = DftiCreateDescriptor(descrB, DFTI_SINGLE, DFTI_REAL, 3, [MX,MY,MZ])
    !status = DftiSetValue(descrB, DFTI_NUMBER_OF_USER_THREADS, nThreads)
    status = DftiSetValue(descrB, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX)
    status = DftiSetValue(descrB, DFTI_BACKWARD_SCALE, 1.0/(MX*MY*MZ))
    status = DftiSetValue(descrB, DFTI_NUMBER_OF_TRANSFORMS, MK)
    status = DftiSetValue(descrB, DFTI_INPUT_DISTANCE ,   (MX/2 + 1)*MY*MZ)
    status = DftiSetValue(descrB, DFTI_OUTPUT_DISTANCE, 2*(MX/2 + 1)*MY*MZ)
    status = DftiSetValue(descrB, DFTI_INPUT_STRIDES , [0,1,  (MX/2 + 1),  (MX/2 + 1)*MY])
    status = DftiSetValue(descrB, DFTI_OUTPUT_STRIDES, [0,1,2*(MX/2 + 1),2*(MX/2 + 1)*MY])

    ! create forward descriptor
    print *,"Creating DFTI Forward descriptor"
    status = DftiCreateDescriptor(descrF, DFTI_SINGLE, DFTI_REAL, 3, [MX,MY,MZ])
    !status = DftiSetValue(descrF, DFTI_NUMBER_OF_USER_THREADS, nThreads)
    status = DftiSetValue(descrF, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX)
    status = DftiSetValue(descrF, DFTI_NUMBER_OF_TRANSFORMS, MK)
    status = DftiSetValue(descrF, DFTI_INPUT_DISTANCE , 2*(MX/2 + 1)*MY*MZ)
    status = DftiSetValue(descrF, DFTI_OUTPUT_DISTANCE,   (MX/2 + 1)*MY*MZ)
    status = DftiSetValue(descrF, DFTI_INPUT_STRIDES , [0,1,2*(MX/2 + 1),2*(MX/2 + 1)*MY])
    status = DftiSetValue(descrF, DFTI_OUTPUT_STRIDES, [0,1,  (MX/2 + 1),  (MX/2 + 1)*MY])

    ! perform transforms
    write(6,'("Starting loop...")')
    call system_clock(cStart, cRate, cMax)
    call cpu_time(start)
    do i = 1, NLOOPS
      status = DftiCommitDescriptor(descrF)
      status = DftiComputeForward(descrF, array(:,1,1,1))
      status = DftiCommitDescriptor(descrB)
      status = DftiComputeBackward(descrB, array(:,1,1,1))
    end do
    call system_clock(cFinish, cRate, cMax)
    call cpu_time(finish)

    ! output results
    write(6,'("  CPU_TIME = "ES26.16)') finish - start
    if (cFinish &amp;lt; cStart) cFinish = cFinish + cMax
    write(6,'("  SYSTEM_CLOCK = "ES26.16)') real(cFinish - cStart)/real(cRate)

    ! cleanup
    status = DftiFreeDescriptor(descrB)
    status = DftiFreeDescriptor(descrF)
  end subroutine TEST_DFT_r2r_3D
!=========================================================================================
end program main
!=========================================================================================&lt;/PRE&gt;

&lt;P&gt;I'm compiling with the compiler flags&lt;/P&gt;

&lt;PRE class="brush:bash;"&gt;FFLAGS = -O3 -msse2 -openmp -parallel&lt;/PRE&gt;

&lt;P&gt;Compiling and running this program gives&amp;nbsp;&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;PRE class="brush:;"&gt;Number of processors = 16
Maximum number of available threads = 8

Generating array...

TEST DFT_r2r_3D...
Number of OMP threads = 1
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.7115277000000006E+01
  SYSTEM_CLOCK =     7.5663902282714844E+01

Number of OMP threads = 2
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5902460999999988E+01
  SYSTEM_CLOCK =     3.7973400115966797E+01

Number of OMP threads = 3
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5313551000000018E+01
  SYSTEM_CLOCK =     2.5120399475097656E+01

Number of OMP threads = 4
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5515520000000009E+01
  SYSTEM_CLOCK =     2.5186500549316406E+01

Number of OMP threads = 5
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5352544999999964E+01
  SYSTEM_CLOCK =     2.5134099960327148E+01

Number of OMP threads = 6
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5456527999999992E+01
  SYSTEM_CLOCK =     2.5168199539184570E+01

Number of OMP threads = 7
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5415534999999977E+01
  SYSTEM_CLOCK =     2.5154600143432617E+01

Number of OMP threads = 8
 Creating DFTI Backward descriptor
 Creating DFTI Forward descriptor
Starting loop...
  CPU_TIME =     7.5428532999999902E+01
  SYSTEM_CLOCK =     2.5156799316406250E+01
&lt;/PRE&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;So the program runtime plateaus at about 25 seconds after only 3 threads are given to OpenMP.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jul 2015 15:16:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025099#M19856</guid>
      <dc:creator>Thomas_D_1</dc:creator>
      <dc:date>2015-07-29T15:16:00Z</dc:date>
    </item>
    <item>
      <title>Hi Thomas,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025100#M19857</link>
      <description>&lt;P&gt;Hi Thomas,&lt;/P&gt;

&lt;P&gt;The DFTI_NUMBER_OF_TRANSFORMS setting is tuned for large transposed batches.&lt;/P&gt;

&lt;P&gt;To improve scaling in your case, I have changed the descriptors to do 1 transform at a time in a loop in TEST_DFT_r2r_3D.&lt;/P&gt;

&lt;P&gt;I have also moved DftiCommitDescriptor out of the loop.&lt;/P&gt;

&lt;P&gt;Now it scales.&lt;/P&gt;

&lt;P&gt;Evgueni.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;!=========================================================================================
! TEST_DFT_r2r_3D:
!
!&amp;nbsp;&amp;nbsp; Performs a number of forward and backward DFTs using 3d transforms.
!
&amp;nbsp; subroutine TEST_DFT_r2r_3D( array, MK, MX, MY, MZ, NLOOPS )
&amp;nbsp;&amp;nbsp;&amp;nbsp; real(DFT_RK), intent(inout) :: array(:,:,:,:)
&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(IK) , intent(in)&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MK, MX, MY, MZ
&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(IK) , intent(in)&amp;nbsp;&amp;nbsp;&amp;nbsp; :: NLOOPS
&amp;nbsp;&amp;nbsp;&amp;nbsp; ! local variables:
&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(IK) :: cFinish, cStart, cRate, cMax
&amp;nbsp;&amp;nbsp;&amp;nbsp; type(DFTI_DESCRIPTOR), pointer :: descrB, descrF
&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(IK) :: i, k
&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(IK) :: status
&amp;nbsp;&amp;nbsp;&amp;nbsp; real(RK)&amp;nbsp;&amp;nbsp;&amp;nbsp; :: start, finish, time

&amp;nbsp;&amp;nbsp;&amp;nbsp; ! create backward descriptor
&amp;nbsp;&amp;nbsp;&amp;nbsp; print *,"Creating DFTI Backward descriptor"
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiCreateDescriptor(descrB, DFTI_SINGLE, DFTI_REAL, 3, [MX,MY,MZ])
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrB, DFTI_NUMBER_OF_USER_THREADS, nThreads)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrB, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrB, DFTI_BACKWARD_SCALE, 1.0/(MX*MY*MZ))
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrB, DFTI_NUMBER_OF_TRANSFORMS, MK)
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrB, DFTI_INPUT_DISTANCE ,&amp;nbsp;&amp;nbsp; (MX/2 + 1)*MY*MZ)
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrB, DFTI_OUTPUT_DISTANCE, 2*(MX/2 + 1)*MY*MZ)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrB, DFTI_INPUT_STRIDES , [0,1,&amp;nbsp; (MX/2 + 1),&amp;nbsp; (MX/2 + 1)*MY])
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrB, DFTI_OUTPUT_STRIDES, [0,1,2*(MX/2 + 1),2*(MX/2 + 1)*MY])

&amp;nbsp;&amp;nbsp;&amp;nbsp; ! create forward descriptor
&amp;nbsp;&amp;nbsp;&amp;nbsp; print *,"Creating DFTI Forward descriptor"
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiCreateDescriptor(descrF, DFTI_SINGLE, DFTI_REAL, 3, [MX,MY,MZ])
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrF, DFTI_NUMBER_OF_USER_THREADS, nThreads)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrF, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX)
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrF, DFTI_NUMBER_OF_TRANSFORMS, MK)
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrF, DFTI_INPUT_DISTANCE , 2*(MX/2 + 1)*MY*MZ)
&amp;nbsp;&amp;nbsp;&amp;nbsp; !status = DftiSetValue(descrF, DFTI_OUTPUT_DISTANCE,&amp;nbsp;&amp;nbsp; (MX/2 + 1)*MY*MZ)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrF, DFTI_INPUT_STRIDES , [0,1,2*(MX/2 + 1),2*(MX/2 + 1)*MY])
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiSetValue(descrF, DFTI_OUTPUT_STRIDES, [0,1,&amp;nbsp; (MX/2 + 1),&amp;nbsp; (MX/2 + 1)*MY])

&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiCommitDescriptor(descrF)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiCommitDescriptor(descrB)

&amp;nbsp;&amp;nbsp;&amp;nbsp; ! perform transforms
&amp;nbsp;&amp;nbsp;&amp;nbsp; write(6,'("Starting loop...")')
&amp;nbsp;&amp;nbsp;&amp;nbsp; call system_clock(cStart, cRate, cMax)
&amp;nbsp;&amp;nbsp;&amp;nbsp; call cpu_time(start)
&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1, NLOOPS
&amp;nbsp;&amp;nbsp;&amp;nbsp; do k = 1, MK
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiComputeForward(descrF, array(:,1,1,k))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiComputeBackward(descrB, array(:,1,1,k))
&amp;nbsp;&amp;nbsp;&amp;nbsp; end do
&amp;nbsp;&amp;nbsp;&amp;nbsp; end do
&amp;nbsp;&amp;nbsp;&amp;nbsp; call system_clock(cFinish, cRate, cMax)
&amp;nbsp;&amp;nbsp;&amp;nbsp; call cpu_time(finish)

&amp;nbsp;&amp;nbsp;&amp;nbsp; ! output results
&amp;nbsp;&amp;nbsp;&amp;nbsp; write(6,'("&amp;nbsp; CPU_TIME = "ES26.16)') finish - start
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cFinish &amp;lt; cStart) cFinish = cFinish + cMax
&amp;nbsp;&amp;nbsp;&amp;nbsp; write(6,'("&amp;nbsp; SYSTEM_CLOCK = "ES26.16)') real(cFinish - cStart)/real(cRate)

&amp;nbsp;&amp;nbsp;&amp;nbsp; ! cleanup
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiFreeDescriptor(descrB)
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = DftiFreeDescriptor(descrF)
&amp;nbsp; end subroutine TEST_DFT_r2r_3D

&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2015 12:42:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025100#M19857</guid>
      <dc:creator>Evgueni_P_Intel</dc:creator>
      <dc:date>2015-07-30T12:42:53Z</dc:date>
    </item>
    <item>
      <title>Thanks so much Evgueni! I</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025101#M19858</link>
      <description>&lt;P&gt;Thanks so much&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;Evgueni! I just made those changes and now it's scaling as expected.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;Out of curiosity, is this difference in parallel behavior between DFT with DFTI_NUMBER_OF_TRANSFORMS = 1 and DFT with&amp;nbsp;DFTI_NUMBER_OF_TRANSFORMS &amp;nbsp;&amp;gt; 1 mentioned in the documentation somewhere? I just took a quick look through the PDF &amp;nbsp;I have of the MKL reference manual and I didn't notice any mention of it.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2015 14:47:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025101#M19858</guid>
      <dc:creator>Thomas_D_1</dc:creator>
      <dc:date>2015-07-30T14:47:28Z</dc:date>
    </item>
    <item>
      <title>You are right, the</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025102#M19859</link>
      <description>&lt;P&gt;You are right, the documentation advises only on data layouts, number of threads, and thread affinity :)&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2015 15:17:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Multidimensional-DFT-and-OpenMP/m-p/1025102#M19859</guid>
      <dc:creator>Evgueni_P_Intel</dc:creator>
      <dc:date>2015-07-30T15:17:06Z</dc:date>
    </item>
  </channel>
</rss>

