/ / 3d Faltung in c ++ - c ++, 3d, cuda, Faltung

3D-Faltung in C ++ - C ++, 3D, Cuda, Faltung

Ich suche nach Quellcode, der die 3D-Faltung implementiert. Idealerweise benötige ich C ++ - oder CUDA-Code. Ich würde es begrüßen, wenn mir jemand eine nette und schnelle Implementierung zeigen kann :-)

Prost

Antworten:

3 für die Antwort № 1

Sie verstehen, dass Faltung normalerweise mit einem FFT gemacht wird? siehe zum Beispiel http://en.wikipedia.org/wiki/Convolution

Du brauchst also eine FFT-Bibliothek.

Schnellste Methode zur Berechnung der Faltung schlägt vor http://www.fftw.org/ (für eine traditionelle CPU).

für cuda verwenden Sie cufft - http://www.gsic.titech.ac.jp/~ccwww/tebiki/tesla_e/tesla6_e.html


0 für die Antwort № 2

Sind Sie ein registrierter Entwickler? In diesem Fall sollten Sie das 3.0 SDK herunterladen und das FDTD3d-Beispiel überprüfen, in dem eine 3D-Faltung für eine explizite endliche App für Unterschiede angezeigt wird. Im 2.3 SDK gab es ein Beispiel mit dem Namen 3dfd, das ähnlich war (und jetzt ersetzt wurde).

Es ist möglicherweise effizienter, diesen Ansatz anstelle von FFT zu verwenden, wenn Ihre Impulsantwort kurz ist.


0 für die Antwort № 3

Intel hat ein sehr gutes Beispiel - SSE + OpenMP und eine serielle Version davon. Der Code ist in erster Linie dazu gedacht, den seriellen und den parallelen Ansatz zu profilieren, wird aber auf nette Art und Weise durchgeführt. http://software.intel.com/en-us/articles/16bit-3d-convolution-sse4openmp-implementation-on-penryn-cpu/