How to control number of threads in FFT ?
Show older comments
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
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
Richard Brown
on 11 Apr 2012
It is still there (just checked), but with a warning about being deprecated.
Geoff
on 11 Apr 2012
Oh, sorry, I didn't realise that the fftw library is not actually MatLab. It says that it can be compiled with a number of different multi-threading schemes, but MatLab won't have control over these.
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
Nicolas
on 11 Apr 2012
Richard Brown
on 11 Apr 2012
0 votes
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
Nicolas
on 11 Apr 2012
Richard Brown
on 11 Apr 2012
That is interesting. On my system, Sandy Bridge core i5, win 7 64bit fftn only uses one core - you can watch as only one core activates in the performance manager. In contrast you can clearly see the multithreading from the likes of SVD
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 Shub
on 11 Apr 2012
I think it also depends on the vector sizes.
Categories
Find more on Platform and License in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!