MATLAB: Permute in GPU

fftngpu

I am trying to do a 3D fft on some data using the built in GPU toolbox of 2011a and am having some trouble. Since the fftn function doesn't exist I find myself needing to do fft2 followed by fft. However, since "permute" doesn't seem to exist for GPU arrays either, I have to reshape the [l m n] matrix into a [l*m n] matrix, transposing it, applying fft, transposing back and reshaping back. Is there a more elegant/less asinine way of doing this?

Best Answer

RESHAPE is very efficient, because it does not touch the data, but only the vector of dimensions. Therefore the computational costs of your procedure are optimal already, if the TRANSPOSE is programmed efficiently. A PERMUTE cannot be faster.
I'd expect, that süpecifying the dimension to operate on is helpful here: "fft(X,[],dim)". But I don't know, if this works with the GPU toolbox.