230 likes | 392 Views
Implementacja algorytmów filtracji adaptacyjnej o strukturze drabinkowej na platformie CUDA. KATEDRA SYSTEMÓW AUTOMATYKI Dyplomant – Karol Czułkowski Opiekun pracy – dr inż. Michał Meller. Plan prezentacji. Cel i zakres pracy Wymagania Przegląd algorytmów drabinkowej filtracji adaptacyjnej
E N D
Implementacja algorytmów filtracji adaptacyjnej o strukturze drabinkowej na platformie CUDA KATEDRA SYSTEMÓW AUTOMATYKI Dyplomant – Karol Czułkowski Opiekun pracy – dr inż. Michał Meller
Plan prezentacji • Cel i zakres pracy • Wymagania • Przegląd algorytmów drabinkowej filtracji adaptacyjnej • Poszczególne etapy pracy • Rezultaty • Realizacja wymagań • Cechy programów • Sposób użycia programów - film
Cel i zakres pracy Zakres pracy • Implementacja algorytmów filtracji adaptacyjnej o strukturze drabinkowej na komputerze klasy PC i platformie CUDA – skrypty MATLAB, programy CudaC, C++ Cel pracy: • Porównanie wydajności obu platform
Wymagania • Możliwie jak najszybsze przetwarzanie danych z wykorzystaniem platformy CUDA • Filtracja sygnałów zespolonych • Aplikacje nie powinny ingerować w stabilność systemu komputerowego
Przegląd algorytmów drabinkowej filtracji adaptacyjnej GAL – Gradient AdaptiveLattice • Algorytm ściśle sekwencyjny • Dodatkowa, transwersalna struktura odpowiedzialna za obliczenie sygnału wyjściowego
Przegląd algorytmów drabinkowej filtracji adaptacyjnej LSL – LeastSquaresLattice – wersja a priori zesprzężeniem zwrotnym od sygnałów błędów • Algorytm ściśle sekwencyjny
Przegląd algorytmów drabinkowej filtracji adaptacyjnej Estymator Burga
Poszczególne etapy pracy Skrypty programu MATLAB Cel • Sprawdzenie poprawności implementacji algorytmów filtracji adaptacyjnej • Łatwość modyfikacji algorytmów i testowania wyników
Poszczególne etapy pracy LSL – skrypt MATLAB
Poszczególne etapy pracy Estymator Burga – problem stanów przejściowych
Poszczególne etapy pracy • Estymator Burga – nakładanie bloków
Poszczególne etapy pracy LSL – CudaC • Przepływ sterowania programu
Poszczególne etapy pracy Estymator Burga • Możliwość wykorzystania zaawansowanego algorytmu redukcji wektora
Poszczególne etapy pracy C++: LSL, Estymator Burga • Wprowadzenie sekwencyjnych obliczeń do kodu programów filtracji adaptacyjnej. • Testowanie czasów przetwarzania sygnałów pojedynczego bloku danych.
Rezultaty • Schemat programów BES.exe oraz LSL.exe
Rezultaty - LSL LSL.exe: • CUDA(CudaC) oraz x86-64(C++)
Rezultaty – estymator Burga BES.exe: • CUDA(CudaC) oraz x86-64(C++ )
Realizacja wymagań • Szybkość przetwarzania danych – testy „black box”. • Automatyzacja generowania i analizy wyników – nieinwazyjność aplikacji. Skrypty w języku bash, pliki *.bat, spreparowane logi w formacie CSV. • Typy danych wejściowych – możliwość przetwarzania sygnałów zespolonych – film.
Realizacja wymagań • Dokumentacja kodu - doxygen
Cechy programów • Modułowa budowa (DataReader, LSLFilter, BESFilter, DataWriter) • Wspólne API – LSLFilter::processData(), BESFilter::processData() • Podobny schemat działania programów LSL.exe i BES.exe –readDataBlock(), readSignals(), processData(), appendDataBlock() • Programy uruchamianie z wiersza poleceń
Cechy programów • Niskopoziomowy kod • Algorytmy pisane „od zera”. Podczas implementacji nie korzystano z żadnych bibliotek • Wykorzystanie WINAPI
Sposób użycia programów • Aplikacja BES.exe w praktyce - film
Źródła • A. H. Sayed, AdaptiveFilters, John Willey&Sons, New Jersey, 2008 • M. Harris, Optimizingparallelreductionin CUDA, NVIDIA Corporation