Politechnika Gdańska WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI. Praca dyplomowa



Podobne dokumenty
Praca dyplomowa magisterska

Implementacja algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA.

Adaptacyjne Przetwarzanie Sygnałów. Filtracja adaptacyjna w dziedzinie częstotliwości

Przedmowa Wykaz oznaczeń Wykaz skrótów 1. Sygnały i ich parametry Pojęcia podstawowe Klasyfikacja sygnałów

Optymalizacja ciągła

[d(i) y(i)] 2. Do wyprowadzenia algorytmu RLS posłuży kryterium autokorelacyjne: J n = e 2 (i) i=1. λ n i [d(i) y(i)] 2 λ (0, 1]

Adam Korzeniewski - p. 732 dr inż. Grzegorz Szwoch - p. 732 dr inż.

Transformata Laplace a to przekształcenie całkowe funkcji f(t) opisane następującym wzorem:

Technika audio część 2

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Aproksymacja funkcji a regresja symboliczna

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

5. Rozwiązywanie układów równań liniowych

Podstawy Sztucznej Inteligencji (PSZT)

Teoria przetwarzania A/C i C/A.

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Architektura komputerów

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Ćwiczenie 4. Filtry o skończonej odpowiedzi impulsowej (SOI)

9. Dyskretna transformata Fouriera algorytm FFT

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Transformacja Fouriera i biblioteka CUFFT 3.0

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Transformata Fouriera

Macierze. Rozdział Działania na macierzach

Wykład z Technologii Informacyjnych. Piotr Mika

Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I

Analiza obrazów - sprawozdanie nr 2

Optymalizacja systemów

IMPLEMENTATION OF THE SPECTRUM ANALYZER ON MICROCONTROLLER WITH ARM7 CORE IMPLEMENTACJA ANALIZATORA WIDMA NA MIKROKONTROLERZE Z RDZENIEM ARM7

Podstawy Informatyki Systemy sterowane przepływem argumentów

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) kierunkowy (podstawowy / kierunkowy / inny HES)

TEORETYCZNE PODSTAWY INFORMATYKI

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

b n y k n T s Filtr cyfrowy opisuje się również za pomocą splotu dyskretnego przedstawionego poniżej:

Opis efektów kształcenia dla modułu zajęć

Przetwarzanie i transmisja danych multimedialnych. Wykład 7 Transformaty i kodowanie. Przemysław Sękalski.

Analiza szeregów czasowych: 2. Splot. Widmo mocy.

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

ADAPTACYJNE PRZETWARZANIE SYGNAŁÓW LABORATORIUM. Ćwiczenie 2. Badanie algorytmów adaptacyjnych LMS i RLS

Analiza szeregów czasowych: 2. Splot. Widmo mocy.

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

WYKŁAD 9 METODY ZMIENNEJ METRYKI

Programowanie współbieżne Wykład 2. Iwona Kochańska

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

2. Próbkowanie Sygnały okresowe (16). Trygonometryczny szereg Fouriera (17). Częstotliwość Nyquista (20).

Podstawy Automatyki. wykład 1 ( ) mgr inż. Łukasz Dworzak. Politechnika Wrocławska. Instytut Technologii Maszyn i Automatyzacji (I-24)

Algorytmy sztucznej inteligencji

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Sterowanie napędów maszyn i robotów

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

CYFROWE PRZETWARZANIE SYGNAŁÓW

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Egzamin / zaliczenie na ocenę*

Uczenie sieci typu MLP

CYFROWE PRZTWARZANIE SYGNAŁÓW (Zastosowanie transformacji Fouriera)

Numeryczna algebra liniowa

Algorytm. a programowanie -

ZADANIA OPTYMALIZCJI BEZ OGRANICZEŃ

Filtr Kalmana. Struktury i Algorytmy Sterowania Wykład 1-2. prof. dr hab. inż. Mieczysław A. Brdyś mgr inż. Tomasz Zubowicz

1 Wprowadzenie do algorytmiki

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Kompresja dźwięku w standardzie MPEG-1

Metody Prognozowania

Systemy. Krzysztof Patan

Sposoby opisu i modelowania zakłóceń kanałowych

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Podstawy OpenCL część 2

Programowanie procesorów graficznych GPGPU

Analiza efektywności przetwarzania współbieżnego

Zastowowanie transformacji Fouriera w cyfrowym przetwarzaniu sygnałów

Zygmunt Wróbel i Robert Koprowski. Praktyka przetwarzania obrazów w programie Matlab

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Cyfrowe przetwarzanie sygnałów Jacek Rezmer -1-

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

INSTRUKCJA DO ĆWICZENIA NR 7

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 8. Filtracja uśredniająca i statystyczna.

Teoretyczne podstawy informatyki

Kwantyzacja wektorowa. Kodowanie różnicowe.

Komputerowa Analiza Danych Doświadczalnych

Dyskretne układy liniowe. Funkcja splotu. Równania różnicowe. Transform

Układy stochastyczne

koniec punkt zatrzymania przepływów sterowania na diagramie czynności

WPROWADZENIE Mikrosterownik mikrokontrolery

Obliczenia Naukowe. O arytmetyce komputerów, Czyli jak nie dać się zaskoczyć. Bartek Wilczyński 29.

Układy równań liniowych. Krzysztof Patan

Szybka transformacja Fouriera

Automatyka i Regulacja Automatyczna Laboratorium Zagadnienia Seria II

Cyfrowe Przetwarzanie Obrazów i Sygnałów

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

KARTA PRZEDMIOTU. Techniki przetwarzania sygnałów, D1_3

Stabilność. Krzysztof Patan

Transkrypt:

Politechnika Gdańska WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI Katedra: Systemów Automatyki Imię i nazwisko dyplomanta: Jakub Kołakowski Nr albumu: 108772 Forma i poziom studiów: jednolite magisterskie Kierunek studiów: Automatyka i Robotyka Praca dyplomowa Temat pracy: Implementacja algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA. Opiekun pracy: dr inż. Michał Meller Zakres pracy: Implementacja algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA i platformie CPU oraz porównanie wydajności obu platform. Gdańsk, 2011

OŚWIADCZENIE Oświadczam, że niniejszą pracę dyplomową wykonałem samodzielnie. Wszystkie informacje umieszczone w pracy uzyskane ze źródeł pisanych oraz informacje ustne pochodzące od innych osób zostały udokumentowane w wykazie literatury odpowiednimi odnośnikami.... podpis dyplomanta

Spis treści Spis treści i Wstęp 1 1 Wprowadzenie 3 1.1 Filtracjaadaptacyjna... 3 1.2 Zastosowaniafiltrówadaptacyjnych... 4 1.3 Strukturyfiltrów... 7 1.4 Celepracy... 10 2 Podstawy teoretyczne filtracji adaptacyjnej 11 2.1 Filtracjaoptymalna-filtrWienera... 11 2.2 OgraniczeniapraktycznefiltruWienera... 13 2.3 Metodygradientowe... 13 2.3.1 Algorytmynajszybszegospadku... 14 2.3.2 AlgorytmyNewtona-Raphsona... 16 2.3.3 AlgorytmyQuasi-Newtona... 17 2.4 Adaptacyjnealgorytmygradientustochastycznego... 17 2.4.1 AlgorytmLMS... 18 2.4.2 AlgorytmNLMS... 20 2.4.3 AlgorytmNLMSznormalizacjąmocy... 20 2.4.4 AlgorytmLeaky-LMS... 20 2.5 Blokowefiltryadaptacyjne... 21 2.5.1 Strukturablokowa... 22 2.5.2 Decymacjaiinterpolacja... 25 2.5.3 Filtradaptacyjny... 26 i

ii SPIS TREŚCI 2.5.4 Normalizacjamocy... 27 2.6 Złożonośćobliczeniowaalgorytmów... 27 3 Opis platformy CUDA 31 3.1 Wprowadzenie... 31 3.2 Skalowalnośćmodelu... 31 3.3 Modelprogramowania... 32 3.3.1 FunkcjeGPU... 32 3.3.2 WątkiCUDA... 33 3.3.3 Programowanieheterogeniczne... 34 3.3.4 Hierarchiapamięci... 34 3.4 Możliwościobliczeniowe... 35 3.5 BibliotekaCUFFT... 35 3.6 StrumienieCUDA... 37 3.6.1 Pamięćpage-locked... 38 3.6.2 Transferasynchronicznyinakładanieoperacji... 38 4 Implementacja algorytmów 41 4.1 Platformatestowa... 41 4.1.1 LaptopDellVostro3700... 41 4.1.2 Szczegółowedanekartygraficznej... 41 4.2 Etapyimplementacji... 42 4.2.1 MATLAB... 42 4.2.2 C/C++... 43 4.2.3 CUDAC... 43 4.3 WydajnośćplatformGPUiCPU... 54 4.3.1 PlatformaCPU... 55 4.3.2 PlatformaGPU... 57 4.3.3 PorównaniewydajnościplatformCPUiGPU... 57 5 Podsumowanie i wnioski 63 Bibliografia 65 A Spis zawartości nośnika CD 67 Spis rysunków 69

Wstęp Adaptacja to nie kaprys, to konieczność. Natura pokazuje, że to organizmy potrafiące zaadaptować się do zmiennych warunków, mają większą szansę przeżycia. Układy adaptacyjnesączęstowlepszejsytuacjiniżte,któreniesąwstaniesięniczegonauczyć, dlatego też znajdują szerokie zastosowanie w różnych dziedzinach techniki, takich jak telekomunikacja, automatyka, nawigacja, inżynieria biomedyczna, czy sejsmologia. Współcześnie dąży się do jak najlepszego oddania rzeczywistości, rzeczywistości która jest zmienna i do której trzeba się przystosować, rzeczywistości która jest skomplikowana, a jej szczegółowy opis wymaga ogromnych ilości danych. Szybkie przetworzenie tych danych umożliwiają najnowsze komputery, posiadające centralne jednostki obliczeniowe (CPU) o coraz większej mocy. Często jednak ta moc jest niewystarczająca. Z pomocą przychodzą wydajne, graficzne jednostki obliczeniowe(gpu). Część z nich wykorzystuje opracowaną przez firmę Nvidia i wciąż rozwijaną architekturę CUDA, która sprzyja programowaniu równoległemu, tak istotnemu w przypadku obróbki dużych ilości danych. Karty graficzne z platformą CUDA zdolne są do przeprowadzania obliczeń numerycznych, poprzez użycie programistycznego języka C/C++. Z dobrymi rezultatami wykorzystuje się je w symulacjach komputerowych i różnego rodzaju praktycznych zastosowaniach, między innymi kryptografii, kompresji wideo, czy obrazowaniu w medycynie. W niniejszej pracy podjęta zostaje próba wykorzystania technologii CUDA do filtracji adaptacyjnej. Celem pracy jest implementacja algorytmów adaptacyjnych o strukturze transwersalnej na platformie CUDA i platformie CPU oraz porównanie wydajności i skuteczności obu platform w zastosowaniu do procesu filtracji adaptacyjnej. W pracy postarano się także stwierdzić, czy zasadne jest użycie kart graficznych do obliczeń związanych z filtracją adaptacyjną. W rozdziale pierwszym przybliżono pojęcie filtracji adaptacyjnej wraz z jej zastosowaniami. Uszczegółowiono także cele niniejszej pracy. W drugiej części przedstawiono podstawy teoretyczne opisujące zagadnienie filtracji adaptacyjnej z użyciem algorytmów 1

2 WSTĘP transwersalnych, począwszy od optymalnej filtracji Wienera, aż do blokowych filtrów adaptacyjnych. W trzecim rozdziale zawarto opis platformy CUDA, ograniczono się tu do omówienia podstawowych właściwości architektury oraz niektórych cech, wykorzystanych w dalszych implementacjach algorytmów filtracji adaptacyjnej. W ostatniej części pracy przedstawiono kolejne etapy programowania algorytmów, skupiając się na opisaniu implementacji na platformie CUDA oraz zaprezentowano uzyskane rezultaty, porównujące wydajność platform CPU i GPU.

Rozdział 1 Wprowadzenie 1.1 Filtracjaadaptacyjna Schemat blokowy filtra adaptacyjnego przedstawiono na Rysunku 1.1. Jest to układ o dwóch wejściach i dwóch wyjściach. Sygnałami wejściowymi są: sygnał filtrowany u(n) oraz sygnał odniesienia d(n). Sygnały wyjściowe to wynik filtracji y(n) oraz sygnał błędu e(n). Filtr o zmiennej w czasie funkcji przenoszenia ma za zadanie tak przekształcić wejściowy sygnał u(n), aby w wyniku filtracji sygnał wyjściowy y(n) jak najmniej różnił się od sygnału wzorcowego d(n), dla pewnego założonego kryterium błędu. Sygnał błędu e(n) = d(n) y(n) służy do wyznaczenia korekcji współczynników filtra. Najczęściej stosowanym kryterium błędu jest minimalizacja błędu średniokwadratowego. Dla stacjonarnych wejść otrzymywane rozwiązanie nazywane jest filtrem Wienera, który jest optymalny w sensie średniokwadratowym. W przypadku niestacjonarnych sygnałów lub otoczeń o nieznanych charakterystykach sygnałów, stosuje się filtry adaptacyjne oparte o rekursywne algorytmy, pozwalające na skuteczne działanie w sytuacjach nieodpowiednich dla filtra Wienera. Filtry adaptacyjne dzieli się na liniowe i nieliniowe. Filtr jest liniowy jeśli jego wyjście jest wyznaczane jako liniowa kombinacja dostępnych obserwacji na wejściu filtra. W innym przypadku filtr nazywany jest nieliniowym. Opracowano wiele algorytmów, współpracujących z filtrami adaptacyjnymi, a dobór odpowiedniego zależy od kilku czynników, charakteryzujących algorytm, takich jak(wedługpracy[3]): Zbieżność. Opisywana jako liczba iteracji, jakiej potrzebuje algorytm, aby dla stacjonarnych wejść zbliżyć się do rozwiązania optymalnego filtra Wienera. 3

4 ROZDZIAŁ 1. WPROWADZENIE FILTR ADAPTACYJNY d(n) + - e(n) u(n) H (z) y(n) Rysunek 1.1: Schemat blokowy filtra adaptacyjnego. Niedopasowanie. Wielkość określająca jak bardzo wartość błędu średniokwadratowego różni się od tej określonej przez filtr Wienera Śledzenie. Zdolność filtra adaptacyjnego do śledzenia statystyk sygnałów w niestacjonarnym środowisku. Odporność algorytmu na niewielkie zakłócenia, pochodzące od czynników wewnętrznych i zewnętrznych. Wymagania obliczeniowe. Czynnik zależny od liczby operacji arytmetycznych, niezbędnych do wykonania jednej iteracji algorytmu, a także ilości pamięci komputera potrzebnej do przechowywania danych. Struktura. Określa sposób przepływu informacji przez algorytm i wpływa na sposób implementacji filtra. Właściwości numeryczne, określające w głównej mierze odporność algorytmu na błędy kwantyzacji, wynikające ze skończonej długości słowa w cyfrowych implementacjach filtra. 1.2 Zastosowania filtrów adaptacyjnych Zdolność filtrów adaptacyjnych do zadowalającego działania w nieznanym środowisku oraz do śledzenia statystycznych cech sygnałów czyni je potężnymi narzędziami w cyfrowym przetwarzaniu sygnałów. Układy zdolne do przystosowania się, mają zdecydowaną przewagę nad tymi, które tego nie potrafią. Na Rysunku 1.2 wyróżniono cztery podstawowe zastosowania filtracji adaptacyjnej. Są one następujące:

1.2. ZASTOSOWANIA FILTRÓW ADAPTACYJNYCH 5 - + (a) Identyfikacja 3*4,&5 6 +7)86*!" / #$"% &'&("&)*+,* 0 - + 9 -. 3*4,&5 6*+7)86* (12,, (b) Modelowanie odwrotne NCOE?P QCDRB;SQC T NCOE?P QMDRB;SQC JAKLE;ME;M H :;<=> F?@?A=?BCDEC - + V G I NCOE?P QCDRB;SQC U (c) Predykcja g`hb\i l]bxmnxmbx\ g`hb\i jmak_xlj` + e WXYZ[ c f g`hb\i o \]\^Z\_`ab` - j`ak_xlj` d (d) Usuwanie zakłóceń Rysunek 1.2: Cztery podstawowe zastosowania filtracji adaptacyjnej.

6 ROZDZIAŁ 1. WPROWADZENIE Identyfikacja (Rysunek 1.2a) Filtr adaptacyjny jest używany, w celu zapewnienia, zbliżonego do optymalnego, liniowego modelu nieznanego obiektu. Obiekt i filtr adaptacyjny są pobudzane tym samym sygnałem wejściowym u. Wyjściem obiektu jest sygnał odniesienia d(zwany także wzorcowym), a różnica tego sygnału z wyjściem y filtra daje w rezultacie błąd estymacji e, wykorzystywany do adaptacyjnej korekcji wag filtra. Jeśli obiekt jest dynamiczny, to jego model będzie zmienny w czasie. Modelowanie odwrotne (Rysunek 1.2b) Zadaniem filtra adaptacyjnego w tej konfiguracji jest wyznaczenie modelu odwrotnego, będącego dopasowanym(w pewnym sensie) do nieznanego obiektu. Model ma transmitancję zbliżoną do odwrotności transmitancji obiektu. Jeśli obiektem jest kanał transmisyjny, deformujący przesyłany przez nadajnik sygnał, to filtr adaptacyjny, o odwrotnej funkcji przenoszenia, przeprowadza korekcję otrzymanego sygnału. Niweluje tym samym skutki działania medium transmisyjnego. Jednak, aby wykonać taką operację, niezbędna jest wiedza odbiornika o sygnale przesyłanym przez kanał, którego właściwości mogą zmieniać się w czasie. Nadajnik wysyła więc okresowo tak zwanego pilota, czyli odpowiedni sygnał znany odbiornikowi. Predykcja (Rysunek 1.2c) Filtr adaptacyjny pełni funkcję predyktora, czyli zapewnia, zbliżoną do optymalnej, predykcję aktualnej wartości sygnału wejściowego. Aktualne próbki tego sygnału są sygnałem wzorcowym d filtra adaptacyjnego. Natomiast przeszłe wartości sygnału d podawane są na wejście filtra. W zależności od zastosowania, wyjściem konfiguracji z Rysunku 1.2c może być sygnał wyjściowy y filtra lub sygnał błędu estymacji (predykcji) e. Usuwanie zakłóceń (Rysunek 1.2d) W ostatniej klasie zastosowań, filtr adaptacyjny wykorzystuje się do usuwania nieznanych interferencji zawartych w sygnale odniesienia d, który przenosi także informację. Zadaniem filtra jest takie przekształcenie sygnału wejściowego u, aby w jak najlepszym stopniu skorelować go z interferencjami w sygnale wzorcowym. Wyjściem jest w tym przypadku sygnał błędu e, czyli sygnał odniesienia pozbawiony niepożądanych zakłóceń.

1.3. STRUKTURY FILTRÓW 7 wxyz p qr wxy{ z p qr wxy{z wxy{}~z p qr wxy{}~ z st sr sv suqv suqr xyz Rysunek 1.3: Filtr transwersalny. 1.3 Strukturyfiltrów Dobór struktury filtra ma znaczący wpływ na działanie algorytmu adaptacyjnego. Budowa struktury determinuje rodzaj filtra, przy czym wyróżnia się dwa podstawowe rodzaje filtrów: o skończonej odpowiedzi impulsowej(fir, ang. finite-duration impulse response) o nieskończonej odpowiedzi impulsowej(iir, ang. infinite-duration impulse response) Nierekursywny filtr typu FIR rzędu M 1 przedstawiono na Rysunku 1.3. Transmitancja tego filtra jest dana równaniem: W(z)=w 0 +w 1 z 1 +w 2 z 2 +...+w M 1 z M+1 (1.1) natomiast sygnał wyjściowy przyjmuje postać: y(n)= M 1 k=0 w k u(n k) (1.2) gdziew k tok-tywspółczynnikfiltra(k =0,1,...,M 1),u(n)topróbkasygnału wejściowego w chwili n, y(n) to próbka sygnału wyjściowego w chwili n. Strukturę filtra z Rysunku 1.3, opisanego równaniami(1.1) i(1.2) nazywa się strukturą transwersalną. Jest to struktura opierająca się o linię opóźniającą. Liczba elementów opóźniających(identyfikowanychprzezoperatoropóźnieniajednostkowegoz 1 ),użytych w filtrze, wyznacza długość odpowiedzi impulsowej. Określa ona także rząd filtra. Filtry o skończonej odpowiedzi impulsowej, w odróżnieniu od filtrów IIR, nie zawierają ścieżek sprzężeń zwrotnych. Ich obecność w strukturze niesie ze sobą problem

8 ROZDZIAŁ 1. WPROWADZENIE ƒ Ž ˆ Š ˆ Š ŽŠ Š ˆ Š ˆ Š ŽŒ Œ Ž Š Š ˆ Š ˆ Š Ž Rysunek 1.4: Struktura filtra IIR. zapewnienia stabilności. Z tego powodu algorytmy filtracji adaptacyjnej typu IIR są bardziej złożone, a co za tym idzie, rzadziej wykorzystywane w praktyce. Filtry o nieskończonej odpowiedzi impulsowej mają również pewne zalety w porównaniu z filtrami FIR. Główną z nich jest możliwość oddzielenia sygnału użytecznego od zakłóceń za pomocą filtra o mniejszym rzędzie niż rząd filtra o skończonej odpowiedzi impulsowej. Przykładową strukturę filtra IIR przedstawiono na Rysunku 1.4. Równanie różnicowe tego filtra ma formę: M M y(n)= h j u(n j)+ g j u(n k) (1.3) j=0 k=1

1.3. STRUKTURY FILTRÓW 9 ª «ª ª «ž š ž š ž š ž š ž š œ œ œ š œ œ œ š š š š š š Ÿ Ÿ Ÿ Ÿ Ÿ š Rysunek 1.5: Filtr drabinkowy. Natomiast jego transmitancja jest określona wzorem: W(z)= H(z) 1 G(z) (1.4) gdzie: M H(z)= h j z j (1.5) j=0 M G(z)= g k z k (1.6) k=1 Zależność(1.3) można zapisać w postaci: y(n)=w T x(n) (1.7) gdzie: w=[h 0,h 1,...,h M,g 1,g 2,...,g M ] T (1.8) x(n)=[u(n),u(n 1),...,u(n M),y(n 1),y(n 2),...,y(n M)] T (1.9) Na osobną uwagę zasługuje tak zwana struktura drabinkowa(zwana także kratową), a dokładniej filtr predykcyjny o strukturze drabinkowej. Składa się on z modułów, a ich liczbę nazywa się rzędem predykcji. Na Rysunku 1.5 pokazano filtr predykcyjny rzędu

10 ROZDZIAŁ 1. WPROWADZENIE M 1.StopieńmfiltrazRysunku1.5jestopisanyparąwzorów(przyzałożeniu,żedane wejściowe są zespolone i stacjonarne w szerokim sensie): f m (n)=f m 1 (n)+κ m b m 1(n 1) (1.10) b m (n)=b m 1 (n 1)+κ m f m 1 (n) (1.11) gdzie: f m (n) błądpredykcjiwprzód(ang.forwardpredictionerror), b m (n) błądpredykcjiwstecz(ang.backwardpredictionerror), κ m współczynnikodbicia(ang.reflectioncoefficient). dlam=1,2,...,m 1. Warunki początkowe są następujące: f 0 (n)=u(n) (1.12) b 0 (n)=u(n) (1.13) Jakpodanowpracy[3,str.6]dlaskorelowanejsekwencjipróbeku(n),u(n 1),..., u(n M+1)pochodzącychzestacjonarnegoprocesu,błędypredykcjiwsteczb 0,b 1 (n),..., b M 1 (n)tworząsekwencjęnieskorelowanychzmiennychlosowych.dodatkowoliniowa kombinacjabłędówpredykcjiwsteczb 0,b 1 (n),...,b M 1 (n)możebyćwykorzystanado wyznaczenia estymaty pewnego sygnału odniesienia d(n)(dolna część Rysunku 1.5). Różnica między estymatą a sygnałem d(n) daje w rezultacie błąd estymacji e(n). 1.4 Celepracy Celem pracy jest implementacja wybranych algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA i platformie CPU oraz porównanie wydajności obu platform. Wybranymi algorytmami są algorytmy z rodziny LMS. Powinny być one zaimplementowane w sposób efektywny obliczeniowo, dlatego głównym obiektem zainteresowania jest blokowy algorytm LMS opisany w rozdziale 2.5, pozwalający w najlepszym stopniu wykorzystać możliwości obliczeniowe architektury CUDA. Występujące w nim równoległe ścieżki sygnałów sprzyjają implementacji na tej platformie.

Rozdział 2 Podstawy teoretyczne filtracji adaptacyjnej 2.1 Filtracja optymalna- filtr Wienera Model obiektu, przedstawionego na rysunku 2.1, opisany jest równaniem różnicowym: d(n)= M 1 i=0 wi o u(n i) (2.1) gdzie: u(n) sygnał wejściowy, d(n) sygnał wyjściowy, w o i współczynnikifiltra,i=0,...,m 1.  ³ ¹º¹»³¹¼½¾ ½ ±²³ µ à - + Ä À Á Rysunek 2.1: Filtr w konfiguracji identyfikacji obiektu. 11

12 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Wzór(2.1) można zapisać w formie d(n)=(w o ) T u(n) (2.2) gdzie: u(n)=[u(n),...,u(n M+1)] T (2.3) Estymatorem FIR powyższego systemu jest: w o = [ w o 0,...,w o M 1] T (2.4) y(n)=w T u(n) (2.5) gdziew=[w 0,...,w M 1 ] T sąestymatamiparametrówrzeczywistegosystemu.celem jest takie wyznaczenie w aby błąd średniokwadratowy pomiędzy zmierzonym sygnałem d(n)(sygnałem odniesienia) a sygnałem wyjściowym modelu y(n) był minimalny. Kryterium błędu dane jest wzorem: J=E [ ] ( ) 2 ] e 2 (n) =E[ d(n) y(n) (2.6) gdzie E[.] oznacza wartość oczekiwaną. Podstawienie wzoru(2.5) do(2.6) daje w rezultacie: Dalsze przekształcenia: ( )] J(w)=E[ d(n) w T 2 u(n) ( )] 2 J(w) = E[ d(n) w T u(n) = (2.7) [ ] [ ] ( )] 2 = E d 2 (n) 2E d(n)w T u(n) +E[ w T u(n) = [ ] [ ] [ ] = E d 2 (n) 2w T Ed(n)u(n) +E w T u(n)u T (n)w = [ ] = E d 2 (n) 2w T p (n) [ ] du +wt E u(n)u T (n) w= [ ] = E d 2 (n) 2w T p du +w T R uu w (2.8) i wyznaczenie minimum funkcji poprzez obliczenie pochodnej wyrażenia(2.8) względem w T orazprzyrównaniejejdozera: J(w) w T = 2p du +2R uu w=0 (2.9) prowadzi do wyrażenia na optymalne wartości wag w filtra, który nosi nazwę filtra Wienera: w o =[R uu ] 1 p du (2.10)

2.2. OGRANICZENIA PRAKTYCZNE FILTRU WIENERA 13 gdzie: R uu macierzautokorelacjisygnałuu(n), p du wektorkorelacjiwzajemnejsygnałuwejściowegoiodniesienia. przy czym dla filtra Wienera minimalny błąd średniokwadratowy estymacji określony jest wzorem: J(w o )=J min =E [ ] d 2 (n) p T du R 1 uu p du (2.11) 2.2 Ograniczenia praktyczne filtru Wienera TeoriafiltruWieneraumożliwiaznalezienieoptymalnychwartościwagw0 o,...,wo M 1, które minimalizują średniokwadratowy błąd estymacji. Praktyczne wykorzystanie tej teoriiirównania(2.10)dlakażdejchwiliczasunpociągazasobąkłopotzpoprawną estymacją wartości oczekiwanych, co jest typowym problemem stochastycznej optymalizacji. Wynika to z faktu, że w większości przypadków funkcje rozkładu gęstości prawdopodobieństwa obserwowanych zmiennych losowych nie są znane lub też zmienne te są niestacjonarne. Aby przezwyciężyć ten problem przystosowuje się znane iteracyjne metody optymalizacji określone dla wieloargumentowych funkcji kosztu. Zadaniem tych metod(mechanizmów) jest rekurencyjne rozwiązanie równania(2.10). Mechanizmy te zapewniają właściwe przestrajanie w czasie współczynników filtra, według zależności: w k (n+1)=w k (n)+ w k (n), k=0,1,...,m 1 (2.12) Wartości wag są więc adaptacyjnie korygowane, tak aby w stanie ustalonym(po okresie adaptacji) były zbliżone, w pewnym sensie, do wartości optymalnych. Przykładowy filtr adaptacyjny o strukturze transwersalnej, którego wagi korygowane są za pomocą pewnego mechanizmu adaptacji, przedstawiono na Rysunku 2.2. Wybrane metody(algorytmy) adaptacyjne zostaną szczegółowo opisane w podrozdziałach 2.3-2.5. 2.3 Metodygradientowe Najczęściej stosowanymi algorytmami, które optymalizują deterministyczną funkcję kosztu (celu) są adaptacyjne algorytmy gradientowe. Rekursywny estymator ma postać:

14 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ áéêë Å ÆÇ áéêâãë Å ÆÇ áéêâäåæë Å ÆÇ áéêâäåãë ÈÌÉÊË ÈÇÉÊË ÈÍÆÎÉÊË ÈÍÆÇÉÊË èéêë çéêë ê ê ê ê - + ÏÐÑÒÓÔÕÖ ØÙÚÐØÑÛÕ ÜÓÝ ÞÕßàÚÓ ééêë Rysunek 2.2: Transwersalny filtr adaptacyjny. w(n+1)=w(n)+µv(n) (2.13) gdzie: w(n+1) wektorwspółczynnikówfiltrawchwilin+1, w(n) wektor współczynników filtra w chwili n, µ współczynnik skalujący, v(n) kierunek modyfikacji. We wzorze(2.13) pokazano uaktualnianie parametrów filtra w kierunku v(n). Wraz ze współczynnikiem skalującym µ powinien on zostać tak dobrany, aby zapewnić zbieżność parametróww(n)dowartościoptymalnychw o określonychprzezfiltrwienera(rozdział 2.1). Najczęstszym wyborem v(n) jest kierunek przeciwny do określonego przez gradient z funkcji celu J(.). Na rysunku 2.3 przedstawiono przykładową powierzchnię błęduśredniokwadratowegofunkcjij=e[e 2 (n)]=e[(d(n) y(n)) 2 ]dlafiltraodwóch rzeczywistychwspółczynnikachw 0 iw 1.Minimumtejpowierzchniwyznaczaoptymalny wektorwagfiltrawieneraw o =[w0 o,wo 1 ]T,spełniającyrównanie(2.10). 2.3.1 Algorytmy najszybszego spadku W algorytmach najszybszego spadku uaktualnianie parametrów filtra przeprowadzane jest z wykorzystaniem gradientu funkcji kosztu w następujący sposób: w(n+1)=w(n) 1 2 µ J( w(n) ) (2.14)

2.3. METODY GRADIENTOWE 15 gdzieµtowspółczynnikskalujący,natomiast J ( w(n) ) towektorgradientufunkcji kosztu równy: J ( w(n) ) = 2p du +2R uu w(n) (2.15) WzastosowaniachalgorytmunajszybszegospadkuzakładasięmacierzautokorelacjiR uu iwektorkorelacjiwzajemnejp du sąznane,czylimożnawyznaczyćwektorgradientu J ( w(n) ).Wektorwagw(n)jestwięckorygowanyzgodniezformułą: w(n+1)=w(n)+µ[p du R uu w(n)] (2.16) Porównując powyższą zależność z równaniem(2.10) na optymalne wagi filtra Wienera, można zauważyć, że algorytm najszybszego spadku pomaga uniknąć kosztownego obliczeniowo odwracania macierzy R. W ogólności współczynnik µ we wzorze(2.16) jest zmienny w czasie. Dodatkowo wprowadza się dodatnio określoną macierz wagową W(n) poprawiającą zbieżność(szybkość adaptacji) algorytmu. Otrzymuje się zatem: w(n+1)=w(n) 1 2 µ(n)w(n) J( w(n) ) (2.17) J(w 0,w 1 ) w 0 0 0 w 1 Rysunek 2.3: Przykładowa powierzchnia błędu średniokwadratowego.

16 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Warunek zbieżności Aby zapewnić zbieżność algorytmu najszybszego spadku do wartości optymalnych, oprócz właściwego doboru kierunku korekcji wag filtra, również parametr µ musi spełniać następujący warunek: 1 µλ k <1 (2.18) gdzieλ k,k=1,2,...,m,towartościwłasnemacierzyautokorelacjir uu.warunek(2.18) jest równoważny poniższemu ograniczeniu wartości parametru µ: 0<µ< 2 λ max (2.19) gdzieλ max oznaczanajwiększąwartośćwłasnąmacierzyautokorelacjisygnałuwejściowego u(n). Dodatkowo jak napisano w pracy[10, str. 386], szybkość zbieżności adaptacji współczynników filtra do wartości optymalnych jest zależna od rozrzutu wartości własnychmacierzyr uu.zmniejszenietegorozrzutuskutkujepoprawieniemzbieżności. to: Jeśli parametr µ jest dobrany według ograniczeń(2.19), czyli algorytm jest zbieżny, lim n J(w(n))=J(wo )=J min (2.20) a zatem, błąd średniokwadratowy dla nieskończonej liczby iteracji, dąży do wartości minimalnej, wyznaczonej przez filtr Wienera. 2.3.2 AlgorytmyNewtona-Raphsona W algorytmach Newtona-Raphsona za macierz wagową W(n) przyjmuje się odwrotność hesjanufunkcjiceluj ( w(n) ) wn-tejchwiliczasowej: W(n)= [ 2 J ( w(n) )] 1 (2.21) przy czym dla funkcji kosztu opisanej równaniem(2.8) hesjan funkcji celu równy jest macierzy autokorelacji sygnału wejściowego u: [ 2 J ( w(n) )] 1 =R 1 uu (2.22) Zatem równanie rekursji: w(n+1)=w(n) 1 2 µ(n) [ 2 J ( w(n) )] 1 J ( w(n) ) (2.23) redukuje się do: w(n+1)=w(n) 1 2 µ(n)r 1 uu[p du R uu w(n)] (2.24)

2.4. ADAPTACYJNE ALGORYTMY GRADIENTU STOCHASTYCZNEGO 17 2.3.3 AlgorytmyQuasi-Newtona W przypadkach gdy wyznaczenie wartości hesjanu jest trudne, wykorzystywana jest jego aproksymacja A(n): w(n+1)=w(n) 1 2 µ(n)[a(n)] 1 J ( w(n) ) (2.25) Jaknapisanowpracy[2],jednązmożliwościaproksymacjimacierzyautokorelacjiR uu (hesjanu funkcji kosztu), jest aproksymacja Toeplitza T(n), estymowana w następujący sposób: [ ] A(n)=T(n)= t i j (n) i=0,1,...,m 1, j=0,1,...,m 1 t i (n)=λt i (n 1)+u(n)u(n i), i=0,1,...,m 1 (2.26) dlaparametruλzzakresu0<λ<1.wtakimprzypadkuoptymalnyparametrµznajduje się według wzoru: µ(n)= 1 u T (n)t 1 (n)u(n) (2.27) 2.4 Adaptacyjne algorytmy gradientu stochastycznego Z powodu braku statystycznych informacji, czyli niedostępności w praktyce wartości macierzyautokorelacjiriwektorakorelacjiwzajemnejp,gradientfunkcjicelu J ( w(n) ) nie może być dokładnie wyznaczony. Metoda najszybszego spadku jest więc często niemożliwa do zrealizowania. Algorytmy gradientu stochastycznego radzą sobie z tym problemem zastępując wektor gradientu jego aproksymacją. Niech minimalizowana funkcja kosztu wynosi: J=e 2 (n) (2.28) Filtr adaptacyjny ma zatem za zadanie minimalizować chwilową a nie oczekiwaną wartość błędu. Jak napisano w pracy[7] jest to równoznaczne z zastąpieniem w równaniu(2.16) elementów macierzy autokorelacji R oraz składowych wektora korelacji wzajemnej p ich obserwacjami, zgodnie z symbolicznym zapisem: R uu =E[u(n)u T (n)] u(n)u T (n) (2.29) p du =E[d(n)u(n)] d(n)u(n) (2.30)

18 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Zatem: [ ] ŵ(n+1) = ŵ(n)+µ d(n)u(n) u(n)u T (n)ŵ(n) [ ] = ŵ(n)+µ d(n) ŵ T (n)u(n) u(n)= [ ] = ŵ(n)+µ d(n) y(n) u(n)= = ŵ(n) + µe(n)u(n) (2.31) = gdzie e(n) = d(n) y(n) jest sygnałem błędu w chwili n. Uwzględniając więc uogólnienia z równania(2.17), zależność(2.31) przyjmuje postać wzoru(2.32) charakteryzującą szeroką grupę filtrów z rodziny gradientu stochastycznego: ŵ(n + 1) = ŵ(n) µ(n)w(n)e(n)u(n) (2.32) gdzie: W(n) macierzwagowaowymiarachmxm, µ(n) współczynnik skalujący zależny od czasu, e(n) sygnałbłęduwchwilin. 2.4.1 AlgorytmLMS Filtr LMS(ang. Least-Mean-Square) otrzymywany jest po uniezależnieniu współczynnika skalującego od czasu(µ(n) = µ) oraz po wprowadzeniu identycznościowej macierzy wagowej W(n) = I. Wzór(2.32) przyjmuje postać: ŵ(n+1)=ŵ(n) µe(n)u(n) (2.33) Warunek zbieżności Algorytm LMS jest zbieżny w sensie średnim wtedy i tylko wtedy gdy parametr µ spełnia warunek: 0<µ< 2 λ max (2.34) gdzieλ max jestnajwiększąwartościąwłasnąmacierzyautokorelacji.wpraktycewtypowychzastosowaniachalgorytmulmswartośćλ max niejestznana,więcwykorzystuje się jej estymatę w postaci śladu macierzy, otrzymując: 0<µ< 2 tr(r) co w wyniku dalszych uproszczeń i przekształceń daje zależność: (2.35) 0<µ< M 1 k=0 2 (2.36) [ E u(n k) 2]

2.4. ADAPTACYJNE ALGORYTMY GRADIENTU STOCHASTYCZNEGO 19 Stabilność algorytmu LMS w sensie średniokwadratowym jest zapewniona, gdy dodatni parametr µ spełnia warunek: M k=1 µλ k 2 µλ k <1 (2.37) Powyższe ograniczenie jest silniejsze niż warunek zbieżności średniej przedstawiony we wzorze(2.34), tym samym parametr µ spełniający zależność(2.37) oprócz stabilności w sensie średniokwadratowym gwarantuje również zbieżność średnią. Niedopasowanie Wykorzystanie iloczynu e(n)u(n k) jako estymaty k-tego elementu wektora gradientu J(n), czyli pominięcie operatora wartości oczekiwanej w zależnościach(2.29) i(2.30), skutkuje występowaniem w algorytmie LMS tak zwanego szumu gradientowego(ang. gradient noise). W wyniku tego estymata wektora wag ŵ(n) zbliża się jedynie do optymalnychwartościw o,abłądśredniokwadratowywstanieustalonymosiągawartośćj, którajestwiększaodwartościminimalnejj min,otrzymywanejwalgorytmienajszybszego spadku(por. równanie(2.20)) i określonej przez filtr Wienera(por. równanie(2.11)). Zatem: Dodatkowo poniższa różnica: lim J(ŵ(n))=J >J(w o )=J min (2.38) n J ex (n)=j(ŵ(n)) J min (2.39) określa tak zwaną nadwyżkę błędu średniokwadratowego(ang. excess mean-sqared error). Wartość tej nadwyżki w stanie ustalonym jest mniejsza od minimalnego błędu średniokwadratowegoj min,gdyparametrµspełniawarunek: M k=1 2λ k 2 µλ k <1 (2.40) gdzieλ k,k=1,2,...,m,towartościwłasnemacierzyr.jeślialgorytmlmsjestzbieżny w sensie średniokwadratowym, czyli spełniona jest zależność(2.34), w stanie ustalonym nadwyżka błędu przyjmuje wartość: J ex ( )=J J min =J min M k=1 µλ k 2 µλ k (2.41) NiedopasowaniemnazywanyjeststosuneknadwyżkibłęduwstanieustalonymJ ex ( ) dowartościminimalnejtegobłęduj min : M= J ex( ) J min = J J min J min (2.42)

20 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Niedopasowanie M wskazuje jak daleko jest ustalone rozwiązanie algorytmu LMS od optymalnego rozwiązania Wienera. Wartość niedopasowania, która jest mniejsza od jedności, jeśli parametr µ spełnia warunek(2.40), określa wzór: 2.4.2 AlgorytmNLMS M= M k=1 µλ k 2 µλ k (2.43) Unormowany algorytm LMS(NLMS, ang. Normalized Least-Mean-Square) otrzymywany jest w wyniku uzależnienia w równaniu(2.33) parametru µ od czasu w następujący sposób: µ µ(n)= γ+u T (n)u(n) = µ M 1 γ+ u 2 (n k) k=0 (2.44) gdziestałaadaptacjiµspełniazależność:0<µ<2itymsamymzapewniazbieżność algorytmu NLMS w sensie średniokwadratowym. W mianowniku wyrażenia(2.44) wprowadza się niewielki parametr γ > 0, zapobiegający występowaniu problemów numerycznych, w przypadku gdy próbka sygnału wejściowego u(n) jest mała i występuje dzielenie przez niewielką wartość. Zmiany wprowadzone w algorytmie NLMS, w porównaniu do podstawowej wersji algorytmu gradientu stochastycznego(lms), powodują poprawę zbieżności zarówno dla nieskorelowanych jak i skorelowanych danych wejściowych. 2.4.3 Algorytm NLMS z normalizacją mocy Równanie korekcji wag filtra adaptacyjnego w algorytmie NLMS z normalizacją mocy przyjmuje formę: przy czym: ŵ(n+1)=ŵ(n) µ e(n)u(n) (2.45) γ+p(n) p(n)=βp(n 1)+(1 β) u(n) 2, p( 1)=0 (2.46) gdzieβjestdodatniąwartościązzakresu0<β 1,decydującąopamięcipowyższej rekursji, a zmienna p(n) jest interpretowana jako estymata mocy sygnału wejściowego u(n). 2.4.4 AlgorytmLeaky-LMS Funkcja kosztu algorytmu Leaky-LMS zdefiniowana jest następującym równaniem: J(ŵ(n))=e 2 (n)+αŵ T (n)ŵ(n) (2.47)

2.5. BLOKOWE FILTRY ADAPTACYJNE 21 gdzieα>0,towspółczynnikprzecieku(ang.leakagefactor).jakpodajesayedwpracy[9] w algorytmie LMS może występować potencjalny problem niestabilności, gdy macierz korelacji R sygnału wejściowego jest jednostkowa lub bliska macierzy jednostkowej. Jeśli takiprzypadekmamiejsce,toestymatywagŵ 0,...,ŵ M 1,mogądryfowaćirosnąć w sposób nieograniczony. Algorytm Leaky-LMS ogranicza ten wzrost, wprowadzając współczynnik(1 µα) w równaniu uaktualniania współczynników filtra adaptacyjnego. W rezultacie otrzymuje się: ŵ(n+1)=(1 µα)ŵ(n) µe(n)u(n) (2.48) Jeśli α = 0, to algorytm Leaky-LMS przyjmuje postać standardowego algorytmu LMS opisanego w podrozdziale 2.4.1. 2.5 Blokowe filtry adaptacyjne Jeśli w dziedzinie czasu użyje się algorytmu LMS wymagającego dużej ilości pamięci, można zaobserwować znaczący wzrost w złożoności obliczeniowej. Jak podaje Haykin wpracy[3,str.446],istniejądwasposobynaradzeniesobieztymproblemem: 1. Wybór algorytmu o nieskończonej odpowiedzi impulsowej(iir), co wymaga także zapewnienia jego stabilności. 2. Filtracja adaptacyjna w dziedzinie częstotliwości łącząca dwie uzupełniające się metody stosowane w cyfrowym przetwarzaniu sygnałów: blokowa implementacja filtra FIR, pozwalająca na skuteczne wykorzystanie równoległego przetwarzania, co skutkuje przyspieszeniem wykonywanych obliczeń algorytmy szybkiej transformaty Fouriera(FFT, ang. Fast Fourier Transform), usprawniające wykonywanie splotów, co pozwala w efektywny sposób przeprowadzać adaptację parametrów filtra w dziedzinie częstotliwości Powyższe podejście nazywane jest blokowym algorytmem LMS(BLMS) i umożliwia zastosowanie filtrów o skończonej odpowiedzi impulsowej, o wielu współczynnikach, w sposób efektywny obliczeniowo. Filtry blokowe obniżają koszt obliczeniowy, jednocześnie poprawiając szybkość zbieżności algorytmu. Wynika to z faktu, iż dane przetwarzane są na zasadzie blok po bloku, zamiast próbka po próbce. Jednakże obniżenie liczby obliczeń i polepszenie zbieżności niesie ze sobą wady. W implementacjach blokowych pojawia się problem opóźnienia

22 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ òô ó øõ ó øõ ëì ëì ííî ñò ô õò ô ðñòóô ðõòóô ñò ô õò ô ïííî ù ì ù ì ù ì ó øõ ú ó øõ ú ò ìô ó øõ ëì ö øõò ô ðö øõòóô ö øõò ô üýþÿ ûì Rysunek 2.4: Przykładowa implementacja filtra o strukturze blokowej. ûì #$%&' #$%&()' #$%&(*' #$%&(+,-./' #$%&(+,-.)'!! " " " " 0$%&' Rysunek2.5:FiltrtranswersalnyW k (z).elementzespołufiltrówzrysunku2.4. w ścieżce sygnału. Jest to rezultatem konieczności zebrania bloków danych przed ich dalszym przetwarzaniem. 2.5.1 Strukturablokowa W filtrze blokowym, którego przykładowa implementacja została przedstawiona na Rysunku 2.4, sygnał wejściowy u(i) jest dzielony na bloki o długości B, przy pomocy przetwornika szeregowo-równoległego S/P(ang. serial-to-parallel converter). Sposób przetwarzania S/P zostanie opisany w kolejnym podrozdziale. Pojedynczy blok danych wejściowych(dane wyjściowe przetwornika) ma postać: u(nb+b 1) u B (n)=. (2.49) u(nb+1) u(nb)

2.5. BLOKOWE FILTRY ADAPTACYJNE 23 Przetwornik S/P generuje dwa bloki o długości B. Na jego wyjściu otrzymywany jest zatem wektor: u 2B (n)= u B (n) (2.50) u B (n 1) Należy zauważyć, że: u 2B (n+1)= u B(n+1) u B (n) (2.51) czyli jeden blok danych wykorzystywany jest w dwóch kolejnych iteracjach. Operacja tanazywanajestprocedurąoverlap-saveioznacza,żekolejneblokiwejścioweu 2B (n) nakładają się na siebie(overlap) i tylko połowa każdego bloku jest zapisywana(save). Wewzorach(2.50)i(2.51)wspólnymblokiemjestwektoru B (n). Po zebraniu kolejnego bloku danych wykonywana jest szybka transformata Fouriera, którejwynikiemjestwektordanychpodawanychnawejściazespołupodfiltróww k (z), k=0,1,...,2b 1,przyczymkażdyznichposiadastrukturętranswersalnąopisaną w rozdziale 1.3 i pokazaną na Rysunku 2.5. Otrzymuje się zatem: u 2B (n)= u 0 (n) u 1 (n). u 2B 1 (n) =FFT u B (n) u B (n 1) (2.52) gdzie FFT[] oznacza szybką transformatę Fouriera. OdpowiadającypodfiltrowiW k (z)zrysunku2.5,wektorregresjimapostać: u k(n)= [u k(n) u k(n 1)... u k(n M ] B +1) (2.53) natomiastjegowektorwagw k (n)jestdanywformie: w k = w k,0 w k,1. (2.54) w k,m/b 1 M/B 1 Wprzypadku,gdydługośćBblokudanychjestrównadługościMfiltra,każdyzpodfiltrówW k (z),k=0,1,...,2b 1,posiadatylkojedenwspółczynnikw k,0.

24 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Wektoryregresjiu k (n)dlak=0,1,...,2b 1,opisanezależnością(2.53)można zapisać w postaci diagonalnej macierzy U(n): U(n)= u 0 (n) u 1 (n)... u 2B 1 (n) 2B 2M (2.55) natomiastodpowiadającewspółczynnikipodfiltróww k dlak=0,1,...,2b 1,wformie wektora w, skupiającego wszystkie wagi filtra blokowego: w= w 0 w 1. w 2B 1 2M 1 Wektory 2B (n)nawyjściuzespołufiltrówjestrówny: (2.56) y 2B (n)= y 0 (n) y 1 (n). y 2B 1 (n) = U(n)w (2.57) Stąd, stosując metodę overlap-save do liniowego splotu otrzymuje się wektor sygnału wyjściowegoy B (n)danywzorem: y B (n)=[i B 0 B B ]IFFT[U(n)w] (2.58) gdzieifft[]oznaczaodwrotnąszybkątransformatęfouriera.dziękimacierzy[i B 0 B B ] odrzuconych zostaje ostatnich B wyników odwrotnej transformacji. Wektor wyjściowy y B (n)maformę: y(nb+b 1) y B (n)=. (2.59) y(nb+1) y(nb) i na jego podstawie, przy pomocy przetwornika równoległo-szeregowego P/S(ang. parallelto-serial converter), buduje się sygnał wyjściowy y(i).

2.5. BLOKOWE FILTRY ADAPTACYJNE 25 2.5.2 Decymacja i interpolacja Jednym ze sposobów zaimplementowania przetwarzania S/P i P/S jest wykorzystanie decymatorów i interpolatorów, jak to zostało pokazane w strukturze z Rysunku 2.4. Niech B oznacza decymator rzędu B, przedstawiony na Rysunku 2.6, w którym z(n) zdefiniowane jest w następujący sposób: z(n)=u(nb), n=0,1,2,... (2.60) 3456 7486 12 Rysunek 2.6: Decymator rzędu B. Sekwencja wyjściowa z(n) decymatora jest więc uzyskiwana, poprzez zachowywanie jednej próbki na B próbek wejściowych. Wyjściem decymatora jest zatem sygnał wejściowy u(i) o zmniejszonej częstotliwości próbkowania. Indeks n używany jest dla sygnału o niższej częstotliwości próbkowania, podczas gdy indeks i dla sygnałów o wyższej częstotliwości próbkowania. Wykorzystując zestaw decymatorów, jako przetwornik S/P, możliwe jest uformowanie(po każdych B próbkach), na podstawie sygnału u(i), wektora opisanego równaniem(2.50). Wsposóbpodobnydokonstruowaniablokuu B (n)przypomocydecymatorów,można odzyskaćsygnałwyjściowyy(i)zwektoray B (n),używającdotegoceluinterpolatory. Niech B oznacza interpolator rzędu B, przedstawiony na Rysunku 2.7, w którym y(i) opisuje zależność: z( i B y(i)= ) gdyi/bjestcałkowite 0 w pozostałych przypadkach (2.61) 9:;< =:><? @ Rysunek 2.7: Interpolator rzędu B. Wstawiając(B 1) zer między próbki wejściowe, uzyskuje się więc wyjście interpolatora. W rezultacie częstotliwość próbkowania sygnału wyjściowego jest taka sama, jak sygnału na wejściu decymatora. Dodatkowo zastosowanie B decymatorów jako przetwornika P/S jak na Rysunku 2.4, wprowadza opóźnienie w ścieżce sygnału równe(b 1) próbek.

26 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ jiik Q OL Q OL AB AB Q OL AB eiik Q OL Q OL AB AB efhijk eflijk GHIJK GLIJK gfhijk gflijk F - F - P B P B Q OL F Q OL AB CCD efmnolijk GMNOLIJK gfmnolijk ECCD VWXYZ[\]^\ _ `abcd F - P B Q OL hiikblmk F RB RB hfhijk hflijk CCD hfmnolijk B STU Rysunek 2.8: Blokowy filtr adaptacyjny.[9, str. 443] RB 2.5.3 Filtradaptacyjny Implementacja blokowego filtra adaptacyjnego przedstawiona została na Rysunku 2.8. Wektorsygnałubłęduwdziedzinieczasue B (n)jestróżnicąsygnałuodniesieniaoraz sygnałuwyjściowego,zapisanychwformieblokówd B (n)iy B (n)odługościb: e B (n)=d B (n) y B (n) (2.62) gdzied B (n)przyjmujepostaćwektora: d B (n)= d(nb+b 1). d(nb+1) d(nb) (2.63)

2.6. ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW 27 Korekcja współczynników filtra przebiega według wzoru: w(n+1)=w(n)+µu H (n)e 2B(n) (2.64) gdziemacierzu(n)opisanajestwzorem(2.55),awektorsygnałubłędue 2B (n)wdziedzinie częstotliwości jest następujący: e 0 (n) e 2B (n)= e 1 (n) =FFT e B(n). 0 B 2B 1 e 2B 1 (n) (2.65) Wykorzystując wzory(2.55, 2.56, 2.64, 2.65) wyznaczyć można poniższą zależność(2.66), na podstawie której aktualizowany jest wektor wag k-tego podfiltra: w k (n+1)=w k (n)+µ[u k (n)]h e k (n), k=0,1,...,2b 1 (2.66) 2.5.4 Normalizacjamocy Zazwyczaj wykorzystywana jest implementacja filtra blokowego z korekcją współczynników według algorytmu typu NLMS z normalizacją mocy. Równanie(2.66) zastępuje się wówczas zależnością: w k (n+1)=w k (n)+ µ λ k (n) [u k (n)]h e k (n), k=0,1,...,2b 1 (2.67) gdzieλ k (n)wyznaczanejestnapodstawiewzoru: λ k (n)=βλ k (n 1)+(1 β) u k(n) 2, k=0,1,...,2b 1 (2.68) zwarunkiempoczątkowymλ k ( 1)=ǫ,gdzieβjeststałązzakresu0 β<1,nazywaną parametrem zapominania(ang. forgetting factor). Parametr ten decyduje o efektywnej pamięci procesu opisanego we wzorze(2.68). Użycie normalizacji mocy poprawia zbieżność algorytmu. Jak napisano w pracy[9] dzieje się tak, ponieważ widmo sekwencji próbeku k (n)nawejściachwszystkichpodpasmowychfiltrówjestwprzybliżeniupłaskie.wówczas,λ k (n)zapewniaestymatymocywejściowychdlakażdegozpodfiltrów, a normalizacja według nich pomaga normalizować moce sygnału w każdym z podpasm. 2.6 Złożoność obliczeniowa algorytmów Porównanie złożoności obliczeniowej oparte jest na liczbie operacji arytmetycznych(na liczbach rzeczywistych) w każdej z implementacji, dla zespolonych danych wejściowych. Pominięte zostają takie czynniki jak wymagania pamięciowe poszczególnych algorytmów.

28 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Algorytm LMS W algorytmie LMS dla każdej próbki wejściowej przeprowadzane są następujące operacje: 1. Każda iteracja wymaga wyznaczenia próbki sygnału y(n). Niezbędne jest do tego M zespolonych mnożeń i M 1 zespolonych dodawań, co daje 4M operacji mnożenia i 4M 2 operacji dodawania na liczbach rzeczywistych. 2. Na obliczenie sygnału błędu e(n) = d(n) y(n) potrzeba jednego dodawania liczb zespolonych(dwie sumy liczb rzeczywistych). 3. Wyznaczenie iloczynu µe(n), w przypadku zespolonych danych, wymaga dwóch rzeczywistych mnożeń. 4. Iloczyn skalara µe(n) i wektora u(n) jest wynikiem M mnożeń liczb zespolonych. 5. Ostatnia operacja aktualizacji wag filtra wymaga M zespolonych dodawań. W sumie, dla zespolonych danych wejściowych, algorytm LMS wymaga 8M +2 działań mnożenia i 8M działań dodawania na liczbach rzeczywistych. Algorytm NLMS W porównaniu do algorytmu LMS, unormowany algorytm wymaga dwóch dodatkowych operacji potrzebujących w sumie: jednego dzielenia, 2M mnożeń i 2M 1 dodawań. Całkowity koszt algorytmu NLMS wynosi więc: 10M + 2 mnożeń, 10M dodawań oraz 1 dzielenie. Algorytm NLMS z normalizacją mocy Wyznaczenie estymaty mocy wejściowej, dla zespolonych danych wejściowych, w algorytmie NLMS z normalizacją mocy, potrzebuje czterech rzeczywistych mnożeń i trzech rzeczywistych dodawań. Zatem, złożoność obliczeniowa tego algorytmu jest równa następującejliczbieoperacji:8m+6mnożeń,8m+4dodawań,1dzielenie. Algorytm Leaky-LMS Wprowadzenie parametru(1 µα) w równaniu korekcji współczynników filtra, skutkuje następującym kosztem obliczeniowym algorytmu: 10M + 3 mnożeń, 8M + 1 dodawań.

2.6. ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW 29 Algorytm BLMS Zakładasię,żekosztK-wymiarowejtransformatyFFTwymaga K 2 log 2Kzespolonych operacji mnożenia. Cały algorytm można podzielić na 3 części: 1. Dekompozycja na podpasma sygnału wejściowego u(i) i sygnału błędu e(i) w celu utworzeniawektorówu 2B (n)ie 2B (n).kroktenwymagadwóchtransformatorozmiarze 2B dla każdego bloku B próbek. Koszt obliczeniowy jest więc równy: 1 B 22B 2 log 2(2B) = 2log 2 (2B) zespolonych operacji mnożenia na próbkę wejściową. 2. Aktualizacja wag filtrów. Wymagana jest korekcja wag 2B filtrów od długości M/B każdy przy użyciu algorytmu NLMS z normalizacją mocy, która dla filtra o długości K wymaga w przybliżeniu 2K operacji zespolonych. Łączny liczba operacji zespolonych na próbkę wynosi: 1 B 2B2M B = 4M B 3.Odwrotnatransformatawceluuzyskaniazsygnałówy k (n)sygnałuwyjściowego y(n) w dziedzinie czasu. Koszt tej operacji wynosi: mnożeń zespolonych na próbkę. 1 B Blog 2(2B) = log 2 (2B) Zatem, całkowita złożoność obliczeniowa algorytmu BLMS jest rzędu: 4M B +3log 2(2B) zespolonych operacji mnożenia na próbkę wejściową. Uwzględniając pozostałe operacje arytmetyczne, uzyskuje się następującą złożoność obliczeniową, wyrażoną w liczbie operacji na liczbach rzeczywistych, przypadającą na pojedyncząpróbkęwejściową:12log 2 (2B)+20 M B +8mnożeń,6log 2(2B)+12 M B +8 dodawań, 2 dzieleń. Porównanie W Tabeli 2.1 przedstawione zostało zbiorcze porównanie złożoności obliczeniowej algorytmów, według liczby operacji na liczbach rzeczywistych, dla zespolonych danych wejściowych. W Tabeli 2.2 pokazano liczbę operacji wykonywanych przez każdy algorytm dla

30 ROZDZIAŁ 2. PODSTAWY TEORETYCZNE FILTRACJI ADAPTACYJNEJ Algorytm + \ LMS 8M+2 8M 0 NLMS 10M + 2 10M 1 NLMSznormalizacjąmocy 8M+6 8M+4 1 Leaky-LMS 10M+3 8M+1 0 BLMS 12log 2 (2B)+20 M B +8 6log 2(2B)+12 M B +8 2 Tablica 2.1: Złożoność obliczeniowa algorytmów według liczby operacji na liczbach rzeczywistych dla zespolonych danych wejściowych, przypadających na jedną próbkę Algorytm + \ LMS 8194 8192 0 NLMS 10242 10240 1 NLMSznormalizacjąmocy 8198 8196 1 Leaky-LMS 10243 8193 0 BLMS 168 92 2 Tablica 2.2: Złożoność obliczeniowa algorytmów według liczby operacji, przypadających na jedną próbkę, na liczbach rzeczywistych dla zespolonych danych wejściowych. Długość filtram=1024.długośćblokub=512. konkretnej implementacji filtra. Przyjęto długość filtra M = 1024 oraz długość bloku danych w implementacji blokowej B = 512. Algorytm BLMS cechuje się znacząco mniejszą złożonością obliczeniową, przypadającą na pojedynczą próbkę wejściową, od algorytmów działających na zasadzie próbka-po-próbce. Jego dodatkowa zaleta w postaci równoległych ścieżek sygnału(patrz Rysunek 2.8), pozwala przypuszczać, iż implementacja tego algorytmu filtracji adaptacyjnej na platformie CUDA, będzie efektywna obliczeniowo.

Rozdział 3 Opis platformy CUDA 3.1 Wprowadzenie CUDA(ang. Compute Unified Device Architecture) to opracowana przez firmę NVI- DIA, równoległa architektura obliczeniowa, oparta o wielordzeniowe układy GPU(ang. graphics processing unit - jednostka przetwarzania graficznego), zapewniające wzrost wydajności obliczeń dzięki wykorzystaniu mocy kart graficznych. Ewolucja technologii obliczeniowych od centralnego przetwarzania na procesorach CPU(ang. central processing unit- centralna jednostka obliczeniowa) do przetwarzania równoległego na układach CPU i GPU, skutkuje wydajniejszymi rozwiązaniami problemów numerycznych niż w przypadku sekwencyjnych obliczeń. W rozdziale tym, w odniesieniu do karty graficznej, zamiennie będą stosowane pojęcia: GPU, jednostka graficzna, urządzenie. Omówione zostaną podstawowe właściwości architektury CUDA oraz niektóre cechy, wykorzystane w implementacjach algorytmów filtracji adaptacyjnej. 3.2 Skalowalnośćmodelu Ważną cechą architektury CUDA jest jej model programowania, pozwalający na skalowanie stopnia zrównoleglenia, w celu obsługi zarówno małej jak i dużej liczby rdzeni procesorów graficznych. Taka automatyczna skalowalność jest dostępna dzięki hierarchii i podziałowi modelu na coraz mniejsze części. Siatka jest podzielona na bloki, a bloki podzielone są na wątki. Każdy blok wątków może zostać rozplanowany, jednocześnie lub sekwencyjnie, na jakimkolwiek z dostępnych rdzeni karty graficznej, w dowolnej kolejności. Dzięki temu skompilowany program może zostać uruchomiony na dowolnej liczbie rdzeni, co zostało 31

32 ROZDZIAŁ 3. OPIS PLATFORMY CUDA Wielowątkowy program CUDA Blok 0 Blok 1 Blok 2 Blok 3 Blok 4 Blok 5 Blok 6 Blok 7 GPU z dwoma rdzeniami GPU z czterema rdzeniami Rdzeń 0 Rdzeń 1 Rdzeń 0 Rdzeń 1 Rdzeń 2 Rdzeń 3 Blok 0 Blok 1 Blok 0 Blok 1 Blok 2 Blok 3 Blok 2 Blok 3 Blok 4 Blok 5 Blok 6 Blok 7 Blok 4 Blok 5 Blok 6 Blok 7 Rysunek 3.1: Skalowalność programu CUDA.[5, str. 5] pokazane na Rysunku 3.1. Wielowątkowy program dzielony jest na bloki wątków, które są wykonywane niezależnie od siebie. W rezultacie karta graficzna z większą liczbą rdzeni wykona program szybciej niż karta, posiadająca mniej jednostek obliczeniowych. Dzięki skalowalności modelu programowania, programista nie musi znać docelowej liczby procesorów graficznych. Taka informacja niezbędna jest jedynie dla systemu, na którym wykonywany jest program, odpowiednio skalowany przez sterownik karty. 3.3 Modelprogramowania 3.3.1 FunkcjeGPU Funkcja GPU(funkcja urządzenia), czyli funkcja wykonywana na karcie graficznej to tak zwany kernel. Funkcje urządzenia można definiować dzięki rozszerzeniu języka C do językacudacisąonewykonywanenrazyrównolegleprzeznwątkówcuda,gdzie N to pewna dodatnia wartość Każdy wątek wykonujący funkcję, posiada unikalny numer identyfikacyjny, dostępny z poziomu funkcji poprzez wbudowaną zmienną threadidx. Kernele wywoływane są w charakterystyczny sposób, z użyciem składni języka CUDA C,

3.3. MODEL PROGRAMOWANIA 33 Siatka Blok (0, 0) Blok (1, 0) Blok (2, 0) Blok (0, 1) Blok (1, 1) Blok (2, 1) Blok (1, 1) nopqr stu tv nopqr swu tv nopqr sxu tv nopqr syu tv nopqr stu wv nopqr swu wv nopqr sxu wv nopqr syu wv nopqr stu xv nopqr swu xv nopqr sxu xv nopqr syu xv Rysunek 3.2: Siatka bloków.[5, str. 9] która wymaga podania w ilu blokach i ilu wątkach w każdym bloku, uruchomiona będzie funkcja. Wywołanie kernela o trzech parametrach wejściowych a, b, c, może wyglądać następująco: f_kernel<<<liczba_blokow, liczba_watkow>>>(a, b, c); Listing 3.1: Przykładowe wywołanie funkcji typu kernel Powyższe wywołanie spowoduje uruchomienie funkcji f kernel w wielu kopiach, które mogą wykonywać swoje obliczenia równolegle. Liczba kopii tej funkcji jest równa iloczynowi(liczba blokow*liczba watkow). 3.3.2 WątkiCUDA Liczba wątków w bloku jest ograniczona, ponieważ wszystkie z jednego bloku obsługiwane są przez ten sam rdzeń oraz współdzielą ograniczone zasoby pamięci na tym rdzeniu. Ograniczenia te zostały opisane w punkcie 3.4. Pojedyncza funkcja urządzenia może być wykonywana przez wiele jednakowych bloków, więc całkowita liczba wątków równa jest

34 ROZDZIAŁ 3. OPIS PLATFORMY CUDA liczbie wątków w bloku razy liczba bloków. Zbiór bloków nazywany jest siatką bloków, którą pokazano na Rysunku 3.2. Liczba wykorzystywanych bloków jest zazwyczaj podyktowana ilością przetwarzanych danych lub liczbą procesorów w systemie. Każdy blok wątków wewnątrz siatki może być zidentyfikowany dzięki zmiennej blockidx. Wymagane jest, aby bloki wykonywane były niezależnie od siebie, czyli musi istnieć możliwość na wykonanie ich w dowolnej kolejności, równolegle bądź szeregowo. Taki warunek zapewnia automatyczne skalowanie kodu programu według liczby procesorów graficznych, jak to zostało przedstawione na Rysunku 3.1. Wątki wewnątrz bloku mogą ze sobą współpracować dzięki dwóm mechanizmom. Pierwszym z nich jest współdzielenie danych poprzez tak zwaną pamięć wspóldzieloną (ang. shared memory). Drugim mechanizmem jest synchronizacja działań wątków, koordynująca dostęp do wspólnych obszarów pamięci. 3.3.3 Programowanieheterogeniczne Model programowania CUDA zakłada, że wątki CUDA wykonywane są na fizycznie oddzielnym urządzeniu, działającym jako koprocesor dla programu wykonywanego na platformie CUDA. Funkcje urządzenia(kernels) działają na GPU, a pozostała część programu na centralnej jednostce obliczeniowej. Dodatkowo, model programowania CUDA zakłada, że zarówno platforma CPU jak i karta graficzna posiadają własną oddzielną pamięć. W wyniku tego, przed uruchomieniem kernela, konieczne jest skopiowanie niezbędnych danych do pamięci karty graficznej. Natomiast, po wykonaniu funkcji urządzenia, wyniki znajdujące się pamięci jednostki GPU są przenoszone do pamięci RAM komputera. 3.3.4 Hierarchiapamięci Hierarchię pamięci platformy CUDA przedstawiono na Rysunku 3.3. Wątki CUDA mają dostęp do wielu obszarów pamięci. Każdy wątek posiada własną lokalną pamięć. Każdy blok wątków ma pamięć współdzieloną widoczną dla wszystkich wątków z tego bloku. Dodatkowo wszystkie wątki w każdym z bloków mają dostęp do pamięci globalnej(pamięć RAM karty graficznej). Architektura CUDA oferuje także dwa dodatkowe obszary pamięci, dostępne tylko do odczytu i widoczne dla wszystkich wątków. Są to pamięć stała, usprawniająca dostęp do często używanych danych, oraz pamięć tekstur.

3.4. MOŻLIWOŚCI OBLICZENIOWE 35 Wątek Pamięć lokalna Blok wątków z{ }~ z{ }~ ƒ Pamięć współdzielona z{ }~ ƒ z{ }~ ƒ ƒ Siatka bloków Blok (0, 0) Blok (1, 0) Blok (2, 0) Pamięć globalna Blok (0, 1) Blok (1, 1) Blok (2, 1) Rysunek 3.3: Hierarchia pamięci.[5, str. 11] 3.4 Możliwościobliczeniowe Każda nowa generacja procesorów NVIDIA wprowadza do kart graficznych nowe funkcje i właściwości. Powiązane z nimi możliwości obliczeniowe opisane są dwiema cyframi i określają cechy sprzętu oraz odzwierciedlają zbiór instrukcji wspieranych przez urządzenie. Od możliwości obliczeniowych karty graficznej zależy wiele parametrów jednostki GPU. Porównane zostały one w tabeli 3.1. Wyższe możliwości obliczeniowe są rozszerzeniem niższych, dzięki czemu programy zaprojektowane dla starszych kart z technologią CUDA są kompatybilne z nowszymi jednostkami. Obecnie, najbardziej zaawansowane technologicznie karty GPU posiadają możliwości obliczeniowe opisane numerem 2.1. 3.5 BibliotekaCUFFT Biblioteka CUFFT jest biblioteką opracowaną przez NVIDIA umożliwiającą efektywne obliczanie dyskretnej transformaty Fouriera przy pomocy algorytmu szybkiej transfor-

36 ROZDZIAŁ 3. OPIS PLATFORMY CUDA Możliwości obliczeniowe Właściwość 1.0 1.1 1.2 1.3 2.x siatka 3D bloków wątków Nie Tak liczby zmiennoprzecinkowe o podwójnej precyzji Nie Tak maksymalna liczba wymiarów siatki bloków wątków 2 3 maksymalna wielkość wymiaru x, y lub z siatki 65535 bloków wątków maksymalna liczba wymiarów bloku wątków 3 maksymalna wielkość wymiaru x lub y bloku 512 1024 maksymalna wielkość wymiaru z bloku 64 maksymalna liczba wątków na blok 512 1024 rozmiar osnowy(ang. warp size) 32 maksymalna liczba bloków na multiprocesor 8 maksymalna liczba osnów na multiprocesor 24 32 48 maksymalna liczba wątków na multiprocesor 768 1024 1536 liczba 32-bitowych rejestrów na multiprocesor 8 K 16 K 32 K maksymalna ilość pamięci współdzielonej na multiprocesor 16KB 48KB liczba banków pamięci współdzielonej 16 32 ilość pamięci lokalnej na wątek 16 KB 512 KB wielkość pamięci stałej 64 KB maksymalna szerokość 1-wymiarowej tekstury 8192 32768 związanej z tablicą CUDA maksymalna szerokość 1-wymiarowej tekstury 2 27 związanej z pamięcią liniową maksymalna szerokość i liczba warstw 1-8192x512 16384x2048 wymiarowej tekstury maksymalne wymiary 2-wymiarowej tekstury 65536 x 32768 65536 x 65535 związanej z tablicą CUDA lub pamięcią liniową maksymalne wymiary i liczba warstw 2-8192x8192x512 16384x16284x2048 wymiarowej tekstury maksymalne wymiary 3-wymiarowej tekstury 2048x2048x2048 związanej z tablicą CUDA maksymalne liczba tekstur związanych funkcją 128 urządzenia maksymalne liczba instrukcji na funkcją urządzenia 2miliony Tablica 3.1: Porównanie możliwości obliczeniowych maty Fouriera(FFT, ang. Fast Fourier Transform). Transformaty mogą być wyznaczane zarówno dla danych rzeczywistych, jak i zespolonych. Biblioteka CUFFT w znaczący sposób ułatwia implementację algorytmów wykorzystujących działania FFT. Nie jest więc konieczne programowanie własnych funkcji wyliczających transformaty na karcie graficznej. Biblioteka zapewnia wykonywanie równoległych obliczeń na kartach NVIDIA wspierających technologię CUDA. Rozmaite biblioteki FFT różnią się możliwościami obliczania odmiennych typów transformat. Biblioteka CUFFT ma następujące własności,