2009-12-22 71 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