Editing Optimizing Fourier transforms

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
Octave uses the package [http://www.fftw.org/ FFTW version 3] to perform its fast fourier transforms, which is a highly optimized fast fourier transform package. This package uses what it calls "wisdom" to plan the best way to perform the fast fourier transform on your particular computer. Such "wisdom" being dependent on the machine on which FFTW is used can not easily be shared, though in practice using wisdom from architecturally similar machines seems ok.
+
Octave uses the package FFTW version 3 to perform its fast fourier transforms, which is a highly optimized fast fourier transform package [http://www.fftw.org/]. This package uses what it calls "wisdom" to plan the best way to perform the fast fourier transform on your particular computer. Such "wisdom" being dependent on the machine on which FFTW is used can not easily be shared, though in practice using wisdom from architecturally similar machines seems ok.
  
 
Due to particularities of how wisdom is created, Octave can't create this wisdom directly from the fast fourier transform commands themselves, and in the absence of any "wisdom" an estimate is used that in most cases is not too bad. However, Octave includes the command <code>fftw_wisdom</code> to create and manage such "wisdom". For example
 
Due to particularities of how wisdom is created, Octave can't create this wisdom directly from the fast fourier transform commands themselves, and in the absence of any "wisdom" an estimate is used that in most cases is not too bad. However, Octave includes the command <code>fftw_wisdom</code> to create and manage such "wisdom". For example
  
  fftw_wisdom ([102, 0, 0; 103, 103, 0; 102, 103, 105]);
+
          fftw_wisdom ([102, 0, 0; 103, 103, 0; 102, 103, 105]);
  a = fft (rand (1,102));
+
          a = fft (rand (1,102));
  b = fft (rand (103,103));
+
          b = fft (rand (103,103));
  c = fftn (rand ([102, 103, 105]));
+
          c = fftn (rand ([102, 103, 105]));
  
 
calculates the wisdom necessary to accelerate the 102, 103x103 and the 102x103x105 FFTs. Note that calculated wisdom will be lost when restarting Octave. As the calculation of the wisdom is effectively performed by doing the fast fourier transform in many different ways to find the fastest version, this means that the above is only useful if you intend to do many many fourier transforms of this form.
 
calculates the wisdom necessary to accelerate the 102, 103x103 and the 102x103x105 FFTs. Note that calculated wisdom will be lost when restarting Octave. As the calculation of the wisdom is effectively performed by doing the fast fourier transform in many different ways to find the fastest version, this means that the above is only useful if you intend to do many many fourier transforms of this form.
Line 12: Line 12:
 
Octave also has the ability to use "wisdom" that is stored in a file, and the <code>fftw_wisdom</code> command can equally be used to manage such wisdom. By far the best way to handle FFTW wisdom files is to create a system-wide wisdom file. This file is managed by FFTW itself, and so all applications linked to FFTW will benefit from this "wisdom" file. For this purpose FFTW itself it delivered with a program <code>fftw-wisdom</code> that can be used like
 
Octave also has the ability to use "wisdom" that is stored in a file, and the <code>fftw_wisdom</code> command can equally be used to manage such wisdom. By far the best way to handle FFTW wisdom files is to create a system-wide wisdom file. This file is managed by FFTW itself, and so all applications linked to FFTW will benefit from this "wisdom" file. For this purpose FFTW itself it delivered with a program <code>fftw-wisdom</code> that can be used like
  
  % fftw-wisdom -v -c -o /etc/fftw/wisdom
+
          % fftw-wisdom -v -c -o /etc/fftw/wisdom
  
to create a system-wide "wisdom" file in {{Path|/etc/fftw/wisdom}}. The <code>-c</code> option specifies than canonical wisdom is created, which implies that wisdom for the fourier transforms in one-, two- or three-dimension with dimensions that are integer powers of 2 or 10 with fewer than 2^20 elements are calculated. That "wisdom" for the transform 16x16 or 100x1 will be calculated but the "wisdom" for transforms like 16x17 or 101x1 will not be. However, "wisdom" for arbitrary transforms can be created with the <code>fftw-wisdom</code> command.
+
to create a system-wide "wisdom" file in <code>/etc/fftw/wisdom</code>. The <code>-c</code> option specifies than canonical wisdom is created, which implies that wisdom for the fourier transforms in one-, two- or three-dimension with dimensions that are integer powers of 2 or 10 with fewer than 2^20 elements are calculated. That "wisdom" for the transform 16x16 or 100x1 will be calculated but the "wisdom" for transforms like 16x17 or 101x1 will not be. However, "wisdom" for arbitrary transforms can be created with the <code>fftw-wisdom</code> command
  
 
You are recommended to read the help file of the Octave command <code>fftw_wisdom</code> (note that this is fftw-underscore-wisdom) and FFTW's command <code>fftw-wisdom</code> (fftw-dash-wisdom) for further information.
 
You are recommended to read the help file of the Octave command <code>fftw_wisdom</code> (note that this is fftw-underscore-wisdom) and FFTW's command <code>fftw-wisdom</code> (fftw-dash-wisdom) for further information.
  
 
[[Category:Tips and tricks]]
 
[[Category:Tips and tricks]]

Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)

Template used on this page: