Pergunta

alguém sabe uma implementação da FFT inversa em HLSL / GLSL / cg ...?

Ele me pouparia muito trabalho.

Best, Heinrich

Foi útil?

Solução

DirectX11 vem com um exemplo FFT para shaders de computação (ver DX11 agosto SDK lançamento notas ). Como aponta PereAllenWebb, isso também pode ser usado para FFT inversa.

Edit: Se você quer apenas um FFT rápido, você poderia tentar o CUFFT, que roda na GPU. É parte do CUDA SDK. O AMCL da AMD também tem uma FFT, que de momento não é GPU acelerada, mas isso será provavelmente adicionados em breve.

Outras dicas

Você já tem uma implementação FFT? Você pode já estar ciente, mas o inverso pode ser calculado invertendo a ordem das entradas N, tendo a FFT sobre aqueles, e dividindo o resultado por N.

Eu implementou um 1D FFT na 7800GTX volta hardware em 2005. Isso foi antes CUDA etc então eu tive que recorrer ao uso de Cg e implementar manualmente a FFT.

Eu tenho duas implementações FFT. Um deles é um Decimation Radix2 in Time FFT eo outro um Stockham AutoSort FFT. O Stockham iria realizar em torno de 2-4x mais rápido que um CPU (no momento 3GHz P4 único núcleo) para tamanhos maiores (> 8192), mas para tamanhos menores do CPU foi mais rápido, uma vez que não tem que mudar de dados de / para o GPU .

Se você estiver interessado na sensação código de shader livre para contactar-me e eu vou enviá-lo através de e-mail. Foi a partir de um projeto pessoal, portanto, não abrangidos por qualquer copyright comercial. Imagino que CUDA (e semelhantes) implementações seria maciçamente superar minha implementação, no entanto a partir de uma perspectiva de aprendizagem que você não pode ficar melhor do que escrever ou estudar o código você mesmo!

Talvez você poderia dar uma olhada em OpenCL, que é um padrão para uso geral de computação em gráficos (e outras) de hardware.
O artigo da Wikipedia contém um exemplo de OpenCL para uma FFT padrão:
http://en.wikipedia.org/wiki/OpenCL#Example

Se você estiver em um Mac com OS X 10.6, você só precisa instalar as ferramentas de desenvolvedor para começar com o desenvolvimento OpenCL. Eu também ouvi que o hardware já vendedores fornecer suporte básico motorista OpenCL no Windows.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top