Domanda

qualcuno conosce un'implementazione della FFT inversa in HLSL / GLSL / cg ...?

Mi risparmierebbe molto lavoro.

Best, Heinrich

È stato utile?

Soluzione

DirectX11 viene fornito con un esempio FFT per shader di calcolo (vedere Rilascio SDK di agosto DX11 Note ). Come sottolinea PereAllenWebb, questo può essere utilizzato anche per FFT inversa.

Modifica: se vuoi solo un FFT veloce, puoi provare il CUFFT, che gira sulla GPU. Fa parte dell'SDK CUDA. L'AMCL di AMD ha anche un FFT, che attualmente non è accelerato dalla GPU, ma questo sarà probabilmente aggiunto presto.

Altri suggerimenti

Hai già un'implementazione FFT? Potresti già essere consapevole, ma l'inverso può essere calcolato invertendo l'ordine degli ingressi N, prendendo la FFT su quelli e dividendo il risultato per N.

Ho implementato un FFT 1D su hardware 7800GTX nel 2005. Questo era prima di CUDA ecc. Quindi ho dovuto ricorrere all'uso di Cg e all'implementazione manuale di FFT.

Ho due implementazioni FFT. Uno è una decimazione Radix2 in Time FFT e l'altro un Stockham Autosort FFT. Lo stockham avrebbe prestazioni circa 2-4 volte più veloci di una CPU (al momento single core 3GHz P4) per dimensioni maggiori (> 8192) ma per dimensioni inferiori la CPU era più veloce in quanto non è necessario spostare i dati da / verso GPU.

Se sei interessato al codice shader non esitare a contattarmi e lo invierò via e-mail. Veniva da un progetto personale, quindi non coperto da alcun copyright commerciale. Immagino che le implementazioni di CUDA (e simili) supererebbero enormemente la mia implementazione, tuttavia dal punto di vista dell'apprendimento non si può fare di meglio che scrivere o studiare il codice da soli!

Forse potresti dare un'occhiata a OpenCL, che è uno standard per il calcolo per scopi generici su hardware grafico (e altro).
L'articolo di Wikipedia contiene un esempio OpenCL per un FFT standard:
http://en.wikipedia.org/wiki/OpenCL#Example

Se sei su un Mac con OS X 10.6, devi solo installare gli strumenti di sviluppo per iniziare lo sviluppo di OpenCL. Ho anche sentito che i fornitori di hardware forniscono già il supporto di base per i driver OpenCL su Windows.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top