Podstawy OpenCL część 2

Podobne dokumenty
Ćwiczenia z przetwarzania tablic 2D

Czym jest całka? Całkowanie numeryczne

Ilustracja metody Monte Carlo obliczania pola obszaru D zawartego w kwadracie [a,b]x[a,b]


2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Algorytmy zrandomizowane

Zajęcia: VBA TEMAT: VBA PROCEDURY NUMERYCZNE Metoda bisekcji i metoda trapezów

Ilustracja metody Monte Carlo do obliczania pola obszaru D zawartego w kwadracie [a, b] [a, b].

I. Podstawy języka C powtórka

Lista 6. Kamil Matuszewski 13 kwietnia D n =

Analiza obrazów - sprawozdanie nr 2

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Metoda elementów brzegowych

Prawdopodobieństwo geometryczne

Spacery losowe generowanie realizacji procesu losowego

LISTA 5. C++ PETLE for, while, do while

Prawdopodobieństwo i statystyka

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

PODSTAWY > Figury płaskie (1) KĄTY. Kąt składa się z ramion i wierzchołka. Jego wielkość jest mierzona w stopniach:

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Programowanie dynamiczne

Dokumentacja. Kalibracja parametrów modelu Hestona za rozszerzonego filtra Kalmana. Mikołaj Bińkowski Wiktor Gromniak

Wstęp do Rachunku Prawdopodobieństwa, IIr. WMS

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Obliczenia iteracyjne

Ilustracja metody MONTE CARLO. obliczania całek podwójnych

Symulacja w przedsiębiorstwie

RACHUNEK PRAWDOPODOBIEŃSTWA WYKŁAD 3.

x y

Laboratorium MATLA. Ćwiczenie 4. Debugowanie. Efektywności kodu. Wektoryzacja.

Ważne rozkłady i twierdzenia c.d.

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Programowanie Współbieżne. Algorytmy

Nie do końca zaawansowane elementy programowania w pakiecie R. Tomasz Suchocki

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

Złożoność obliczeniowa zadania, zestaw 2

ARKUSZ X

Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

II. RÓŻNICZKOWANIE I CAŁKOWANIE NUMERYCZNE Janusz Adamowski

Algorytmy i struktury danych. Wykład 4

Model odpowiedzi i schemat oceniania do arkusza I

3 1 + i 1 i i 1 2i 2. Wyznaczyć macierze spełniające własność komutacji: [A, X] = B

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

WOJEWÓDZKI KONKURS MATEMATYCZNY dla uczniów gimnazjów i oddziałów gimnazjalnych województwa pomorskiego w roku szkolnym 2018/2019 etap wojewódzki

b) bc a Rys. 1. Tablice Karnaugha dla funkcji o: a) n=2, b) n=3 i c) n=4 zmiennych.

AKADEMIA GÓRNICZO-HUTNICZA Wydział Matematyki Stosowanej ROZKŁAD NORMALNY ROZKŁAD GAUSSA

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

HISTOGRAM. Dr Adam Michczyński - METODY ANALIZY DANYCH POMIAROWYCH Liczba pomiarów - n. Liczba pomiarów - n k 0.5 N = N =

LIVE Gra w życie. LIVE w JavaScript krok po kroku. ANIMACJA Rozpoczynamy od podstawowego schematu stosowanego w animacji

Modelowanie wieloskalowe. Automaty Komórkowe - podstawy

1. Symulacje komputerowe Idea symulacji Przykład. 2. Metody próbkowania Jackknife Bootstrap. 3. Łańcuchy Markova. 4. Próbkowanie Gibbsa

Macierze. Rozdział Działania na macierzach

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

FUNKCJA LINIOWA. Zadanie 1. (1 pkt) Na rysunku przedstawiony jest fragment wykresu pewnej funkcji liniowej y = ax + b.

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

Ekoenergetyka Matematyka 1. Wykład 3.

Wykład 14. Testowanie hipotez statystycznych - test zgodności chi-kwadrat. Generowanie liczb losowych.

Aproksymacja funkcji a regresja symboliczna

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

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Algorytmy sztucznej inteligencji

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Metody numeryczne I Równania nieliniowe

Obraz jako funkcja Przekształcenia geometryczne

Rozkład normalny, niepewność standardowa typu A

MATEMATYKA ZBIÓR ZADAŃ MATURALNYCH. Lata Poziom podstawowy. Uzupełnienie Zadania z sesji poprawkowej z sierpnia 2019 r.

Wymagania na egzamin poprawkowy z matematyki w roku szkolnym 2018/2019 klasa 1 TLog

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

Wartości i wektory własne

Egzamin ósmoklasisty od roku szkolnego 2018 / Matematyka. Przykładowy arkusz egzaminacyjny (EO_6) Czas pracy: do 150 minut

Macierzowe algorytmy równoległe

PRÓBNY EGZAMIN MATURALNY Z MATEMATYKI

Algorytmy genetyczne. Paweł Cieśla. 8 stycznia 2009

Metody i analiza danych

Kubatury Gaussa (całka podwójna po trójkącie)

PRÓBNY EGZAMIN MATURALNY Z MATEMATYKI

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Przetwarzanie obrazów rastrowych macierzą konwolucji

KADD Minimalizacja funkcji

PRÓBNY EGZAMIN MATURALNY

Modelowanie rynków finansowych z wykorzystaniem pakietu R

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Metody SI w grach komputerowych Gra Policjanci i złodziej (Algorytmy przeszukiwania grafów)

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 5 Zadania funkcje cz.1

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Mikroekonometria 6. Mikołaj Czajkowski Wiktor Budziński

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 2 POZIOM PODSTAWOWY. Etapy rozwiązania zadania

EGZAMIN ÓSMOKLASISTY od roku szkolnego 2018/2019

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Program MC. Obliczyć radialną funkcję korelacji. Zrobić jej wykres. Odczytać z wykresu wartość radialnej funkcji korelacji w punkcie r=

PRZYKŁADOWE ZADANIA Z MATEMATYKI NA POZIOMIE PODSTAWOWYM

Transkrypt:

Podstawy OpenCL część 2 1. Napisz program dokonujący mnożenia dwóch macierzy w wersji sekwencyjnej oraz OpenCL. Porównaj czasy działania obu wersji dla różnych wielkości macierzy, np. 16 16, 128 128, 1024 1024. Zmodyfikuj wersję OpenCL, tak aby obliczenia zostały podzielone na niezależne porcje, przy czym pojedyncza porcja dotyczy kwadratowego fragmentu macierzy wejściowych o wymiarach 16 16. Obliczenia dla porcji polegają na wspólnym załadowaniu elementów macierzy wejściowych odpowiadających przetwarzanemu fragmentowi do tablic pomocniczych w pamięci lokalnej, a następnie pomnożeniu tak powstałych małych macierzy. Objaśnienie znajduje się na Rys. 2.1. Porównaj czasy działania pierwotnej i zmodyfikowanej wersji programu. B 0,0 B 0,1 B 1,0 B 1,1 B 2,0 B 2,1 B 3,0 B 3,1 A 0,0 A 0,1 A 0,2 A 0,3 C 0,0 C 0,1 C 0,2 C 0,3 A 1,0 A 1,1 A 1,2 A 1,3 C 1,0 C 1,1 C 1,2 C 1,3 C 2,0 C 2,1 C 2,2 C 2,3 C 3,0 C 3,1 C 3,2 C 3,3 Rysunek 2.1: Ilustracja podziału obliczeń na porcje (kafelki). Rozmiar porcji odpowiada rozmiarowi grupy wątków (na rys. 2 2). 2. Zaimplementuj program symulujący Grę w życie Johna Conwaya. Program powinien umożliwić wygenerowanie stanu gry po wykonaniu zadanej liczby iteracji, zaczynając od zadanego stanu początkowego. Reguły gry są następujące: gra odbywa się na prostokątnej planszy podzielonej na komórki, z których każda jest żywa albo martwa ; każda komórka ma dokładnie 8 sąsiadów; na podstawie bieżącego stanu gry generowany jest kolejny zgodnie z regułami: 3

martwa komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa (rodzi się); żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje nadal żywa; przy innej liczbie sąsiadów umiera (z samotności albo zatłoczenia ). Na potrzeby symulacji należy założyć, że plansza jest skończona i przechowywana w tablicy p o wymiarach n n, przy czym komórki brzegowe sąsiadują z komórkami z przeciwległego brzegu, tak aby każda z nich miała 8 sąsiadów. Przykładowo, komórka p[i][0] sąsiaduje z komórką p[i][n 1], a komórka p[0][i] z komórką p[n 1][i]. Na potrzeby testowania programu można wykorzystać wzorzec glider, którego kolejne stany przedstawia Rys. 2.2. Jest to wzorzec, który jest wiecznie żywy. Rysunek 2.2: Stany fragmentu planszy zawierającego wzorzec glider w kolejnych iteracjach. Należy porównać czasy działania programu w wersji sekwencyjnej i równoległej (GPU) dla różnych wielkości plansz. 3. Napisz program kopiujący macierz, tj. z macierzy wejściowej do macierzy docelowej za pomocą kernela OpenCL w dwóch wersjach. W pierwszej każdy wątek kopiuje dokładnie jeden element z tablicy wejściowej do tablicy wynikowej o indeksie odpowiadającym indeksie wątku (grupa robocza odpowiada za kopiowanie odpowiadającego jej kafelka macierzy wejściowej). Rozmiar przestrzeni indeksowania powinien być równy rozmiarowi macierzy, np. n n. W drugiej wersji każdy wątek w grupie roboczej powinien kopiować kilka elementów. Przykładowo, dla macierzy o wymiarach n n rozmiar przestrzeni indeksowania można ustalić na n n (tyle samo kolumn, ale o połowę mniej wierszy), 2 wtedy każdy wątek w grupie kopiuje dwa elementy (patrz Rys. 2.3). Jak różnią się czasy działania obu wersji? Wersja 1 Wersja 2 Wątek local_id(1) = 2 Wątek local_id(1) = 3 Rysunek 2.3: Ilustracja do zadania z kopiowaniem macierzy. 4

4. Napisz program dokonujący transpozycji macierzy za pomocą kernela OpenCL w dwóch wersjach. W pierwszej, elementy tablicy wejściowej są zapisywane w tablicy wynikowej bezpośrednio. W drugiej grupa wątków najpierw kopiuje (bez zmian) fragment tablicy wejściowej do tablicy w pamięci lokalnej, a następnie z tablicy lokalnej zapisuje transponowany fragment do tablicy wynikowej (patrz Rys. 2.4). Porównaj czasy działania obu wersji. Porównaj czas działania drugiej wersji algorytmu z czasem działania programu kopiującego macierz (bez transponowania). Macierz wejściowa Macierz wynikowa Pamięć lokalna Rysunek 2.4: Ilustracja transpozycji macierzy za pomocą kopiowania do tablicy w pamięci lokalnej urządzenia. 5. Napisz program dokonujący przekształcenia obrazu wejściowego za pomocą filtru kontekstowego o wymiarach 3 3. Wartość wynikowa koloru piksela jest wyznaczana poprzez przemnożenie wartości piksela oraz jego sąsiadów przez odpowiednie elementy filtra, a następnie zsumowanie tych wartości i podzielenie wyniku przez sumę wag filtru (patrz rys. 2.5). Bardziej formalnie: gdzie: g(x, y) = M M i= M j= M w(i, j)f(x + i, y + j), f(x, y) jest kolorem punktu (x, y) obrazu wejściowego, g(x, y) jest kolorem punktu obrazu wynikowego, w(i, j) jest wagą filtru, M = N gdzie N to rozmiar filtru. 2 Najprostszy filtr rozmywający N N = 3 3 (górnoprzepustowy, box filter): 1 1 1 1 9 1 1 1 1 1 1 Filtr Gaussa: 1 16 1 2 1 2 4 2 1 2 1 5

w(-1,-1) w(-1,0) w-1,1) w(0,-1) w(0,0) w(0,1) w(1,-1) w(1,0) w(1,1) f(x-1,y-1) f(x-1,y) f(x-1,y+1) f(x,y-1) f(x,y) f(x,y+1) g(x,y) f(x+1,y-1) f(x+1,y) f(x+1,y+1) Obraz oryginalny Obraz wyjściowy Rysunek 2.5: Ilustracja filtrowania obrazu. 6. Zaimplementować równoległy algorytm wyznaczający przybliżenie liczby π metodą Monte Carlo. Algorytm ten polega na losowaniu n punków należących do kwadratu o boku dł. a. W kwadrat ten wpisane jest koło o promieniu r = a/2. W celu wyznaczenia przybliżenia liczby π wyznaczamy stosunek liczby punktów leżących wewnątrz koła n in do liczby wylosowanych punktów n. Prawdopodobieństwo tego, że wylosowany pkt. należy do koła jest równe stosunkowi pola koła do pola kwadratu: stąd: P = r2 π a 2 = r2 π 4r 2 = π 4, π 4 n in n. 7. Zaimplementuj równoległy algorytm wyznaczania przybliżonej wartości całki oznaczonej (rys. 2.6): 2π 1 0 2 + cos(x 2 ) dx Przybliżona wartość całki oznaczonej to: b a f(x)dx b a n n f(x k ), k=1 gdzie x 1, x 2,..., x n są liczbami losowymi o rozkładzie jednostajnym z przedziału [a, b]. Przybliżona wartość całki to: 3.43901. Sprawdzić dokładność w zależności od różnych wartości n. Porównać czas działania z implementacją sekwencyjną. Wskazówka: Przybliżenie π dostępne jest w stałej M PI. 6

Rysunek 2.6: Wykres całki z Zad. 7 7