如何用 CUDA 计算大矩阵的二维 FFT?

Posted

技术标签:

【中文标题】如何用 CUDA 计算大矩阵的二维 FFT?【英文标题】:How to calculate a two-dimensional FFT of a large matrix with CUDA? 【发布时间】:2021-04-12 20:05:45 【问题描述】:

现在我有一个16K*16K的大矩阵,全局内存不够用,怎么计算矩阵的二维FFT?

【问题讨论】:

很可能你不能。有核外fft算法。我不知道有任何 GPU 实现。当然没有袖口 您应该能够在 3GB GPU(使用 CUFFT)上执行该大小的 float R2C 或 C2R 就地转换。 Here 是框架。我可以在 2GB GPU 上进行 15Kx15K 的转换。 【参考方案1】:

也许使用统一内存的超额订阅适用于 cuFFT?

https://developer.nvidia.com/blog/unified-memory-cuda-beginners/

您还可以分别对行和列进行 FFT,并在主机内存之间移动数据。

您需要完整的结果矩阵吗?你在 CPU 和 GPU 上有多少内存?输入/输出是复数值吗?您需要什么精度(16 位是否足够)?计算时间紧迫吗?您还想处理更大的矩阵吗?

【讨论】:

以上是关于如何用 CUDA 计算大矩阵的二维 FFT?的主要内容,如果未能解决你的问题,请参考以下文章

如何用一次n点的fft计算一个2n点的dft

如何使用CUDA加速MATLAB计算速度?

cuda fft 计算

如何用MATLAB计算矩阵的行列式

如何用 sklearn 计算词-词共现矩阵?

如何用 numpy/pandas 计算“子矩阵”条目的总和?