How to control number of threads in FFT ?

3 views (last 30 days)
Nicolas
Nicolas on 10 Apr 2012
Hello,
I want to vary the number of threads active in fft/fftn. I test on R2011b:
A = randn([2048 2048]);
maxNumCompThreads(N)
for a=1:100
A = fftn(A);
end
with different N. However, when varying N, nothing change in the core CPU monitoring: all the cores stay active.
It seems that the fftw library does not take into account the number of cores. Is there a way to specify this parameter in fftw ? Is there another way to define the number of active cores ?
Thank you.

Answers (2)

Geoff
Geoff on 11 Apr 2012
Don't know if this is any help, but:
maxNumCompThreads will be removed in a future release. Please remove
any instances of this function from your code.
Function was removed in 2012a:
It's possible that it was being systematically removed from functions such as fftn() prior to that release (?)
  5 Comments
Nicolas
Nicolas on 11 Apr 2012
Thanks Geoff. I also found: http://www.mathworks.com/matlabcentral/fileexchange/16314 which might be helpful in interfacing the fftw. I am not ready to go into it yet. I still think there might a way to specify the number of cores somewhere in Matlab (at least switching between single to all). In other way, what does the command -singleCompThread that enforce single thread at matlab launch ?
Nicolas
Nicolas on 11 Apr 2012
I add: fft can run either multi or single thread in single core or multi core on worker and matlab session respectively. That means to me that the fftw read somewhere which configuration it has to use to process (is it define in the wisdom?). Then what variable control this setting ?

Sign in to comment.


Richard Brown
Richard Brown on 11 Apr 2012
I just tried it out on my Windows install (R2011b). No matter what you set maxNumCompThreads to, fftn only ever uses one thread. It's simply not multithreaded.
edit: Something funky was happening with my system when I tested this -- it is multithreaded.
  5 Comments
Richard Brown
Richard Brown on 11 Apr 2012
Well, after a reboot, it is multithreading properly. Something must have been amiss. It simply IS multithreaded
Daniel Shub
Daniel Shub on 11 Apr 2012
I think it also depends on the vector sizes.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!