Cuda 加速二维相关
看起来我的应用程序开始(i)FFT有界了,它对平均大小约为500x200(宽度和高度总是相等)的矩形进行了大量2D关联。场景和往常一样-进行两次FFT(每个字段一次),乘以复数字段,然后进行一次iFFT 因此,根据profiler的数据,在CPU(Intel Q6600,带有JTTransforms library)上,在GPU(GTX670,cuFFT library)上,FFT转换占用了大约70%的时间-大约50%(因此,CUDA上的性能有所提高,但不是我想要的)。我意识到,GPU可能没有完全饱和(带宽有限),但从其他情况来看,成批计算将显著增加应用程序的复杂性 问题:Cuda 加速二维相关,cuda,fft,correlation,cufft,Cuda,Fft,Correlation,Cufft,看起来我的应用程序开始(i)FFT有界了,它对平均大小约为500x200(宽度和高度总是相等)的矩形进行了大量2D关联。场景和往常一样-进行两次FFT(每个字段一次),乘以复数字段,然后进行一次iFFT 因此,根据profiler的数据,在CPU(Intel Q6600,带有JTTransforms library)上,在GPU(GTX670,cuFFT library)上,FFT转换占用了大约70%的时间-大约50%(因此,CUDA上的性能有所提高,但不是我想要的)。我意识到,GPU可能没有完
我在回答你的第一个问题:我能做些什么来进一步减少cuFFT花费的时间? 引用《CUFFT图书馆用户指南》
2^a*3^b*5^c*7^d
。CUFFT库具有高度优化的转换内核,其维度具有这些基本因子3^n
的变换通常比大小为2^i*3^j
的变换更快
如果后者稍小x
维度的两个因子分解项的幂限制为256
的倍数,对于双精度变换,将其幂限制为64
。这进一步有助于记忆融合x
维度严格限制为2
和8192
之间的二次幂,或者对于早期架构,限制为2
和2048
之间的二次幂。这些转换被实现为专门的手工编码内核,将所有中间结果保存在共享内存中我在回答你的第一个问题:我能做些什么来进一步减少cuFFT花费的时间? 引用《CUFFT图书馆用户指南》
2^a*3^b*5^c*7^d
。CUFFT库具有高度优化的转换内核,其维度具有这些基本因子3^n
的变换通常比大小为2^i*3^j
的变换更快
如果后者稍小x
维度的两个因子分解项的幂限制为256
的倍数,对于双精度变换,将其幂限制为64
。这进一步有助于记忆融合x
维度严格限制为2
和8192
之间的二次幂,或者对于早期架构,限制为2
和2048
之间的二次幂。这些转换被实现为专门的手工编码内核,将所有中间结果保存在共享内存中