我在我的程序中使用cuFFT函数。我正在使用特斯拉k20卡。我的信号大小是16384。
当调用cufftExecC2C时,将创建多少个块和线程以及GPU上将消耗多少内存?
答案 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节。