3d свертка в с ++ - PullRequest
       26

3d свертка в с ++

3 голосов
/ 22 декабря 2009

Я ищу некоторый исходный код, реализующий 3d-свертку. В идеале мне нужен код C ++ или код CUDA. Буду признателен, если кто-нибудь подскажет мне хорошую и быструю реализацию: -)

Приветствия

Ответы [ 3 ]

3 голосов
/ 23 декабря 2009

вы понимаете, что свертка обычно делается с использованием fft? см., например, http://en.wikipedia.org/wiki/Convolution

так что вам нужна библиотека fft.

Самый быстрый метод для вычисления свертки предлагает http://www.fftw.org/ (для традиционного процессора).

для cuda, используйте cufft - http://www.gsic.titech.ac.jp/~ccwww/tebiki/tesla_e/tesla6_e.html

0 голосов
/ 14 апреля 2010

У Intel есть очень хороший пример - использование SSE + OpenMP и его серийная версия. Код в первую очередь предназначен для профилирования последовательного и параллельного подхода, но сделан хорошим способом. http://software.intel.com/en-us/articles/16bit-3d-convolution-sse4openmp-implementation-on-penryn-cpu/

0 голосов
/ 23 декабря 2009

Вы зарегистрированный разработчик? Если это так, вы должны загрузить 3.0 SDK и проверить образец FDTD3d, который показывает трехмерную свертку применительно к явному приложению конечных разностей. В 2.3 SDK был образец, названный 3dfd, который был похож (и теперь был заменен).

Возможно, будет эффективнее использовать этот подход, а не БПФ, если ваш импульсный отклик короткий.

...