我们对 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] 元素”保持一致,还是有人对这些特定案例有更多详细信息?