调用 CUDA cufftExecC2C 时创建的块/线程数和占用的内存数
Posted
技术标签:
【中文标题】调用 CUDA cufftExecC2C 时创建的块/线程数和占用的内存数【英文标题】:Number of created blocks/threads and of occupied memory when CUDA cufftExecC2C is invoked 【发布时间】:2013-06-29 17:19:39 【问题描述】:我在我的程序中使用了 cuFFT 函数。我正在使用特斯拉 k20 卡。我的信号大小是 16384。
调用 cufftExecC2C 时会创建多少块和线程,在 GPU 上会消耗多少内存?
【问题讨论】:
标题询问内存,正文询问执行参数。你想知道哪个? 执行参数可以用nvprof自己回答。nvprof --print-gpu-trace <your-executable>
.
@talonmies 我想知道内存和执行参数..
【参考方案1】:
正如@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 节。
【讨论】:
以上是关于调用 CUDA cufftExecC2C 时创建的块/线程数和占用的内存数的主要内容,如果未能解决你的问题,请参考以下文章