Praca dyplomowa magisterska Implementacja algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA Dyplomant: Jakub Kołakowski Opiekun pracy: dr inż. Michał Meller
Plan prezentacji 1. Cel pracy i zadania do wykonania. 2. Zastosowanie filtracji adaptacyjnej. 3. Co to jest filtracja adaptacyjna? podstawy teoretyczne. 4. Opis wybranych algorytmów. 5. Platforma CUDA. 6. Kierunek prac.
Cel pracy i zadania do wykonania Implementacja wybranych algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA i na komputerze klasy PC. Porównanie wydajności obu platform.
Zastosowania filtracji adaptacyjnej Telekomunikacja Automatyka Nawigacja Inżynieria biomedyczna Sejsmologia Problemy: oddzielenie sygnału użytecznego od zakłóceń, przekształcenie sygnałów użytecznych, predykcja wartości sygnałów, estymacja, identyfikacja.
Podział filtracji adaptacyjnej ze względu na pełnione funkcje Identyfikacja u Filtr adaptacyjny y e d Obiekt
Podział filtracji adaptacyjnej ze względu na pełnione funkcje Modelowanie odwrotne Obiekt u Filtr adaptacyjny y e d Opóźnienie
Podział filtracji adaptacyjnej ze względu na pełnione funkcje Predykcja Opóźnienie u Filtr adaptacyjny y e d
Podział filtracji adaptacyjnej ze względu na pełnione funkcje Usuwanie interferencji d u Filtr adaptacyjny y e
Konkretne zastosowania Korekcja sygnału telekomunikacyjnego Usuwanie interferencji tłumienie echa, separacja zakłóceń sieciowych od sygnału EKG, usuwanie zakłóceń w obecności sygnału mowy, Adaptacyjne tłumienie szumu Usuwanie przecieku pomiędzy anteną nadawczą a odbiorczą w radarach szumowych
Prosty przykład usuwanie interferencji sieciowych Sygnał z zakłóceniami d Sygnał odniesienia u Filtr adaptacyjny y e Sygnał przefiltrowany
Prosty przykład usuwanie interferencji sieciowych s y g n a l o d n i e s i e n i a u 0. 1 0. 0 5 0-0. 0 5-0. 1 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1 2 s y g n a l d ( o r y g i n a l n y + i n t e r f e r e n c j e ) 1 0-1 - 2 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1 1 s y g n a l o r y g i n a l n y 0. 5 0-0. 5-1 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1 c z a s [ s ]
Prosty przykład usuwanie interferencji sieciowych 0. 6 s y g n a l y ( w y j ś c i e f i l t r u ) 0. 4 0. 2 0-0. 2-0. 4-0. 6-0. 8 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1 1. 5 s y g n a l e ( p r z e f i l t r o w a n y ) 1 0. 5 0-0. 5-1 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1 c z a s [ s ]
Prosty przykład usuwanie interferencji sieciowych 1. 5 S y g n a l o r y g i n a l n y i s y g n a l p r z e f i l t r o w a n y 1 0. 5 0-0. 5-1 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1 c z a s [ s ]
Co to jest filtracja adaptacyjna? podstawy teoretyczne d(n) e(n) u(n) H n (z) y(n) Filtr nierekursywny typu FIR: H n z = h 0 n h 1 n z 1 h 2 n z 2 M 1... h M 1 n z M 1 y n = h k n u n k k=0 J = E [e 2 n ]
Struktury filtrów - transwersalna
Struktury filtrów - drabinkowa
Filtr Wienera Umożliwia znalezienie optymalnych wartości wag h 1 opt,..., h M opt, które odpowiadają punktowi minimum powierzchni błędu średniokwadratowego Wykorzystanie teorii w praktyce wymaga znajomości macierzy autokorelacji R sygnału wejściowego oraz wektora p korelacji wzajemnej sygnału wejściowego i odniesienia. Najczęściej R i p nie są znane, więc znalezienie optymalnych wartości realizowane jest metodami adaptacyjnymi.
Algorytmy gradientu stochastycznego LMS (Least Mean Square) Równanie korekcji wag: Stały spółczynnik skalujący: Prosty za względu na złożoność obliczeniową Liczba koniecznych operacji arytmetycznych proporcjonalna do rzędu filtra Czułość na rozrzut wartośći własnych macierzy R, stosunek wartości minimalnej do maksymalnej określa szybkość zbieżności algorytmu NLMS (Unormowany LMS) h n 1 = h n e n u n 0 2 max Uzależnienie parametru skalującego od czasu n = u T n u n
Algorytmy najmniejszych kwadratów RLS Szybkość zbieżności nie zależy od rozrzutu wartości własnych macierzy autokorelacji R Złożoność obliczeniowa proporcjonalna do kwadratu rzędu filtra Duża czułość na błędy numeryczne związane ze skończoną długością słowa maszynowego
Postać blokowa Uaktualnianie parametrów na zasadzie blok po bloku Obniżenie kosztu obliczeniowego Poprawienie czasu zbieżności algorytmu Opóźnienie w ścieżce sygnału
CUDA (Compute Unified Device Architecture) Uniwersalna architektura, opracowana przez firmę Nvidia, umożliwiająca wykorzystanie mocy obliczeniowej kart graficznych do wykonywania równoległych obliczeń.
CUDA - cechy Język programowania CUDA C Środowisko programowania, w którego skład wchodzą kompilator nvcc oraz debugger cudagdb Wsparcie dla systemów Windows, Linux, Mac OS X Pełny dostęp do pamięci GPU Wsparcie dla większości nowych kart graficznych Nvidia Aktualna wersja sterowników: 3.2
Nvidia GeForce GT 330M Możliwości obliczeniowe: 1.2 Całkowita wielkość pamięci: 1GB Liczba multiprocesorów: 6 Liczba rdzeni: 48 Wielkość pamięci stałej: 64kB Wielkość pamięci współdzielonej w bloku: 16kB Liczba rejestrów dostępnych w bloku: 16384 Maksymalna liczba wątków na blok: 512 Maksymalna liczba bloków: 65535 2 Częstotliwość zegara: 1,26 GHz
Zastosowania technologii CUDA Kryptografia Kompresja oraz konwersja wideo Symulacje fizyczne (np. dynamika płynów) Obrazowanie w medycynie (tomografia komputerowa, rezonans magnetyczny) Gry komputerowe Obliczenia inżynierskie Rozpoznawanie mowy Filtracja adaptacyjna
Kierunek prac Co zrobiłem? Implementacja algorytmów LMS i NLMS w Matlabie Programowanie z wykorzystaniem architektury CUDA Co robię? Implementacja algorytmu LMS w wersji blokowej w Matlabie Co zrobię?... Przeniesienie kodu - Matlab C CUDA C
Dziękuję za uwagę