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 Adaptive Lattice Algorytm ściśle sekwencyjny Dodatkowa, transwersalna struktura odpowiedzialna za obliczenie sygnału wyjściowego
Przegląd algorytmów drabinkowej filtracji adaptacyjnej LSL – Least Squares Lattice – wersja a priori ze sprzęż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, Adaptive Filters, John Willey&Sons, New Jersey, 2008 M. Harris, Optimizing parallel reduction in CUDA, NVIDIA Corporation