【问题标题】:cuFFT buffer used使用 cuFFT 缓冲液
【发布时间】:2014-08-28 21:57:25
【问题描述】:

我们对 cuFFT 使用的内存有限制吗(尤其是一维变换)。 我需要为大量数据计算 FFT,并且我想充分利用我的 GPU 功能。

在用户指南中记录了

在最坏的情况下,CUFFT 库为 8*batch*n[0]*..*n[rank-1] cufftComplex 或 cufftDoubleComplex 元素分配空间(其中 batch 表示将并行执行的转换数量, rank 是输入数据的维数(参见多维变换),n[] 是变换维数的数组)分别用于单精度和双精度变换。

它也说

根据计划的配置,可能会使用较少的内存。 在某些特定情况下,临时空间分配可以低至 1*batch*n[0]*..*n[rank-1] cufftComplex 或 cufftDoubleComplex 元素。

在某些特定情况下”是没有意义的。具体情况没有指定,下限也没用,我们只能用上限“8*.....”来限制GM上使用的内存大小。

就我而言,我有一个一维“经典”复杂变换,它似乎只使用“1*....”。但我无法验证。我应该继续使用“ 8*batch*n[0]*..*n[rank-1] 元素”还是有人对这些特定案例有更多详细信息?

【问题讨论】:

    标签: buffer cufft


    【解决方案1】:

    使用cufftGetSize1dcufftPlan1d 可以为您提供为缓冲区分配的内存量。文档说 cufftPlan1d 给出了最大数量的估计值,但我通过一个简单的一维计划得到了 2 个函数的相同值。

    请注意,当您计算更多 FFT 时,分配的内存会变慢。当 FFT 的大小变大时,它也会变慢。

    在我的情况下,我同时使用 64 点和 8192 点 FFT,结果是我有 2 个末端。 64 分给了我8*batch*n[0] 分配的元素,而 8192 分给我只有0.1*batch*n[0] 1.000.000 FFT。

    似乎分配的最小缓冲区大小可以低于1*batch*n[0] 元素(如文档中的高级)...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2015-08-02
      • 2021-08-27
      • 2010-11-08
      • 1970-01-01
      • 2014-09-07
      • 2018-09-03
      相关资源
      最近更新 更多