调用CUDA cufftExecC2C时创建的块/线程数和占用的内存数

时间:2013-07-02 11:05:03

标签: cuda nvidia

我在我的程序中使用cuFFT函数。我正在使用特斯拉k20卡。我的信号大小是16384。

当调用cufftExecC2C时,将创建多少个块和线程以及GPU上将消耗多少内存?

1 个答案:

答案 0 :(得分:2)

如@harrism所示,您可以使用nvprof来发现执行参数。

nvprof --print-gpu-trace <your-executable>

对于内存,您也可以使用观察方法,例如在应用程序运行时使用nvidia-smi查询GPU内存使用情况,或使用cudaMemGetInfo之类的CUDA API调用在FFT运行时查询内存。

在CUDA 5.5中,引入了一组新的CUFFT API调用来帮助估计内存需求。相关的API调用是:

cufftEstimate1d(…)
cufftEstimate2d(…)
cufftEstimate3d(…)
cufftEstimateMany(…)

这些调用将返回建议的转换类型和大小的估计内存使用大小。

请参阅CUDA 5.5 RC文档(例如,对于linux cuda 5.5 RC安装):

  

/usr/local/cuda/doc/pdf/CUFFT_Library.pdf

特别是第3.4节“CUFFT估计的工作区域大小”

如果您制定了计划,则可以使用以下与估算调用类似的CUDA 5.5 CUFFT API cufftGetSize...调用来更准确地估算大小。有关详细信息,请参阅上述文档的第3.5节。