我需要使用不可分离的内核实现图像卷积的高效版本(因此CUDA的sdk仅适用于FFT示例,但很明显它只适用于大内核大小)
除了我从头开始实现它之外,我的需求是在先验未知大小的矩阵和内核上运行(它们可以是10x10,因为20.000x20.000,我根本无法预测)
您对FFT示例有何建议? (如果这是你最好的选择,请给我一些好点,开始弄清楚它是如何工作的)
对于第二个选择(由我自己手动实现卷积),最大化内存合并的建议是什么?
答案 0 :(得分:2)
我对gpu的建议:
首先做对了。使用您的算法轻松搞定 想要实施 首先在GPU上的GPU上。你将不得不处理这么多 更低级别的细节,因此知道输出必须是什么非常重要。
快点。如果可以使用FFT方法,则最快 (大多数情况)。
为了实现您的第一个目标,我建议您尝试使用OpenCv实现它。 它有一个非常好的python包装器和provide a framework for filtering
一旦确定了结果以及如何使用OpenCv实现这一目标,请测试是否可以 使用FFT做同样的事情。将整个移植到GPU上会更容易
答案 1 :(得分:1)
你可能想看一下theano中卷积的实现(它们使用非基于FFT的内核)......或者只是使用theano。