Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How to control number of threads in FFT ?

Asked by 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.

0 Comments

Nicolas

Products

No products are associated with this question.

2 Answers

Answer by 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:

http://www.mathworks.com.au/help/techdoc/rn/bry1ecg-1.html#br1ask3-1

It's possible that it was being systematically removed from functions such as fftn() prior to that release (?)

5 Comments

Geoff on 11 Apr 2012

So, Nicolas... I reckon if you're really desperate to do this, you're gonna have to MEX your own interface to FFTW, as well as mess with the FFTW code. First, get hold of the FFTW source code, modify it to allow the setting of a max thread-count (http://openmp.org/pipermail/omp/2007/000882.html) and compile (with OpenMP support). Then make your own fftn MEX function that takes a thread count parameter and sets it accordingly on your modified FFTW lib. Hopefully you have a _really_ good reason to warrant this effort.

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 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 ?

Geoff
Answer by 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

Geoff on 11 Apr 2012

I just tried it on my own i5-2500 win7 64-bit, and all four cores are maxed-out. Have you been fluffing about with your system settings somewhere?

Richard Brown on 11 Apr 2012

Well, after a reboot, it is multithreading properly. Something must have been amiss. It simply IS multithreaded

Daniel on 11 Apr 2012

I think it also depends on the vector sizes.

Richard Brown

Contact us