Question

Est-ce que quelqu'un connaît une implémentation de la FFT inverse en HLSL / GLSL / cg ...?

Cela me ferait économiser beaucoup de travail.

Mieux, heinrich

Était-ce utile?

La solution

DirectX11 est fourni avec un exemple FFT pour les calques de calcul (voir DX11 Août - Version SDK Notes ). Comme le souligne PereAllenWebb, cela peut également être utilisé pour la FFT inverse.

Éditer: Si vous voulez juste une FFT rapide, vous pouvez essayer CUFFT, qui tourne sur le GPU. Cela fait partie du SDK CUDA. La carte AMCL d’AMD dispose également d’une FFT, qui n’est pas actuellement accélérée par le processeur graphique, mais qui sera probablement ajoutée prochainement.

Autres conseils

Avez-vous déjà une implémentation FFT? Vous le savez peut-être déjà, mais l'inverse peut être calculé en inversant l'ordre des N entrées, en prenant la FFT par-dessus, et en divisant le résultat par N.

.

J’ai mis en place une FFT 1D sur du matériel 7800GTX en 2005. C’était avant CUDA, etc., j’ai donc dû recourir à Cg et à la mise en œuvre manuelle de la FFT.

J'ai deux implémentations FFT. L'une est une décimation Radix2 dans le temps FFT et l'autre une Stockham Autosort FFT. Le stockham fonctionnerait environ 2 à 4 fois plus rapidement qu'un processeur (au moment où on utilisait un cœur simple 3GHz P4) pour les grandes tailles (> 8192), mais pour les plus petites tailles, le processeur était plus rapide, car il n'était pas nécessaire de transférer les données de GPU.

Si le code de shader vous intéresse, n'hésitez pas à me contacter et je vous l'enverrai par courrier électronique. C'était un projet personnel, donc non couvert par aucun droit d'auteur commercial. J'imagine que les implémentations CUDA (et similaires) sur-performeraient considérablement mon implémentation, mais d'un point de vue pédagogique, vous ne pouvez pas faire mieux que d'écrire ou d'étudier le code vous-même!

Peut-être pourriez-vous jeter un coup d’œil à OpenCL, qui est une norme pour l’informatique à usage général sur du matériel graphique (et autre).
L'article de Wikipédia contient un exemple OpenCL pour une FFT standard:
http://fr.wikipedia.org/wiki/OpenCL#Example

Si vous utilisez un Mac avec OS X 10.6, il vous suffit d’installer les outils de développement pour bien démarrer avec le développement OpenCL. J'ai également entendu dire que les constructeurs de matériel fournissent déjà un support de base pour les pilotes OpenCL sous Windows.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top