aula11 - Transformada de Fourier

O objetivo desta última parte do curso é estudarmos as formas possíveis da implementação da Transformada Discreta de Fourier - DFT. A Transforma de Fourier é separável nas dimensões, de modo que o crítico é ter a implementação da Transformada Unidimensional. Para se fazer a 2D ou 3D, basta calcular as DFT das colunas e depois das linhas, e assim sucessivamente. A única diferença diferença das implementações disponíveis de DFT é no fator de escala. As implementações tanto do ia870 como do numpy utilizam a mesma convenção de escala. É importante analisarmos a literatura sobre implementações da DFT na GPU. Um artigo histórico parece ser http://www.cs.unm.edu/~kmorel/documents/fftgpu/fftgpu.pdf

Outra questão importante é como tratar com numeros complexos em CUDA. Uma análise do SDK pode ajudar a responder esta questão e por compatibilidade, será util utilizar a mesma convenção do SDK.

Finalmente, existe a questão da imagem ser normalmente real, resultando na transforma simétrica, onde metade dos dados são redundantes. A pergunta é como fazer isto desta propriedade para otimizar o código, tanto da transforma direta como inversa.

Resumo para próxima aula:

  • Revisão construtiva dos artigos dos colegas
  • Literatura sobre Transf. Fourier em GPU e CUDA
  • Implementação do algoritmo de força bruta da DFT, inspirado nas funções iadft e iaidft da toolbox ia870, baseado em operações matriciais.

Entregas

  • Fernando - implementação usando 1D dft
  • Wetzel - implementação de multiplicação matricial complexa

Artigo: http://mc.stanford.edu/cgi-bin/images/7/75/SC08_FFT_on_GPUs.pdf

Aula 12 - Continuação da Transformada de Fourier

Continuação da implementação da DFT utilizando tanto a abordagem matricial otimizada como a abordagem 1D, apresentadas pelo Wetzel e Fernando, respectivamente.

Entregas

Aula 13 - Continuação da Transformada de Fourier

Mais uma semana para a entrega da implementação da DFT, correções, melhorias, etc.

Entregas