2

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

除了从头开始实现它之外,我还需要对先验未知大小的矩阵和内核进行操作(它们可以是 10x10 和 20.000x20.000,我根本无法预测)

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

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

4

2 回答 2

2

我对gpu的建议:

  1. 先把它弄对。首先在 CPU 上使用您想在 GPU 上实现的算法。您将不得不处理更多的低级细节,因此知道输出必须是什么很重要。

  2. 快一点。如果可以使用 FFT 方法(大多数情况下),它是最快的方法。

为了达到您的第一个目标,我建议您尝试使用 OpenCv 来实现它。它有一个非常好的 python 包装器,并提供了一个过滤框架

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

于 2011-04-01T08:12:59.723 回答
1

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

于 2011-03-31T17:42:44.540 回答