2009-12-22 81 views
3

我正在寻找一些实现3d卷积的源代码。理想情况下,我需要C++代码或CUDA代码。我会很感激,如果有人可以点我一个很好的和快速的实施:-)C++中的3d卷积

干杯

回答

3

你明白,卷积通常是通过使用FFT做了什么?例如,请参见http://en.wikipedia.org/wiki/Convolution

因此您需要一个fft库。

Fastest method to compute convolution建议http://www.fftw.org/(对于传统的CPU)。

对CUDA,使用CUFFT - http://www.gsic.titech.ac.jp/~ccwww/tebiki/tesla_e/tesla6_e.html

+2

对于小型内核,在有硬件支持的情况下(例如,用于4x4或8x8内核的GPU),使用矩阵卷积有时会更快。对于大内核来说,傅立叶肯定是个大男人。 – Crashworks 2009-12-23 01:00:20

+0

FWIW,cufft文档的原始文件位于:http://www.nvidia.com/object/cuda_develop.html – 2009-12-23 01:03:05

0

您注册开发者?如果是这样,你应该下载3.0 SDK,并检查FDTD3d示例显示一个三维卷积应用于显式有限差分应用程序。在2.3 SDK中有一个名为3dfd的样本,它相似(现在已被替换)。

如果你的脉冲响应很短,使用这种方法而不是FFT可能更有效。

+0

您可以在http://www.nvidia.com/object/cuda_get.html上注册,点击“现在申请”。或者,您可以查看当前SDK中的3dfd示例,这些概念保持不变。 – Tom 2009-12-24 09:49:29