FFT (1D) de transformação rápida do Fourier OpenCL™ Fast Fourier

Recomendado para:

  • Dispositivo: desconhecido

  • Quartus®: v17.1

Este benchmark demonstra uma implementação do OpenCL™ de uma transformação fourier 1D rápida (FFT 1D) na Intel® FPGAs. O benchmark pode processar até 16 milhões de valores complexos de ponto flutuante de precisão única e suporta a mudança dinâmica do tamanho dos dados.

O algoritmo usado para processar conjuntos de dados tão grandes tem seis estágios. Por exemplo, assuma que queremos processar 1 milhão de pontos:

  • Tratando os pontos de 1M como matriz 1K x 1K, leia-o a partir da memória externa e transpondo-o em tempo real.
  • Execute o FFT 1K 1D em todas as linhas (da matriz transposta).
  • Multiplique os valores resultantes por fatores de ajuste.
  • Transpor a matriz e gravar em buffer temporário na memória externa.
  • Execute a FFT 1K 1D em todas as linhas.
  • Transpor a matriz e a saída de gravação para a memória externa.

Todo o sistema consiste em três kernels conectados por canais. O conjunto de três kernels é solicitado duas vezes pelo host para fazer a computação completa. A primeira enquete executa as etapas 1-4 acima, a segunda enquete executa as etapas 5-6. Este é essencialmente um núcleo FFT 2D com transposição extra e multiplicação de twiddle.

O código é facilmente parametrizado para suportar diferentes tamanhos de FFT, bem como requisitos de desempenho diferentes.

Desempenho FFT

O desempenho do núcleo depende do número de pontos processados em paralelo, do layout dos dados usados e do número e da velocidade da memória externa. As medições abaixo foram feitas no BittWare S5-PCIe-HQ D8 com dois DDR3-1600s. As medições foram feitas em FFT de 1 M de ponto para 8 pontos em paralelo e FFT de 4 M para 4 pontos em paralelo.

MSPS é "milhões de amostras por segundo".

Características

  • Kernels de item de trabalho único
  • Canais do kernel
  • Transposição de matriz otimizada

Downloads

O exemplo de projeto fornece código fonte para o dispositivo OpenCL (.cl), bem como para o aplicativo host. Para compilar o aplicativo host, o pacote Linux* inclui um makefile e o pacote do Windows inclui um projeto do Microsoft Visual Studio 2010.

Os seguintes downloads são fornecidos para este exemplo:

O uso deste design é regido pelos termos e condições do contrato de licença de design de referência de hardware.

Requisitos de software e hardware

Este exemplo de projeto requer as seguintes ferramentas:

  • Intel® FPGA software v17.1 ou mais recente
  • Intel FPGA SDK para OpenCL v17.1 ou mais recente
  • No Linux: GNU Make e gcc
  • No Windows: Microsoft Visual Studio 2010

Para baixar as ferramentas de design da Intel, acesse a página de downloads do OpenCL. Apenas o sistema operacional Linux é suportado por este exemplo de projeto

OpenCL e o logotipo OpenCL são marcas comerciais da Apple Inc. usadas com permissão pela Khronos.

* O produto é baseado em uma especificação Khronos publicada e passou no Processo de teste de conformidade Khronos. O status de conformidade atual pode ser encontrado em www.khronos.org/conformance.

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.