3

3 次元 (x=256+2,y=256,z=128) の配列があり、cuFFT を使用して FFT (順方向と逆方向) を計算したいとします。そして、fftw 互換のデータ レイアウトがあります。上記のサイズ (+2) に示すように、パディングは x 方向にあると言えます。私の計画はどうあるべきですか?

//forward 
cufftPlan3d(&plan, z, y, x, CUFFT_R2C) 

//or
cufftPlan3d(&plan, x, y, z, CUFFT_R2C) 

逆の場合は?

//Inverse 
cufftPlan3d(&plan, x, y, z, CUFFT_C2R) 

//or
cufftPlan3d(&plan, z, y, x, CUFFT_C2R) 

データが列の主要な順序で格納されている場合、計画の作成にどのように影響しますか?

4

1 に答える 1

3

を使用している場合cufftPlan3d、それを行う正しい方法は使用することです

cufftplan3d(&plan, x, y, z, type);

ここでxは、最初の次元をy意味し、2 番目の次元をz意味し、3 番目の次元を意味します。あなたの場合、問題なくそのまま使用できます。

すべてのパラメーターは、フォワードとインバースの両方で同じですが、どちらが からにtype変わるかが異なります。CUFFT_R2CCUFFT_C2R

を使用する場合はcufftplanMany、次のようにする必要があります。

int dims[] = {z, y, x}; // reversed order
cufftPlanMany(&plan, 3, dims, NULL, 1, 0, NULL, 1, 0, type, batch);

cufftPlanManyバッチ操作を行っている場合、または連続していないデータを操作している場合に便利です。

于 2013-10-08T14:42:59.057 に答える