大家好!我对double型的cufft二维FFT执行效率做了一个测试,结果如下
二维矩阵大小(R x L) 执行时间
- 32 x 32 0.018ms
- 64 x 64 0.020ms
- 128 x 128 0.029ms
- 256 x 256 0.092ms
- 512 x 512 0.402ms
- 1024 x 1024 1.468ms
好像FFT的时间复杂度是Nlog2N,如果是二维的计算复杂度是不是R*L*log2L+ L*R*log2R(其中R表示行,L表示列,因为二维FFT是先对行做FFT然后再对列做FFT)因为我的R=L所以R*L* log2L+ L*R*log2R = 2L2*log2L用上面相邻两行的计算时间的比值应该是N/4(N+1) (这里的N是行或者列的2的幂指数,如果行为32那么N就是5)
(1)如果相邻两行的时间比值接近N/4(N+1)那么说明GPU是充分利用了,如果大于这个比值说明GPU资源有空闲呢?
(2)从上面的数据显示,可不可以这样理解1,2,3的执行时间很接近说明GPU没有充分利用,从3到4数据量扩大了4倍数执行时间扩大为大约3.2倍,从4到5数据量扩大4倍数时间扩大4.3倍,但是从5到6数据扩大4倍数时间扩大3.6倍,这是为什么?
(3)以上的分析是否合理,如果不合理能否给出更加合理的分析?
|