How do I perform muliple FFTs on a stack of data in parallel on a GPU?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, I have a stack of images, and I want to compute the 2d fourier-transform of each image in parallel. For example, if I was not using a GPU, I would be doing something like this:
A = rand(256,256,100);
B = zeros(256, 256, 100);
for j = 1:100
B(:,:,j) = fftshift(fft2(A(:,:,j)));
end;
I would like to do each iteration of this for-loop in parallel. Is there a way to do that using gpuArray and arrayfun, or do I have to define my own cuda kernel?
0 commentaires
Réponses (1)
Edric Ellis
le 18 Mar 2013
FFT2 in MATLAB already applies to each 'page' of a 3-dimensional array, and this is true on the GPU too. Unfortunately, FFTSHIFT doesn't work that way, so you need something like this:
A = gpuArray.rand(256, 256, 100);
B = fftshift(fftshift(fft2(A), 1), 2);
Voir également
Catégories
En savoir plus sur GPU Computing dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!