首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2DFFT中的3DFFT分解

2DFFT中的3DFFT分解
EN

Stack Overflow用户
提问于 2013-01-19 04:59:31
回答 2查看 2.2K关注 0票数 3

基本上,我使用FFT在3D中求解扩散方程,其中一种并行化的方法是将3D FFT分解为2D FFT。

如本文所述:https://cmb.ornl.gov/members/z8g/csproject-report.pdf

分解3d fft的方法是执行以下操作:

在xy方向上的2d fft在z方向上的全局转置1d fft

基本上,我的问题是我不确定如何做这个全局转置(因为我假设它是转置一个3d数组)。有人来过这里吗?非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-20 05:09:26

想一想一个带有nx*ny*nz元素的3d立方体。这些元素的3d FFT在数学上是1-d FFT的3个阶段,每个轴一个阶段:

  1. 沿X轴执行ny*nz变换,每个变换处理沿Y轴的nx元素
  2. nx*nz变换
  3. nx*ny沿Z轴的变换

更一般地,N维FFT (N>1)由沿该轴的许多(N-1)-dimensional FFT组成。

如果信号是实数,并且你有一个可以返回半频谱的FFT,那么阶段1的成本大约是一半(实数FFT更便宜),其余的阶段需要复杂,但它们只需要大约一半的变换数量。所以成本大约是一半。

如果您的1DFFT可以读取跨步的输入元素,并将输出打包到连续的缓冲区中,那么您最终将在每个阶段进行转置。

这就是kissfft执行多维FFT的方式。

附注:当我需要获得更高维度的脑海中的图片时,我会想到:带有数字矩阵的纸张(2d),在编号文件的文件夹中(3d),在编号文件柜中(4d),在编号房间(5d),在编号建筑物(6d),等等……所以我可以想象“文件柜”的尺寸

票数 10
EN

Stack Overflow用户

发布于 2013-01-19 06:28:56

论文中提到的“全局转置”不是数学运算,而是distributed memory machines之间数据的重新排列。

对于步骤1,在一台机器上计算的数据必须传输到所有其他机器,反之亦然。它与矩阵转置没有任何关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14407522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档