用户
 找回密码
 立即注册
quanzhang100 该用户已被删除
发表于 2013-10-22 13:37:22
2874118
大家好,我的应用是做256x256的二维fft。我有两个问题问一下
(1) 我想问一下cufft的库的执行效率和用户自己写的fft的kernel的效率有多大差别?
(2)我看了最新的开普勒的GK110支持Shuffle instruction,请问一下cuda5.5中的cufft有没有用 Shuffle instruction,如果没有用的话,是不是自己写的kernel会不会有更大的提高呢?
使用道具 举报 回复
发表于 2013-10-22 13:48:42
楼主你好:

(1)我不懂FFT,因此无法为你提供建议。不过如果你是初学者的话,用写好的库一般会比你自己写的要快。你可以进一步咨询ICE版主是否知道cufft的更多信息,他是电磁专家。
(2)是否使用warp shuffle能更快则要看原本的瓶颈在哪里。warp shuffle对于需要在以warp(32个线程)或者小于32个线程为单位的原本需要通过shared memory进行数据交换的代码,能够起到一定的加速作用。如果原本的瓶颈在shared memory读写上,同时是warp或更小范围内的交换,则可以加速,反之则不能。而FFT变换是否瓶颈在shared memory上,这个我不清楚,因为无法给出确切的答案。

感谢来访。
使用道具 举报 回复 支持 反对
发表于 2013-10-22 15:54:04
ICE版主 可以回答一下我的问题吗?
使用道具 举报 回复 支持 反对
发表于 2013-10-22 17:19:06
quanzhang100 发表于 2013-10-22 15:54
ICE版主 可以回答一下我的问题吗?

ICE今日有酒场,目测醉酒中。
使用道具 举报 回复 支持 反对
发表于 2013-10-22 17:45:36
quanzhang100 发表于 2013-10-22 15:54
ICE版主 可以回答一下我的问题吗?

LZ您好:

我没有评估过cufft的效率如何,以及我也不专门研究fft,仅仅一般使用cufft这个库而已。
1:一般而言,库的效率还是不错的,不过不排除专门研究人员写出更好的FFT并行计算方法或者把FFT计算部分集成到自己的算法中,发挥综合优势。当然,自己写写的不如cufft也是有可能的。

2:这个不清楚,我不详细研究FFT的实现,无法回答是否使用Shuffle instruction能有效提升效率。以及,也无法回答CUDA 5.5中的CUFFT是否使用了Shuffle instruction,CUFFT是一个闭源的实现。如果您确实需要搞清楚这个问题,请向驻版的NV原厂支持人员求证。或者如果您使用Shuffle instruction实现了好得多的效率,那么可以联系NV原厂支持,看看能否在下一版将您的实现纳入cufft库,造福广大用户。

祝您好运~
使用道具 举报 回复 支持 反对
发表于 2013-10-22 18:19:10
ice 发表于 2013-10-22 17:45
LZ您好:

我没有评估过cufft的效率如何,以及我也不专门研究fft,仅仅一般使用cufft这个库而已。

好吧,谢谢ice版主
使用道具 举报 回复 支持 反对
发表于 2013-10-23 08:42:54
矩阵大小3052*3052,一次2D FFT变换时间(s)
1)0.009943
2)0.009158
3)0.009312
测试了三次,取均值就行,供参考。
使用道具 举报 回复 支持 反对
发表于 2013-10-23 10:23:08
tengwl 发表于 2013-10-23 08:42
矩阵大小3052*3052,一次2D FFT变换时间(s)
1)0.009943
2)0.009158

(1)你是用cufft还是自己写的fft kernel?
(2)如果是自己写的kernel 可以帮我测试一下256行256列的二维fft是时间?
使用道具 举报 回复 支持 反对
发表于 2013-10-23 12:02:30
tengwl 发表于 2013-10-23 08:42
矩阵大小3052*3052,一次2D FFT变换时间(s)
1)0.009943
2)0.009158

tengwl您好:

感谢您积极参与讨论!

如果您能同时提供您测试的硬件信息和软件信息,您的结果将更有参考价值。

再次感谢~
使用道具 举报 回复 支持 反对
发表于 2013-10-23 12:44:18
本帖最后由 tengwl 于 2013-10-23 12:51 编辑
(1)你是用cufft还是自己写的fft kernel?

我用的cufft。

当时我自己写了一个CPU版本的,但不容易并行,可能与代码实现有关。

更正下:矩阵大小:3072*3072, 显卡:GTX660 Ti,OS:WIN 7 64bit

FFT也是我程序的瓶颈,我还查到另外两个FFT的CUDA实现库:
GPUFFTW和nufft,你可以google下。

据说nufft的性能比cufft快3倍,但那时cuda2.0的版本,到现在已经是CUDA5.5了,谁的性能好就不好说了,还没有测试。

使用道具 举报 回复 支持 反对
12下一页
发新帖
您需要登录后才可以回帖 登录 | 立即注册