CUDA卷积 - 不可分离的内核

时间:2011-03-31 17:11:44

标签: c++ matrix cuda fft convolution

我需要使用不可分离的内核实现图像卷积的高效版本(因此CUDA的sdk仅适用于FFT示例,但很明显它只适用于大内核大小)

除了我从头开始实现它之外,我的需求是在先验未知大小的矩阵和内核上运行(它们可以是10x10,因为20.000x20.000,我根本无法预测)

您对FFT示例有何建议? (如果这是你最好的选择,请给我一些好点,开始弄清楚它是如何工作的)

对于第二个选择(由我自己手动实现卷积),最大化内存合并的建议是什么?

2 个答案:

答案 0 :(得分:2)

我对gpu的建议:

  1. 首先做对了。使用您的算法轻松搞定    想要实施    首先在GPU上的GPU上。你将不得不处理这么多    更低级别的细节,因此知道输出必须是什么非常重要。

  2. 快点。如果可以使用FFT方法,则最快   (大多数情况)。

  3. 为了实现您的第一个目标,我建议您尝试使用OpenCv实现它。 它有一个非常好的python包装器和provide a framework for filtering

    一旦确定了结果以及如何使用OpenCv实现这一目标,请测试是否可以 使用FFT做同样的事情。将整个移植到GPU上会更容易

答案 1 :(得分:1)

你可能想看一下theano中卷积的实现(它们使用非基于FFT的内核)......或者只是使用theano。