permute in GPU

조회 수: 13 (최근 30일)
Rodrigo
Rodrigo 2011년 8월 25일
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?

채택된 답변

Jan
Jan 2011년 8월 25일
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.

추가 답변 (2개)

Walter Roberson
Walter Roberson 2011년 8월 25일
I seem to recall John saying that Jacket supports fftn(); if you are doing heavy GPU work, you may wish to investigate Accelereyes Jacket .

Rodrigo
Rodrigo 2011년 8월 29일
The reshape command works very fast. The .' operation needed to shift the dimensions not so much. The routine spends about 20% of it's time doing that, but it's still much faster than the CPU version.
If my department has a site license for Jacket I'll give it a shot. Otherwise I don't want to spend the extra money for such a simple operation.

카테고리

Help CenterFile Exchange에서 GPU Computing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by