Ten test porównawczy przedstawia wdrożenie opencl™ szybkiej transformacji 1D Fourier (1D FFT) w systemie Intel® FPGAs. Test porównawczy może przetwarzać do 16 milionów złożonych wartości zmiennoprzecinkowych o pojedynczej precyzji i obsługuje dynamicznie zmieniający się rozmiar danych.
Algorytm wykorzystywany do przetwarzania tak dużych zestawów danych ma sześć etapów. Załóżmy na przykład, że chcemy przetworzyć 1 milion punktów:
- Traktujemy 1M punktów jako macierz 1K × 1K, odczytuj je z pamięci zewnętrznej i transponuj w locie.
- Uruchom 1K 1D FFT we wszystkich rzędach (transpozycji macierzy).
- Pomnóż uzyskane wartości przez korektę czynników korekty.
- Transponuj macierz i zapis do bufora przejściowego w pamięci zewnętrznej.
- Uruchom 1K 1D FFT we wszystkich rzędach.
- Transponuj dane wyjściowe macierzy i zapisu do pamięci zewnętrznej.
Cały system składa się z trzech jąder połączonych kanałami. Zestaw trzech jąder jest ustawiany w kolejce dwa razy przez hosta w celu wykonania pełnego obliczenia. Pierwsza kolejka wykonuje kroki 1-4 powyżej, druga kolejka wykonuje kroki 5-6. Jest to w gruncie rzeczy rdzeń 2D FFT z dodatkową transpozycją i wielozadaniową konstrukcją.
Kod ten jest łatwo parametryzowany, aby obsługiwać różne rozmiary FFT, a także różne wymagania dotyczące wydajności.
Wydajność FFT
Wydajność rdzenia zależy od liczby punktów przetwarzanych równolegle, używanego układu danych oraz liczby i prędkości pamięci zewnętrznej. Poniższe pomiary wykonano na płycie BittWare S5-PCIe-HQ D8 z dwoma dyskami DDR3-1600s. Pomiary wykonano na 1 mb pamięci FFT dla 8 punktów jednocześnie oraz 4M FFT, równocześnie 4 punkty.
Punkty przetwarzane równolegle | Układ danych wejściowych/wyjściowych Naturalne |
Układ danych wejściowych/wyjściowych Zoptymalizowane |
---|---|---|
4 | 117 MSPS | 217 MSPS |
8 | 292 MSPS | 457 MSPS |
MSPS to "miliony próbek na sekundę".
Funkcje
- Jądra pojedynczego elementu roboczego
- Kanały jądra
- Zoptymalizowana transpozycja macierzy
Pobrań
Przykład projektu zawiera kod źródłowy urządzenia OpenCL (.cl) oraz aplikacji hosta. W celu kompilacji aplikacji hosta pakiet Linux* zawiera plik Makefile, a pakiet Windows zawiera projekt Microsoft Visual Studio 2010.
Następujące pliki do pobrania są podane dla tego przykładu:
Użytkowanie tego projektu podlega i podlega warunkom umowy licencyjnej na projekt referencyjny sprzętu.
Wymagania dotyczące oprogramowania i sprzętu
Ten przykład projektu wymaga następujących narzędzi:
- oprogramowanie Intel® FPGA wersji 17.1 lub nowszej
- Intel FPGA SDK dla OpenCL w wersji 17.1 lub nowszej
- W systemie Linux: GNU Make i gcc
- W systemie Windows: Microsoft Visual Studio 2010
Aby pobrać narzędzia do projektowania firmy Intel, odwiedź stronę pobierania OpenCL. Jedynie system operacyjny Linux jest obsługiwany przez ten przykład projektu.
OpenCL i logo OpenCL są znakami towarowymi firmy Apple Inc. użytymi za zgodą Khronos.
* Produkt jest oparty na opublikowanej specyfikacji Khronos i przeszedł proces testowania zgodności Khronos. Aktualny status zgodności można znaleźć na stronie www.khronos.org/conformance.