0

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

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

4

1 回答 1

2

正如@harrism 所指出的,您可以使用nvprof来发现执行参数。

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

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

在 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 估计工作区大小”

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

于 2013-07-03T13:23:49.280 回答