Questo benchmark dimostra un'implementazione OpenCL™ di una trasformazione 1D fast Fourier (1D FFT) su Intel® FPGAs. Il benchmark può elaborare fino a 16 milioni di valori complessi in virgola mobile a precisione singola e supporta la modifica dinamica delle dimensioni dei dati.
L'algoritmo utilizzato per elaborare set di dati di grandi dimensioni ha sei fasi. Ad esempio, supponiamo di voler elaborare 1 milione di punti:
- Trattando i punti 1M come matrice 1K x 1K, leggerlo dalla memoria esterna e trasporlo al volo.
- Eseguire 1K 1D FFT su tutte le righe (di matrice trasposta).
- Moltiplicare i valori risultanti per fattori di regolazione twiddle.
- Trasponi la matrice e scrivi nel buffer temporaneo nella memoria esterna.
- Eseguire 1K 1D FFT su tutte le righe.
- Trasponi la matrice e scrivi l'output nella memoria esterna.
L'intero sistema è costituito da tre kernel collegati dai canali. L'insieme di tre kernel viene accodato due volte dall'host per eseguire il calcolo completo. La prima coda esegue i passaggi da 1 a 4 sopra, la seconda coda esegue i passaggi 5-6. Si tratta essenzialmente di un core FFT 2D con una trasposizione extra e una moltiplicazione twiddle.
Il codice è facilmente parametrizzato per supportare diverse dimensioni FFT e diversi requisiti di prestazioni.
Prestazioni FFT
Le prestazioni del core dipendono dal numero di punti elaborati in parallelo, dal layout dei dati utilizzato e dal numero e dalla velocità della memoria esterna. Le misurazioni seguenti sono state effettuate su BittWare S5-PCIe-HQ D8 con due DDR3-1600. Le misurazioni sono state effettuate su FFT a 1 punto per 8 punti in parallelo e 4 M FFT per 4 punti in parallelo.
Punti elaborati in parallelo | Layout dati di input/output Naturale |
Layout dati di input/output Ottimizzato |
---|---|---|
4 | 117 MSPS | 217 MSPS |
8 | 292 MSPS | 457 MSPS |
MSPS è "milioni di campioni al secondo".
Caratteristiche
- Kernel di elementi di lavoro singoli
- Canali kernel
- Trasposizione della matrice ottimizzata
Download
L'esempio di progettazione fornisce il codice sorgente per il dispositivo OpenCL (.cl) e l'applicazione host. Per la compilazione dell'applicazione host, il pacchetto Linux* include un makefile e il pacchetto di Windows include un progetto Microsoft Visual Studio 2010.
Per questo esempio vengono forniti i seguenti download:
L'utilizzo di questa progettazione è regolato e soggetto ai termini e condizioni del contratto di licenza di progettazione di riferimento hardware.
Requisiti software e hardware
Questo esempio di progettazione richiede i seguenti strumenti:
- software Intel® FPGA v17.1 o versioni successive
- SDK Intel FPGA per OpenCL v17.1 o versioni successive
- Su Linux: GNU Make e gcc
- In Windows: Microsoft Visual Studio 2010
Per scaricare gli strumenti di progettazione Intel, visitare la pagina di download OpenCL. Solo il sistema operativo Linux è supportato da questo esempio di progettazione
OpenCL e il logo OpenCL sono marchi di Apple Inc. utilizzati su autorizzazione da Khronos.
* Il prodotto si basa su una specifica Khronos pubblicata e ha superato il processo di test di conformità Khronos. Lo stato di conformità corrente può essere trovato in www.khronos.org/conformance.