我正在寻找一些实现 3d 卷积的源代码。理想情况下,我需要 C++ 代码或 CUDA 代码。如果有人能指出一个好的和快速的实现,我将不胜感激:-)
干杯
我正在寻找一些实现 3d 卷积的源代码。理想情况下,我需要 C++ 代码或 CUDA 代码。如果有人能指出一个好的和快速的实现,我将不胜感激:-)
干杯
你明白卷积通常是通过使用 fft 来完成的吗?例如,参见http://en.wikipedia.org/wiki/Convolution
所以你需要一个 fft 库。
计算卷积的最快方法建议http://www.fftw.org/(对于传统 cpu)。
对于 cuda,使用 cufft - http://www.gsic.titech.ac.jp/~ccwww/tebiki/tesla_e/tesla6_e.html
英特尔有一个很好的例子——使用 SSE + OpenMP 和它的串行版本。该代码主要用于分析串行和并行方法,但以一种很好的方式完成。http://software.intel.com/en-us/articles/16bit-3d-convolution-sse4openmp-implementation-on-penryn-cpu/
您是注册开发者吗?如果是这样,您应该下载 3.0 SDK 并查看 FDTD3d 示例,该示例显示了应用于显式有限差分应用程序的 3d 卷积。在 2.3 SDK 中有一个名为 3dfd 的示例,它与此类似(现在已被替换)。
如果您的脉冲响应很短,使用这种方法可能比 FFT 更有效。