Przybliżone zapytania do baz danych z akceleracją obliczeń rozkładów prawdopodobieństwa



Podobne dokumenty
ZAGADNIENIE TRANSPORTOWE

N ( µ, σ ). Wyznacz estymatory parametrów µ i. Y które są niezależnymi zmiennymi losowymi.

Planowanie eksperymentu pomiarowego I

Portfel złożony z wielu papierów wartościowych

Podprzestrzenie macierzowe

Niezawodność. systemów nienaprawialnych. 1. Analiza systemów w nienaprawialnych. 2. System nienaprawialny przykładowe

ANALIZA INPUT - OUTPUT

Modelowanie niezawodności i wydajności synchronicznej elastycznej linii produkcyjnej

BQR FMECA/FMEA. czujnik DI CPU DO zawór. Rys. 1. Schemat rozpatrywanego systemu zabezpieczeniowego PE

1. Relacja preferencji

Prawdopodobieństwo i statystyka r.

ρ (6) przy czym ρ ij to współczynnik korelacji, wyznaczany na podstawie następującej formuły: (7)

Laboratorium Metod Statystycznych ĆWICZENIE 2 WERYFIKACJA HIPOTEZ I ANALIZA WARIANCJI

( ) L 1. θ θ = M. Przybycień Rachunek prawdopodobieństwa i statystyka. = θ. min

OBLICZANIE NIEPEWNOŚCI METODĄ TYPU B

Przybliżone zapytania do baz danych z akceleracją obliczeń rozkładów prawdopodobieństwa

Monika Jeziorska - Pąpka Uniwersytet Mikołaja Kopernika w Toruniu

5. OPTYMALIZACJA NIELINIOWA

Pomiary parametrów napięć i prądów przemiennych

3. OPTYMALIZACJA NIELINIOWA

Funkcja wiarogodności

Arytmetyka finansowa Wykład z dnia

Podstawy analizy niepewności pomiarowych (I Pracownia Fizyki)

Miary statystyczne. Katowice 2014

Wyrażanie niepewności pomiaru

UOGÓLNIONA ANALIZA WRAŻLIWOŚCI ZYSKU W PRZEDSIĘBIORSTWIE PRODUKUJĄCYM N-ASORTYMENTÓW. 1. Wprowadzenie

TARCIE CIĘGIEN O POWIERZCHNIĘ WALCOWĄ WZÓR EULERA

ZASTOSOWANIE METODY CBR DO SZACOWANIA KOSZTÓW WYTWARZANIA W FAZIE PROJEKTOWANIA

Statystyczna analiza miesięcznych zmian współczynnika szkodowości kredytów hipotecznych

Centralna Izba Pomiarów Telekomunikacyjnych (P-12) Komputerowe stanowisko do wzorcowania generatorów podstawy czasu w częstościomierzach cyfrowych

METODY KOMPUTEROWE 1

ĆWICZENIE 10 OPTYMALIZACJA STRUKTURY CZUJKI TEMPERATURY W ASPEKCIE NIEZWODNOŚCI

WYZNACZANIE WARTOŚCI ENERGII ROZPRASZANEJ PODCZAS ZDERZENIA CIAŁ

Badania Maszyn CNC. Nr 2

Podstawowe zadanie statystyki. Statystyczna interpretacja wyników eksperymentu. Zalety statystyki II. Zalety statystyki

KONCEPCJA WIELOKRYTERIALNEGO WSPOMAGANIA DOBORU WARTOŚCI PROGOWEJ W BIOMETRYCZNYM SYSTEMIE UWIERZYTELNIANIA. Adrian Kapczyński Maciej Wolny

ma rozkład normalny z nieznaną wartością oczekiwaną m

L.Kowalski PODSTAWOWE TESTY STATYSTYCZNE WERYFIKACJA HIPOTEZ PARAMETRYCZNYCH

System finansowy gospodarki

Indukcja matematyczna

STATYKA. Cel statyki. Prof. Edmund Wittbrodt

W zadaniu nie ma polecenia wyznaczania estymatora nieobciążonego o minimalnej wariancji. σ σ σ σ σ = =

STATYSTYKA MORANA W ANALIZIE ROZKŁADU CEN NIERUCHOMOŚCI

Prawdopodobieństwo i statystyka r.

PODSTAWY OPRACOWANIA WYNIKÓW POMIARÓW Z ELEMENTAMI ANALIZY NIEPEWNOŚCI POMIAROWYCH

Jego zależy od wysokości i częstotliwości wypłat kuponów odsetkowych, ceny wykupu, oczekiwanej stopy zwrotu oraz zapłaconej ceny za obligację.

Statystyczne charakterystyki liczbowe szeregu

. Wtedy E V U jest równa

Typ może być dowolny. //realizacja funkcji zamiana //przestawiajacej dwa elementy //dowolnego typu void zamiana(int &A, int &B) { int t=a; A=B; B=t; }

R j v tj, j=1. jest czynnikiem dyskontującym odpowiadającym efektywnej stopie oprocentowania i.

WikiWS For Business Sharks

Badania Operacyjne (dualnośc w programowaniu liniowym)

W zadaniu nie ma polecenia wyznaczania estymatora nieobciążonego o minimalnej wariancji. σ σ σ σ σ = =

Różniczkowanie funkcji rzeczywistych wielu zmiennych. Matematyka Studium doktoranckie KAE SGH Semestr letni 2008/2009 R. Łochowski

L.Kowalski zadania ze statystyki opisowej-zestaw 5. ZADANIA Zestaw 5

Tablica Galtona. Mechaniczny model rozkładu normalnego (M10)

Teoria i metody optymalizacji

Problem plecakowy (KNAPSACK PROBLEM).

Stanisław Cichocki Natalia Nehrebecka. Zajęcia 7-8

Sprawdzenie stateczności skarpy wykopu pod składowisko odpadów komunalnych

Elementy arytmetyki komputerowej

TESTY NORMALNOŚCI. ( Cecha X populacji ma rozkład normalny). Hipoteza alternatywna H1( Cecha X populacji nie ma rozkładu normalnego).

System finansowy gospodarki

Zadanie 1. ), gdzie 1. Zmienna losowa X ma rozkład logarytmiczno-normalny LN (, . EX (A) 0,91 (B) 0,86 (C) 1,82 (D) 1,95 (E) 0,84

Matematyczny opis ryzyka

( X, Y ) będzie dwuwymiarową zmienną losową o funkcji gęstości

Projekt 2 2. Wielomiany interpolujące

n R ZałóŜmy, Ŝe istnieje d, dla którego: Metody optymalizacji Dr inŝ. Ewa Szlachcic otwarte otoczenie R n punktu x, Ŝe

Zaawansowane metody numeryczne

Zaawansowane metody numeryczne Komputerowa analiza zagadnień różniczkowych 1. Układy równań liniowych

Obliczanie średniej, odchylenia standardowego i mediany oraz kwartyli w szeregu szczegółowym i rozdzielczym?

FINANSE II. Model jednowskaźnikowy Sharpe a.

Analiza Matematyczna Ćwiczenia. J. de Lucas

Zastosowanie Robotyki w Przemyśle

EKSTREMA FUNKCJI EKSTREMA FUNKCJI JEDNEJ ZMIENNEJ. Tw. Weierstrassa Każda funkcja ciągła na przedziale domkniętym ma wartość najmniejszą i największą.

POLSKA FEDERACJA STOWARZYSZEŃ RZECZOZNAWCÓW MAJĄTKOWYCH POWSZECHNE KRAJOWE ZASADY WYCENY (PKZW) KRAJOWY STANDARD WYCENY SPECJALISTYCZNY NR 4 KSWS 4

Predyktywne harmonogramowanie projektów informatycznych

W loterii bierze udział 10 osób. Regulamin loterii faworyzuje te osoby, które w eliminacjach osiągnęły lepsze wyniki:

08 Model planowania sieci dostaw 1Po_2Pr_KT+KM

Metoda Monte-Carlo i inne zagadnienia 1

FUNKCJE DWÓCH ZMIENNYCH

ma rozkład normalny z wartością oczekiwaną EX = EY = 1, EZ = 0 i macierzą kowariancji

ZAGADNIENIE W POSTACI OGÓLNEJ

będą niezależnymi zmiennymi losowymi z rozkładu o gęstości

JEDNOWYMIAROWA ZMIENNA LOSOWA

PRZEDZIAŁOWE METODY ROZWIĄZYWANIA ALGEBRAICZNYCH RÓWNAŃ NIELINIOWYCH MECHANIKI KONSTRUKCJI

[, ] [, ] [, ] ~ [23, 2;163,3] 19,023 2,7

Projekt 3 Analiza masowa

POPULACJA I PRÓBA. Próba reprezentatywna. Dr Adam Michczyński - METODY ANALIZY DANYCH POMIAROWYCH 5 1

Twierdzenie Bezouta i liczby zespolone Javier de Lucas. Rozwi azanie 2. Z twierdzenia dzielenia wielomianów, mamy, że

Matematyka dyskretna. 10. Funkcja Möbiusa

R n. i stopa procentowa okresu bazowego, P wartość początkowa renty, F wartość końcowa renty. R(1 )

Portfel. Portfel pytania. Portfel pytania. Analiza i Zarządzanie Portfelem cz. 2. Katedra Inwestycji Finansowych i Zarządzania Ryzykiem

MATERIAŁY I STUDIA. Efektywność sektora publicznego na poziomie samorządu lokalnego. Zesz y t nr 242. Barbara Karbownik, Grzegorz Kula

Analiza wyniku finansowego - analiza wstępna

Zmiana bazy i macierz przejścia

WSTĘP METODY OPRACOWANIA I ANALIZY WYNIKÓW POMIARÓW

Ze względu na sposób zapisu wielkości błędu rozróżnia się błędy bezwzględne i względne.

Zadanie 1. Rzucamy symetryczną monetą tak długo, aż w dwóch kolejnych rzutach pojawią się,,reszki. Oblicz wartość oczekiwaną liczby wykonanych rzutów.

WYBRANE MOŻLIWOŚCI WSPOMAGANIA INWESTYCJI

Transkrypt:

Przyblżoe zapytaa o baz aych z akceleracą oblczeń rozkłaów prawopoobeństwa Wtol Arzeewsk Poltechka Pozańska e mal: Wtol.Arzeewsk@cs.put.poza.pl Artur Gramack, Jarosław Gramack Uwersytet Zeloogórsk e mal: A.Gramack@e.uz.zgora.pl, J.Gramack@e.uz.zgora.pl Abstrakt. Artykuł pokazue przykłaowe zastosowae archtektury CUDA opracowae przez frmę NVIDIA la swoch kart grafczych. CUDA to uwersala archtektura procesorów welorzeowych stalowaych we współczesych, abarze wyaych, kartach grafczych. arta taka, oprócz oczywstych zastosowań w zeze ogóle poętego przetwarzaa obrazu, może być z powozeem wykorzystywaa o wykoywaa złożoych oblczeń umeryczych, zwłaszcza takch, które poaą sę operac zrówoleglea moża wówczas efektywe wykorzystywać moc zastalowaych a karce grafcze tzw. multprocesorów strumeowych. Jako przykła barzo czasochłoych oblczeń wybrao proceury wyzaczaa tzw. parametrów wygłazaa estymatorów ąrowych służących o wyzaczaa rozkłaów prawopoobeństwa aych. Zaomość takch rozkłaów pozwala a ekstremale szybke wyzaczae przyblżoych wyków zapytań agreguących.. Wstęp Hurtowe aych zalazły szeroke zastosowaa we współczesych przesęborstwach. Postawowym zaaem hurtow aych est tegraca aych otyczących załalośc przesęborstwa, z łuższego okresu czasu, w ueolcoym schemace aych późesze wykoywae a tych aych różych aalz. Wśró przykłaowych aalz, ake mogą być wykoywae w hurtowach aych moża wymeć: aalzę sprzeaży, aalzę treów, eksploracę aych aalzę rozwązań alteratywych. Wele z tych aalz p. aalza sprzeaży polega a oblczeu posumowań aych wykoywae tzw. zapytań agregacyych. Przykłaowym posumowaem wykoywaym tuta może być: oblcz sumarycze ochoy ze sprzeaży peczywa w latach 990-00 w każym z woewóztw. Poeważ hurtowe aych tegruą ae o załalośc całego przesęborstwa, mogą oe osągać olbrzyme rozmary. oecza est zatem optymalzaca wykoywaa zapytań w hurtowach aych, a w szczególośc zapytań agregacyych. Wele prac pośwęcoych optymalzac realzac zapytań agregacyych pośwęcoych est zagaeom zwązaym z eksowaem, materalzowaem wyków, partycoowaem tp. Rozwązaa te pozwalaą a uzyskae wyków okłaych, eak est to zwykle okupoe pewym często wysokm kosztem, zarówo z puktu wzea czasu pracy procesora ak wykorzystywaych zasobów yskowych. Alteratywym rozwązaem est wykorzystae meto statystyczych w celu zaywaa przyblżoych wyków zapytań agregacyych. Otrzymywae wartośc e są co prawa okłae, eak w welu zastosowaach wystarczaące, zwłaszcza a wczesych etapach aalzy aych. Co węce, otrzymywae przyblżoych wyków zapytań est zacze szybsze o okłae ch realzac. Aby poeśce take było możlwe, koecze est uprzee oszacowae statystyczych parametrów rozkłaów aych w baze aych. Gy rozkłay te są typowe, czyl p. zblżoe o ormalego lub ego, ale o zae aaltycze postac, estymaca parametrów tych rozkłaów est stosukowo prosta. Gy rozkłay prawopoobeństwa zacze obegaą o typowych, moża rozważyć ch kowersę za pomocą opowech przekształceń zmeych lub też estymowae ch za pomocą meto eparametryczych, p. opartych o tzw. estymatory ąrowe.

Zalezee ektórych współczyków estymatorów ąrowych choz główe o tzw. parametr wygłazaa, zwykle ozaczay ako h est eak ość kosztowe wymaga użo czasu, zacze tym samym zmeszaąc korzyśc płyące ze stosowaa meto statystyczych. W esze publkac przestawoo moyfkace algorytmów wyzaczaa parametru wygłazaa la ąrowych estymatorów gęstośc pozwalaące a ch wyae wykoywae a procesorach kart grafczych ag. Graphcs Processg Ut; GPU frmy NVIDIA przy wykorzystau platformy CUDA. Zmoyfkowae algorytmy uwzglęaą specyfkę przetwarzaa aych przez GPU, oraz wykorzystuą róże typy pamęc zauących sę a kartach grafczych, przy zachowau zasa wyaego korzystaa z tych pamęc. Przestawoe rozwązaa pozwalaą a skrócee czasów wyzaczaa poszukwaych estymatorów ąrowych awet o rzęy welkośc w stosuku o czasów uzyskwaych a klasyczych procesorach. Struktura esze publkac est astępuąca. W sekc przestawoo otychczasowe osągęca w zeze wykoywaa przyblżoych zapytań o baz aych, oraz zastosowań procesorów kart grafczych o oblczeń ogólych. W sekc 3 przestawoo we metoy wyzaczaa parametru wygłazaa estymatorów ąrowych metoę postawaa metoę walac krzyżowe. W sekc 4 przestawoo krótk ops platformy CUDA wraz z opsam termów stosowaym w późeszych sekcach. W sekcach 5 6 przestawoo aważesze osągęca esze publkac - mplemetace meto wyzaczaa parametru wygłazaa wykorzystuące GPU w celu przyspeszea abarze czasochłoych etapów oblczeń. W sekc 7 przestawoo wyk eksperymetów, gze porówao we werse programów o oblczaa parametru wygłazaa estymatorów ąrowych: perwsza wersa tesywe wykorzystue GPU, ruga atomast korzysta wyłącze z CPU. W sekc 8 przestawoo posumowae esze publkac oraz play alszych prac.. Dotychczasowe prace.. Przyblżoe zapytaa o baz aych lasycze zapytae kerowae o bazy aych zwraca zawsze okłae wyk, ezależe o tego czy aresatem zapytaa est baza operacya, czy też baza pełąca fukcę hurtow aych. Przykłaowe zapytae oblcz sumę wartośc sprzeaży za ay rok z pozałem a poszczególe mesące ae wyk, który est prostym efektem pogrupowaa oraz posumowaa opowech aych weścowych. Czas otrzymaa wyku może być barzo róży, zależy główe o lośc aych, które ależy oczytać oraz o ogólego obcążea bazy aych p. o lczby rówocześe wykoywaych zapytań. Wykoywae eocześe uże lczby czasochłoych aalz, może spowoować, ż czasy oczekwaa a wyk bęą amere ługe. Jeym z możlwych rozwązań w take sytuac, est zastosowae techk pozwalaących a otrzymywae wyków przyblżoych, których czas załaa est zacze krótszy o techk okłaych. To, że otrzymae wyk są tylko przyblżoe, w welu zastosowaach e bęze staowło stotego ograczea, gyż w typowych zaaach eksploracyych wykorzystuących zapytaa agregacye e est to elemet krytyczy la przykłau ak wyże, wyk zaokrągloy o pełych tysęcy złotych est wystarczaący, pommo tego, że wyk okłay moża poać z okłaoścą o eego grosza. Zae są róże metoy wyzaczaa przyblżoych wyków zapytań bazoaowych ag. appromate query processg. Jeo z aprostszych poeść polega a ograczeu zboru aalzowaych aych o pewe reprezetatywe próbk. Próbka taka powa zachowywać parametry statystycze całe populac aych p. śrea, waraca, skośość. Wówczas wyk takch zapytań, ak przykłaowo wyzaczae wartośc śrech la pewego atrybutu, bęą barzo poobe, ak aalogcze zapytaa kerowae o całe populac aych. Próbkowae est węc rozaem reukc lczośc aych ag. umerosty reucto, stace selecto, eample

selecto [Ha06]. Ie poeśce zakłaa, że wyzaczae są swego rozau streszczaa ag. syopss czy też posumowaa aych. Aby wylczyć te posumowaa ależy przerzeć wszystke zgromazoe ae, eak czyość ta wykoywaa est tylko raz, lub też co pewe okres czasu, gy p. zme sę zacząco charakterystyka aych. Posumowaa te mogą być buowae z wykorzystaem p. techk hstogramów [Ioa99], falek ag. wavelets [Vt99] lub też statystyczych cech aalzowaych aych [Sha99]. W tym ostatm wykorzystyway est aparat statystycze aalzy aych, którego lteratura przemotu est barzo bogata przykłaowo moża wymeć tu prace [om04, ocw08, lo99], które maą charakter przegląowy. Warto zapozać sę róweż z obszerym tutoralem [GaG0], gze autorzy omawaą wszystke aważesze zagaea z zezy przyblżoych zapytań o baz aych. W przypaku poeśca statystyczego, przee wszystkm ależy wyzaczyć rozkła prawopoobeństwa aych [om04, lo99]. Zaąc go, możlwe est przyblżoe barzo szybke wyzaczae wartośc takch fukc agreguących ak lczość, suma, wartość śrea poobe [Sha99]. Dae mogą posaać rozkła prawopoobeństwa, który moża opsać pewą fukcą aaltyczą p. rozkła ormaly, lub też ops tak e bęze możlwy. W tym rugm przypaku ależy go wyzaczyć korzystaąc z meto eparametryczych, p. opartych o tzw. estymatory ąrowe. lasycze pozyce, które te temat omawaą barzo obszere to [WaJo95, Sl86, Sm96]. Perwsza z ch ae barzo okłay wykła w moco zmatematyzowae postac. Pozostałe we pozyce są apsae użo barze przystępe. W ęzyku polskm ukazała sę ksążka [ul05], gze poao w przystępe forme aważesze formace o estymatorach ąrowych, główe w kotekśce wyzaczaa z ch pomocą gęstośc prawopoobeństwa. W pracy [She04] w sposób przystępy zwarty poao postawowe formace a temat eparametrycze estymac fukc gęstośc prawopoobeństwa. Ostatecze, w ee z wcześeszych prac autorów a te temat [GrGr0] poao w skrótowe postac aważesze formace o stoce gęstośc prawopoobeństwa, estymatorach ąrowych służących o e wyzaczaa oraz zwązku gęstośc prawopoobeństwa z zapytaam kerowaym o baz aych. Wyzaczae gęstośc prawopoobeństwa metoam eparametryczym est zaaem czasochłoym oblczeowo, główe za sprawą koeczośc wyzaczea parametru wygłazaa. Isteą geerale trzy postawowe grupy meto ego wyzaczaa: metoy przyblżoe ag. ormal referece rules, postaweń ag. plug- oraz walac krzyżowe ag. cross-valato. Dwe ostate metoy wymagaą ość użych akłaów oblczeowych, przez co zastosowae ch la wększych zborów aych est barzo czasochłoe. Są to eak metoy użo okłaesze o meto przyblżoych latego ch zastosowae est preferowae. W przypaku metoy postaweń uproszczee polega a przyęcu założea o ormalośc rozkłaów przy wyprowazau pewych szczegółowych wzorów [WaJo95, stroa 7], mmo że rozkłay w rzeczywstośc przeceż ormale e są gyby były ormale, e byłoby potrzeby estymac gęstośc za pomocą meto eparametryczych. W przypaku metoy walac krzyżowe zamast oblczać pewe barzo czasochłoe sumy a aych weścowych, wcześe okoue sę opowee trasformaty Fourera tych aych [Sl86, stroa 65]. W przypaku waratów tych meto omawaych w esze publkac, wyże opsae optymalzace e są eak stosowae... Oblczea ogólego przezaczea a kartach grafczych Wększość prac aukowych pośwęcoych ogólym oblczeom a procesorach kart grafczych Geeral Processg o Graphcs Processg Uts GPGPU est pośwęcoych takm zagaeom ak: zaawasowae geerowae obrazów, przetwarzae obrazów p. kompresa, ślezee cech oraz oblczea aukowe symulaca, oblczea umerycze. Newele publkac otyczących GPGPU est pośwęcoych ogóle poętym zaaom wykoywaym, bąź zwązaym z bazam aych. Z tych publkac, które powstały, uża część otyczy wyaego sortowaa [GG06, GZ06] lub optymalzac typowych operac w bazach aych proekca,

selekca tp. [SAA03, GLW04]. arty grafcze są róweż wykorzystywae o akcelerac kompres ekompres eksów btmapowych [AWr0a, AWr0b]. Wśró ych zastosowań kart grafczych w bazach aych zaue sę eksploraca aych. Powstały tuta męzy ym publkace otyczące grupowaa aych, w tym: grupowaa metoam k-meas [GV05, CTZ06] k-meos [A07, Aa0], grupowaa w oparcu o aalzę gęstośc [BNP09a, BNP09b] oraz grupowaa herarchczego [CO09]. Zgoe z aszą wezą, e opracowao ak otą żaych rozwązań wykorzystuących procesory kart grafczych o optymalzac przyblżoych algorytmów realzac zapytań agregacyych. 3. Wyzaczae parametru wygłazaa estymatorów ąrowych Poże poaemy, praktycze bez kometarzy akchkolwek obaśeń, proceury wyzaczaa parametrów wygłazaa wspomaą wcześe metoą postaweń oraz walac krzyżowe okłae: walac krzyżowe ameszych kwaratów, ag. least squares crossvalato, LSCV. Przytaczamy e w forme, którą poae pozyca [ul05], zmeaąc eak czasam pewe ozaczea, aby były barze zgoe z tym, które poawaą sę w agloęzycze lteraturze przemotu główe wzoruąc sę a klasycze pozyc [WaJo95]. Proceury te moża uważać za gotowe o użyca wzorce. 3.. Wyzaczae parametru wygłazaa metoą postaweń PLUG-IN Ozaczea: lość próbek, k= rzą metoy,. Oblcz wartość estymatora warac: f r r r ˆ V.. Oblcz wartość estymatora ochylea staarowego: ˆ Vˆ. 3. Oblcz estymatę NS ˆ 8 fukcoału 8 : 05 ˆ NS 8.3 9 3 ˆ 4. Oblcz wartość parametru wygłazaa estymatora ąrowego g fukc 6 0 g ˆ NS 8 6 5 0 /9 4 f : 5. Oblcz estymatę ˆ 6 g fukcoału 6 : ˆ 6 6 g 7 g g.5 6 6 5 4 45 5 e.4.6

6. Oblcz wartość parametru wygłazaa estymatora ąrowego g fukc f : 7 / 6 4 ˆ 0 g g.7 3 0 4 7. Oblcz estymatę ˆ 4 g fukcoału 4 : g g g 4 5 4 ˆ.8 4 4 3 6 e.9 8. Oblcz wykową wartość współczyka wygłazaa h: 5 / 4 ˆ g R h.0 R 3.. Wyzaczae parametru wygłazaa metoą walac krzyżowe LSCV Ozaczea: lość próbek, wymarowość zaaa, umer elemetu próby =, umer wymaru =. Oblcz macerz kowarac: Nech ae weścowe bęą mały astępuącą postać: X,,,,,,,,,, Macerz kowarac ma postać:,,,,,,. gze: warace poszczególych wymarów baae zmee losowe,, kowarace męzy zmeym losowym oraz.,,.

,,,,,.3. Oblczyć wyzaczk macerzy kowarac et :. 3. Oblczyć macerz owrotą o :. 4. Wyzaczyć postać fukc celu, która polegać bęze mmalzac wzglęem ezaego szukaego parametru h. Poże wprowazamy astępuącą otacę: gze,, ozaczaą kolee współrzęe -wymarowego wektora. R h T h h g,.4 * T.5 T / ep et.6 T / 4 ep et 4 *.7 5. Oblczyć przyblżoą wartość parametru h: 4 / 0 ' ' f R R h.8 / R / ' ' f R 6. Nech zakres poszukwaa mmum fukc gh wyos: 0 0 4 4, / h h h Z o.9 wówczas rozwązaem est: m arg 0 h g h Z h.0 Poeważ fukca.4 ma zwykle ość łagoy przebeg, zalezee e mmum e est zaaem truym. Ne są zatem stosowae tuta żae wyszukae algorytmy zaowaa mmum fukc. Zamast tego, wyberaa est pewa lczba rówooległych wartośc z zezy poszukwaa.9, a astępe wartość fukc.4 est oblczaa la każe z tych wartośc. Namesza otrzymaa wartość est przymowaa za e rzeczywste mmum. Zwykle puktów, la których ależy wyzaczyć wartość fukc.4 e est węce ż 00-00. Gyby z akegoś powou okazało sę, że wyzaczae wartośc fukc.4 w tylu puktach może trwać zbyt ługo a może tak być, gy oblczea wykoywae są la rzeczywśce użych lośc aych moża użyć p. metoy złotego pozału. Szczegóły moża zaleźć p. w pracy [ul05].

4. Platforma CUDA W esze sekc przestawoo krótk ops platformy CUDA archtektury sprzętowe kart NVIDIA. Za wzglęu a szerokość zagaeń zwązaych z psaem programów a karty grafcze, ops te est moco uproszczoy zawera eye formace koecze o zrozumea zasaośc przestawoych w esze publkac rozwązań. CUDA ag. Compute Ufe Devce Archtecture, to uwersala archtektura procesorów welorzeowych służących o oblczeń rówoległych opracowaa przez frmę NVIDIA la swoch kart grafczych. Wykorzystae CUDA możlwe est zęk ystrybuowaemu przez NVIDIA paketow programów CUDA toolkt, a który skłaa sę profler, ebugger oraz komplator omay ęzyka C azywae C for CUDA. Postawową zaletą programów zamplemetowaych w C for CUDA est możlwość uruchomea barzo uże lczby wątków wykouących poobe, bąź etycze operace a różych aych weścowych. Operace te są efowae przez specalą fukcę, tzw. kerel. Day kerel może zostać uruchomoy w welu wątkach zorgazowaych w tzw. satkę oblczeń ag. gr. Satka oblczeń est wuwymarową tablcą o maksymalych wymarach 6553565535 tzw. bloków. aży blok est eo-, wu- lub trówymarową tablcą wątków maksymale 5 wątków. aży blok w ramach ee satk oblczeń ma take same rozmary. aży wątek uruchomoy w ramach satk oblczeń może oczytać swoe położee w bloku poprzez preefowaą zmeą threai, oraz położee swoego bloku w satce poprzez preefowaą zmeą blocki. Te we współrzęe pozwalaą a eozaczą etyfkacę każego uruchomoego wątku. Możlwe est róweż oczytae wymarów satk poprzez zmeą grdm oraz wymarów bloku poprzez zmeą blockdm. Sychrozaca wątków w satce est barzo uproszczoa, możlwa eye w ramach wątków zawartych w eym bloku. Ne est możlwa sychrozaca pomęzy wątkam umeszczoym w różych blokach, choć steą metoy obeśca tego problemu. aży wątek może korzystać z welu różych rozaów pamęc. aży roza pamęc est charakteryzoway przez e welkość, czas ostępu, zasęg ostępu czas życa ak ługo ae w e przechowywae są ostępe. Poże przestawoo krótk ops każego z ostępych rozaów pamęc: pamęć globala uża pamęć, o czase życa aplkac ae umeszczoe w te pamęc są usuwae po zakończeu aplkac, ostępa la każego wątku w owolym bloku, ale o ość ługm czase ostępu wyoszącym ok. 400-600 taktów zegara, pamęć współzeloa ewelka pamęć o czase życa bloku zakończee załaa bloku powoue usuęce aych w e przechowywaych, ostępa la każego wątku w bloku la którego est eykowaa, o barzo krótkm czase ostępu, pamęć stałych ewelk fragmet pamęc globale, który est cache-oway, przez co ostęp o ego est barzo szybk. Jest oa tylko o oczytu. Czas życa pamęc stałych oraz e ostępość est taka sama ak pamęc globale, reestry ewelka, barzo szybka pamęć o czase życa wątku po zakończeu wątku ae z reestrów są usuwae. Tylko ee wątek może w aym momece korzystać z aego reestru, pamęć lokala pamęć tekstur poobe ak w przypaku pamęc stałych, są to eykowae fragmety pamęc globale. Pamęć lokala est wykorzystywaa o przechowywaa aych lokalych wątku, które e meszczą sę w reestrach, a pamęć tekstur posaa specyfcze metoy aresowaa cachowae specyfcze la zastosowań Uwaga: w pracy poęce kerel używae est w wóch całkowce różych zaczea. W zeze estymatorów ąrowych kerelem ąrem przyęło sę azywać pewą fukcę matematyczą, maącą pewe określoe właścwośc służącą o kostrukc właścwego estymatora. Natomast w zeze zwązae z archtekturą CUDA kerelem est fukca apsaa w ęzyku C for CUDA, która może zostać uruchomoa a GPU.

grafczych. Obywa te rozae pamęc e są wykorzystywae w rozwązaach przestawoych w esze publkac. Przyęta buowa satk oblczeń est moco zwązaa ze sprzętową archtekturą kart grafczych frmy NVIDIA. Procesor GPU skłaa sę z welu obece o o 30 multprocesorów strumeowych ag. streamg multprocesor, w skróce SM, z których każy zawera 8 procesorów skalarych ag. scalar processor, w skróce SP. aży procesor skalary posaa włase reestry oraz eostk oblczeń całkowtych zmeoprzeckowych poeycze precyz. Prócz tego każy multprocesor posaa we eostk o zaań specalych, eostkę steruącą oraz ewelką szybką pamęć a krzeme, która przechowue ae z pamęc współzeloe opsae wcześe. Pamęć globala, to obszar pamęc przechowyway w pamęc zauące sę poza GPU, aczęśce a same karce grafcze, w postac osobych ukłaów. Nektóre GPU posaaą SM z oatkową eostką o oblczeń powóe precyz, ale tylko eą a cały SM. Co węce mechazmy ostępu o pamęc a GPU są zoptymalzowae a oczytywae aych 3-btowych p. lczb poeycze precyz. Z oblczeń powóe precyz ależy zatem korzystać tylko w ostateczośc. Staow to pewe ograczee w ektórych zastosowaach. Przy oblczau współczyka wygłazaa eak e ma to użego zaczea la referecyych zestawów aych o zaych wartoścach h otrzymao praktycze etycze wyk. Należy sę róweż spozewać, że wraz z rozwoem techolog kart grafczych, poaw sę wyaa obsługa oblczeń powóe precyz. Przestawoe w esze publkac rozwązaa powy sę wówczas w ość łatwy sposób ać zmoyfkować w celu wykorzystaa zwększoe okłaośc oblczeń. ey aplkaca uruchama satkę oblczeń zwązaą z aym kerelem, blok z satk są automatycze ystrybuowae pomęzy multprocesory. aży multprocesor może wykoywać współbeże wele bloków, ale ee blok może być uruchomoy tylko a eym multprocesorze. ey wszystke wątk z aego bloku zakończą sę, koley blok uruchamay est a zwoloym multprocesorze. Multprocesor wykoue kolee wątk w grupach skłaaących sę z 3 wątków, tzw. warpów. Wyróża sę róweż half-warpy, czyl perwsze, lub ruge 6 wątków w ramach warpa. Wszystke polecea w wątkach zawartych w eym warpe wykoywae są sychrocze cztery ćwartk warpa po kole a 8 procesorach skalarych multprocesora. Pamęć współzeloa pozeloa est a 6 baków. olee 3-btowe słowa z pamęc są przyzeloe o koleych baków. Rówoczesy oczyt/zaps o pamęc współzeloe est możlwy wtey, gy każy wątek w half-warpe wykoue ostęp o ego baku. Wyątkem est tuta sytuaca, gy wele wątków oczytue z pamęc współzeloe okłae tą samą wartość ale e róże wartośc ostępe przez te sam bak. Istee wówczas możlwość, ż taką grupę wątków obsłuży mechazm rozgłaszaa bęze to rówoczesy, wyay oczyt. Wyay ostęp o pamęc globale zarówo oczyt ak zaps est możlwy wtey, gy każy wątek w half-warpe wykoue ostęp o aych zawartych w eym segmece o welkośc 8B w sytuac, gy oczytywae wartośc maą 3 bty. Należy tuta zwrócć uwagę, ż powyższe twerzee est prawzwe tylko la owszych kart grafczych. Starsze karty grafcze maą zacze barze ograczoe schematy wyaego ostępu o pamęc globale. Z powyższego opsu moża wywoskować klka ogólych zasa optymalzac kou psaego a platformę CUDA: a początku kerela ależy przepsywać przetwarzay fragmet aych z pamęc globale o pamęc współzeloe, staraąc sę ukać ostępów poza eym segmetem w ramach eego half-warpa, ukać koflktów w ostępach o baków pamęc współzeloe, ukać wykoywaa różych śceżek kou w ramach eego warpa. Ze wzglęu a sposób wykoywaa koleych strukc we wszystkch wątkach eego warpa przez GPU, każy

wątek w warpe mus wykoywać okłae tą samą strukcę. Jeżel tak e est, wykoae wszystkch alteratywych śceżek kou est seralzowae, przez co est zacze wolesze, uruchamać możlwe użo bloków, żeby wykorzystać wszystke multprocesory, oblczea zmeoprzeckowe wykoywać przee wszystkm a poeycze precyz oblczea powóe precyz wykoywae są obece ze zacze meszą szybkoścą. Z tego też powou wszelke alsze rozważaa otyczące oblczeń a GPU otyczą oblczeń poeycze precyz. Przestawoe w esze publkac rozwązaa stosuą sę o wszystkch powyższych wskazówek. 5. Implemetaca algorytmu PLUG-IN a GPU 5.. Optymalzaca oblczaa estymatora warac Optymalzacę oblczaa wartośc estymatora warac. oparto o rozwązaa przestawoe w [Har] W prezetac te przestawoo wyaą mplemetacę algorytmu reukc agregac eowymarowe tablcy wartośc. Nektóre kerele przestawoe w esze publkac, są prostym moyfkacam kerela przestawoego w [Har] wszystke rozważaa otyczące procesu reukc wprowazoe w [Har] zauą zastosowae róweż tuta. Z tego też powou opsae zostae eye ogóle załae kerel reukuących z uwzglęeem zma specyfczych la oblczaa wartośc koeczych o wyzaczea współczyka wygłazaa. Czytelków zateresowaych zastosowaym optymalzacam mplemetacyym osyłamy o [Har]. Ogóly schemat rówoległe reukc tablcy wartośc w przypaku esze publkac sumy wartośc, przestawoo a rysuku. Na początku tablca zawera 8 różych wartośc. Rówolegle wykoywae są 4 operace sumowaa par wartośc z tablcy. Do każego elemetu z perwsze połowy tablcy, oaway est elemet oległy o ego o połowę ługośc tablcy, p. a rysuku, o elemetu umer oaway est elemet umer 5. Wyk zapsywae są w mescu w orygale tablcy. Proces est powtarzay, ale w każym koleym kroku, zakres oawaych pozyc tablcy est zmeszay o połowę. Ostatecze uzyskwaa est ea wartość, która zawera wyk reukc. 3 A A A 5 A 3A 7 A +A 6 A 3+A 7 A 4 A 5 A 6 A 7 A 0A 4 A A 6 A A 5 A A 6 A 3A 7 A 3A 7 A 4 A 5 A 6 A 7 A 0 A 4 A A 5 A A 6 A 3A 7 A 4 A 5 A 6 A 7 0 A 0 A A A 3 A 4 A 5 A 6 A 7 Rys.. Schemat rówoległe reukc tablcy wartośc

erel reuceerel mplemetuący wyże opsay schemat został przestawoy a lstgu. Istotym la wytłumaczea załaa omawaego kerela est struktura satk oblczeń, la które est o wywoływay. Satka oblczeń skłaa sę z eowymarowych bloków o lczbe wątków bęące potęgą. Ze wzglęu a wyaość, la obecych kart grafczych powo to być 56 lub 5 wątków. Blok w satce są zorgazowae w eowymarową satkę oblczeń. Satka oblczeń powa zawerać tyle bloków, żeby całkowta lczba wątków w werszu te macerzy była rówa połowe lczby wartośc o zsumowaa p. o zsumowaa 8 wartośc powy być uruchome 4 wątk. W sytuac, gy e est możlwe uruchomee tak uże satk, powo zostać uruchomoe maksymale 65535 bloków w werszu satk. ażemu uruchomoemu blokow przyzelay est obszar pamęc współzeloe pozwalaący a przechowae tylu wartośc, le est wątków w bloku. Jak łatwo zauważyć, kerel reuceerel został zamplemetoway ako szablo, którego parametrem est lczba wątków w bloku. Take rozwązae pozwala a zaczą optymalzacę kou a etape komplac patrz [Har]. erel przymue ako parametry: wskaźk a obszar pamęc globale zaweraące ae o zsumowaa g_ata, wskaźk a obszar pamęc globale, o które powy zostać zapsae cząstkowe wyk sumowaa g_oata oraz lczbę sumowaych wartośc. W werszu 3 kerela reuceerel astępue pobrae aresu pamęc współzeloe przyzeloe o bloku, w którym zaue sę wątek. W werszu 5 oblczaa est perwsza z pozyc w tablcy weścowe, którą powe oać aktualy wątek. W werszu 6 oblczaa est lczba wątków w satce oblczeń. Wartość ta est potrzeba późe w celu wykryca ewetualego obsłużea sytuac, gy e było możlwe uruchomee wystarczaące lczby bloków. W werszu 7 przyzeloa pamęć współzeloa est zerowaa. W werszach 8 o 0 każy wątek sumue przyame we wartośc z tablcy weścowe zapsue wyk o pamęc współzeloe. Jeżel okaże sę, że lczba alokowaych wątków est ewystarczaąca, sekwecye oawae są kolee wartośc z reukowae tablcy. Wersz obsługue sytuace, w których e est potęgą wók. W takch przypakach, e każa wartość z tablcy może zaleźć parę o oaa astępue po prostu przepsae tylko ee wartośc bez oawaa. W werszu obywa sę sychrozaca wątków w celu zapewea, aby wszystke pozyce w pamęc współzeloe zostały wypełoe, zam kerel przeze o koleego etapu oblczeń. Wersze 3 o 30 mplemetuą schemat reukc przestawoy a rysuku. Reukca wykoywaa est w całośc w pamęc współzeloe. Wyk reukc zapsyway est o tablcy wykowe, po pozycą o umerze aktualego bloku. Poeważ każy uruchomoy blok wykoue reukcę *blocksze wartośc o ee, może sę okazać, że eorazowe wykoae kerela reuceerel może e być wystarczaące o oblczea całkowte sumy wszystkch wartośc w tablcy eżel wartośc w tablcy est węce ż *blocksze. Aby zapewć pełą reukcę, moża wykorzystać ee z wóch astępuących schematów postępowaa. Perwszy schemat, tzw. eszczący rozpoczya sę o zaalokowaa w pamęc globale wóch tablc pomocczych A B o wymarach pozwalaących pomeścć wyk perwsze reukc. Wyk załaa kerela reuceerel est zapsyway o tablcy A. Jeżel wyk zawera eą wartość, to alsze oblczea e są wykoywae, gyż zalezoy został wyk. W przecwym wypaku tablca A est reukowaa a wyk zapsyway est o tablcy B. Jeżel zachoz koeczość alsze reukc, to tablca B est reukowaa, a wyk z powrotem zapsyway o tablcy A tak ale a przema, aż pozostae tylko ea wartość staowąca wyk reukc. Drug schemat, tzw. szczący wykorzystue tylko eą tablcę pomocczą A. Postępowae est aalogcze, ak w schemace eszczącym, ale rolę tablcy B peł orygala tablca z aym weścowym. Schemat est zatem szczący, gyż szczy orygale, reukowae ae.. template <usge t blocksze>. vo reuceerelfloat *g_ata, float *g_oata, usge t { 3. eter share float sata[]; 4. usge t t = threai.; 5. usge t = blocki. * blocksze * + t; 6. usge t grsze = blocksze * * grdm.; 7. sata[t] = 0.0f;

8. whle + blocksze < { 9. sata[t] += g_ata[] + g_ata[ + blocksze]; += grsze; 0. }. f < { sata[t] += g_ata[]; }. sycthreas; 3. f blocksze >= 5 { f t < 56{ sata[t] += sata[t + 56]; } 4. sycthreas; 5. } 6. f blocksze >= 56 { f t < 8{ sata[t] +=sata[t + 8]; } 7. sycthreas; 8. } 9. f blocksze >= 8 { f t < 64{ sata[t] +=sata[t + 64]; } 0. sycthreas;. }. f t < 3 { 3. volatle float* smem = sata; 4. f blocksze >= 64 smem[t] += smem[t + 3]; 5. f blocksze >= 3 smem[t] += smem[t + 6]; 6. f blocksze >= 6 smem[t] += smem[t + 8]; 7. f blocksze >= 8 smem[t] += smem[t + 4]; 8. f blocksze >= 4 smem[t] += smem[t + ]; 9. f blocksze >= smem[t] += smem[t + ]; 30. } 3. f t == 0 g_oata[blocki.] = sata[0]; 3. } Lstg. erel reuceerel służący o proste reukc sumowaa elemetów tablcy erel reuceerel wykorzystyway est o zarówo o oblczea sumy wartośc wektora X, ak sumy kwaratów wartośc wektora X, które to sumy są koecze o oblczea estymatora warac.. Do oblczea tych sum wykorzystyway est kerel reuceerel pracuący w schemace szczącym, oraz kerel geeratearrays, przestawoy a lstgu. Na początku alokowae są w pamęc globale we tablce o rozmarze. Następe uruchamay est kerel geeratearrays, którego zaaem est przepsać o perwsze z tych tablc orygale wartośc wektora X, a o ruge, kwaraty wartośc wektora X. Satka oblczeń la tego kerela powa być eowymarowa skłaać sę z maksymale użych, eowymarowych bloków 56 lub 5 wątków. Lczba bloków w satce powa być taka, żeby lczba uruchomoych wątków była wększa lub rówa. erel geeratearrays ako parametry przymue wskaźk o 3 obszarów pamęc globale: tablca z wartoścam wektora X, out tablca tymczasowa, o które przepsywae są ae z tablcy, oraz out tablca tymczasowa, o które zapsywae są kwaraty wartośc z tablcy. Ostatm parametrem kerela est wartość, czyl ługość wektora X. W werszu 3 kerel oblcza pozycę w tablcy weścowe, którą ma przewarzać aktualy wątek. Jeżel pozyca ta e wychoz poza tablcę weścową, to w werszu 5 poberaa est o reestru wartość z tablcy, a astępe est oa zapsywaa po ewetualych moyfkacach to tablc out out w werszach 6 7.. global vo geeratearraysfloat *,float *out,float *out,. usge t { 3. usge t = threai. + blocki. * blockdm.; 4. f < { 5. float = []; 6. out[] = ; 7. out[] = * ; 8. } 9. } Lstg. erel geeratearrays służący o przygotowaa aych przy oblczau estymatora warac

Po zakończeu załaa kerela geeratearrays, kerel reuceerel pracuący w schemace szczącym wykorzystyway est o oblczea sum wartośc w wygeerowaych tablcach. Uzyskae w te sposób sumy są wykorzystywae o oblczea wartośc estymatora warac. 5.. Optymalzaca oblczaa estymat.5 oraz.8 oleym czasochłoym etapem algorytmu PLUG-IN, est oblczee estymat.5 oraz.8, a w szczególośc powóych sum, które tam sę zauą powouą oe, że złożoość oblczeowa algorytmu est a pozome O. Jak łatwo zauważyć, w obywu przypakach choz o oblczee sumy wartośc pewe fukc, które ako parametr przekazywae są różce wóch wartośc z wektora X. Schemat oblczea tych sum est zatem w obywu przypakach tak sam. Z te przyczyy przestawoy zostae eye ops oblczaa sumy wartośc fukc.6, a późe wskazae zostaą proste moyfkace, które ależy wprowazć, aby oblczaa była suma wartośc fukc.9. W celu oblczea sumy wartośc fukc.6 wykorzystyway est zmoyfkoway kerel reuceerel o azwe reuce6erel patrz lstg 3. erel przymue ako parametry: wskaźk o obszaru pamęc globale g_ata, w którym zauą sę wartośc wektora X, wskaźk o obszaru pamęc globale g_oata, o którego zapsae zostaą cząstkowe wyk oawaa, wartość eltay, które zaczee zostae opsae późe chwlowo ależy przyąć założee, że eltay=0, wartość g oraz wartość, czyl lczba wartośc w wektorze X. Jak łatwo zauważyć, kerel reuce6erel est barzo pooby o reuceerel. Różce poawaą sę w pętl w werszu 0 w powązaym z ą warukem w werszu oraz w zapse wyków oblczeń w werszu 5. Poawa sę róweż oatkowe pobrae aych w werszu 8. Aby zrozumeć załae eszego waratu kerela służącego o reukc aych, koecze est uprzee pozae satk oblczeń, w ake kerel te powe załać. Satka oblczeń powa być wuwymarowa, z eowymarowym blokam o maksymale lczbe wątków poobe ak w przypaku kerela reuceerel. Lczba bloków w poeyczym werszu satk powa być oblczaa w tak sam sposób, ak w przypaku kerela reuceerel. Lczba bloków w kolume satk powa być rówa, a w sytuac, gy >65535, to wtey powa wyosć okłae 65535. Przypaek te zostae opsay późe. Chwlowo ależy przyąć założee, że <=65535. A zatem, ak zała kerel reuce6erel? W werszu 8 kerela poberaa est wartość z wektora X o umerze opowaaącym umerow wersza bloków w satce, w którym zaue sę aktualy wątek. Pobraa wartość wykorzystywaa est w pętl w werszu 0 o oblczea parametru fukc k6 staowące mplemetacę fukc.6 patrz lstg 4. W omawae pętl, postawową różcą w stosuku o e orygale postac est to, ż oawae są wartośc fukc k6, zamast ezmoyfkowaych wartośc oczytaych z tablcy, ak to było w orygale postac kerela. Moża tuta róweż zauważyć, że o oczytaych z pamęc globale wartośc wektora X oemowaa est wartość zapsaa w zmee pobraa w werszu 8. Co węce, pozyce oczytywaych wartośc w werszu 0 zależą tylko o położea wątku w werszu bloków. Moża zatem zauważyć, że kerel reuce6erel, realzue schemat reukc przestawoy a rysuku w każym werszu satk ezależe, ale sumowae są wartośc fukc k6, a e orygale ae. Co węce, w każym werszu satk oblczaa est suma wartośc fukc k6, które parametr est oblczay a postawe e wartośc. W werszu 5 a postawe położea aktualego bloku w satce oblczaa est pozyca w tablcy wyścowe, o które ależy zapsać częścową sumę oblczoą w ramach bloku, a astępe oblczoa suma częścowa est tam zapsywaa. Uzyskae w opsay powyże sposób częścowe sumy moża astępe zreukować o poeycze wartośc stosuąć kerel reuceerel w schemace szczącym. Pozostae eye problem z sytuacą, w które >65535. Wówczas e est możlwe uwzglęee w eym wywołau kerela reuce6erel wszystkch wartośc. Należy zatem wywołać te kerel welokrote w pętl. Aby ukąć powtórzea oblczeń, ależy przypsać o parametru eltay lczbę perwszych wartośc, które ależy pomąć.

. template <usge t blocksze>. global vo reuce6erelfloat *g_ata, float *g_oata, 3. usge t eltay, float g, usge t { 4. eter share float sata[]; 5. usge t t = threai.; 6. usge t = blocki. * blocksze * + t; 7. usge t grsze = blocksze * * grdm.; 8. float =g_ata[blocki.y + eltay]; 9. sata[t] = 0.0f; 0. whle + blocksze < { sata[t] += k6g_ata[] - / g + k6g_ata[ + blocksze] - /g; += grsze; }. f < { sata[t] += k6g_ata[] - / g; }. sycthreas; 3. f blocksze >= 5 { f t < 56 {sata[t] += sata[t + 56];} sycthreas; } 4. f blocksze >= 56 { f t < 8 {sata[t] += sata[t + 8];} sycthreas; } 5. f blocksze >= 8 { f t < 64 {sata[t] += sata[t + 64];} sycthreas; } 6. f t < 3 { 7. volatle float* smem = sata; 8. f blocksze >= 64 smem[t] += smem[t + 3]; 9. f blocksze >= 3 smem[t] += smem[t + 6]; 0. f blocksze >= 6 smem[t] += smem[t + 8];. f blocksze >= 8 smem[t] += smem[t + 4];. f blocksze >= 4 smem[t] += smem[t + ]; 3. f blocksze >= smem[t] += smem[t + ]; 4. } 5. f t == 0 g_oata[blocki. + grdm. * blocki.y + eltay]= ata[0]; 6. } Lstg 3. erel reuce6erel służący o częścowego zsumowaa wartośc fukc.6 Jak wspomao wcześe, fukca k6 przestawoa a lstgu 4 est prostą mplemetacą fukc.6. rótk kometarz o te fukc est eak ezbęy. Po perwsze ależy wspomeć o wartośc k_coeff występuące w werszu 3. Jest to zefowaa globale stała o wartośc /. Po ruge ależy róweż zazaczyć, ż weloma występuący w efc fukc.6 został przekształcoy o postac, która wymaga wykoaa mesze lczby operac matematyczych.. evce float k6float {. float = * ; 3. retur k_coeff * ep-0.5f * * * * - 5.0f + 45.0f - 5.0f; 4. } Lstg 4. Fukca k6 oblczaąca wartość fukc.6 Ostatą rzeczą, którą ależy omówć, est oblczae sumy wartośc fukc.9. Oblczae te sumy przebega aalogcze ak w przypaku sumy wartośc fukc.6. oecze est eye przygotowae kerela prawe etyczego z reuce6erel, w którym parametr g zastąpoo parametrem g, a wszystke wywołaa fukc k6, wywołaam fukc k4 patrz lstg 5. Weloma w fukc k4, poobe ak w przypaku fukc k6, róweż został przekształcoy o postac, w które wymagae est me oblczeń.

. evce float k4float {. float =*; 3. retur k_coeff * ep-0.5f * * * - 6.0f + 3.0f; 4. } Lstg 5. Fukca k4 oblczaąca wartość fukc.9. 6. Implemetaca algorytmu LSCV a GPU 6.. Optymalzaca postawowego algorytmu Oblczee wzoru.4 est barzo kosztowe ze wzglęu a koeczość welokrotego oblczea wartośc fukc T wzór.5 la różych parametrów. Oblczee fukc.5 róweż wymaga ość uże lczby operac. Ne lcząc operac stałych, które trzeba wykoać zawsze, la oblczea wzoru.4, koecze est wykoae loczyu T Σ, który wymaga wykoaa + możeń -+ oawań. Oblczee ee wartośc wzoru.4 wymaga -/ wylczeń wartośc fukc.5. Jak łatwo zatem zauważyć, koszt oblczea wzoru.4 est zaczy. Możlwa est eak optymalzaca pozwalaąca a zacze zmeszee tego kosztu. Rozważmy poowe wzór.6: ep et / Jak łatwo zauważyć ze wzoru.4, wektor zawsze ma postać, y, / h gze y Moża zatem zapsać owy warat fukc w astępuące postac: y,, h / / ep et ep et h T y h T, y T, y, h y,,. 3. Nech T Y, y, y,, 3. wówczas:,, h ep Y /, et h 3.3 W aalogczy sposób moża zmoyfkować postać fukc : *,, h ep Y /, 4 et 4 h 3.4 Propaguąc zmay o wzorów.5 oraz.4 moża uzyskać: T,, h *,, h,, h 3.5 g h T,, h R 3.6 h, Jak łatwo zauważyć, wartośc 3. są skalaram, a co węce, są oe stałe, ezależe o wartośc parametru h, la które oblczaa est wartość fukc.4. Pozwala to a eorazowe oblczee wartośc 3. a początku załaa algorytmu welokrote ch wykorzystywae a etape szukaa mmum fukc.4.

Nabarze czasochłoym operacam zmoyfkowae wers algorytmu LSCV są: oblczae wartośc 3. oraz welokrote oblczae wartośc.4. Pozostałe operace, take ak: oblczee macerzy kowarac, e owrotośc oraz wyzaczka, la ewelkch wartośc, zamue tak mało czasu, że próba ch przyspeszea za pomocą GPU e ae żaych zauważalych zysków. 6.. Optymalzaca oblczaa wartośc 3. Przyęte tuta rozwązaa oparte są o pomysły z publkac [CO09] pośwęcoe grupowau obektów a platforme CUDA. Przestawoo tam męzy ym metoę wyaego oblczaa macerzy współczyków korelac Pearsoa pomęzy każą parą wektorów z zaaego zboru wektorów. Przestawoe tam rozwązae est eak a tyle ogóle, że pozwala oo a oblczee macerzy wartośc szeroke klasy fukc wóch wektorów. Moyfkaca rozwązań z publkac [CO09] przestawoa poże uwzglęa 3 oatkowe czyk pozwalaące a oatkowe optymalzace, w przypaku oblczaa macerzy wartośc 3.: macerz wartośc 3. est macerzą trókątą pozwala to a ograczee lczby oblczaych wartośc zmeszee lczby wątków koeczych o uruchomea, koleość wartośc Y, w tablcy wykowe est oboęta. Ne mus być to awet tablca welowymarowa, wartośc są ewelke, przez co moża ograczyć lczbę ektórych epożąaych kostrukc ęzykowych, które zmeszaą wyaość. Przestawoe przez as rozwązae pozwala a przetwarzae macerzy aych la =,,,6 choć rozszerzee go la wększych wartośc e est true. Ogóly schemat oblczaa wartośc 3. przestawoo a rys.. Nech bęze aa wartość se. Rysuek zakłaa, ż =se la obecych kart grafczych rekomeowaa est wartość se=6, oraz że est welokrotoścą sze. Barze ogóle sytuace zostaą omówoe późe. q l X Rys. 3. Schemat oblczaa wartośc Y, Ogóly pomysł a wyae oblczae wartośc Y,, przestawoy a rysuku 3 wygląa astępuąco. Na karce grafcze uruchamaych est wele bloków wątków, każy z ch

skłaaący sę z se wątków. Wątk w bloku uorgazowae są w kwaratową macerz o boku se każy wątek za swoe położee w bloku. ażemu blokow przyzelae są we lczby l=0../se- oraz q=0../se-. aży blok posaa ą kombacę tych wóch wartośc. Lczby l oraz q są umeram kwaratowych fragmetów macerzy X, tak ak zostało to pokazae a rysuku 3. waratowy fragmet macerzy o umerze l skłaa sę z kolum, aalogcze w przypaku q. Dla każego bloku alokoway est l* se, l* se, l* se se obszar pamęc współzeloe wystarczaący o przechowaa wóch kwaratowych macerzy o boku se. Wątk w każym bloku maą wa zaaa. Perwszym zaaem est pobrae z pamęc globale kwaratowych pomacerzy macerzy X wskazaych przez wartośc l oraz q, o pamęc współzeloe przyzeloe o bloku, w którym zauą sę wątk. Operaca ta zlustrowaa est przez szare strzałk a rysuku 3. ey wszystke wątk zakończą kopowae aych o pamęc współzeloe, oblczaą oe wartośc kwaratowego fragmetu macerzy wyścowe: wątek, o współrzęych t,ty w bloku, któremu przyzeloo wartośc l oraz q, oblcza poszukwaą wartość fukc wektorów l* set q * sety wykorzystuąc ae zapsae w pamęc współzeloe. Opsay powyże schemat pozwala a oblczee macerzy kwaratowe wartośc fukc każe warac wóch wektorów kolum z macerzy X. Należy eak zauważyć, ż wartośc 3. wystarczy oblczyć la każe kombac wóch wektorów z macerzy X macerz wartośc 3. est trókąta. Aby ograczyć lczbę epotrzebych oblczeń, blok uruchamae są zgoe ze schematem przestawoym a rysuku. Rysuek, w celu zwększea czytelośc, zakłaa, ż se=4 a =0. Jak moża zobaczyć a rysuku, uruchamae są eye take blok, la których kombaca wartośc l q umeszcza wyk ch pracy w olym trókące macerzy wykowe. Moża róweż zauważyć, ż ewelka część wątków bęze w alszym cągu oblczać wartośc a powyże przekąte macerzy. W tych elczych przypakach oblczoe wartośc są gorowae. 0 q 0 3 4 l 3 4 Rys.. Ilustraca położea uruchamaych wątków w macerzy z wykam oblczeń erel fep mplemetuący wyże opsae rozwązaa został przestawoy a lstgu 6. Jak łatwo zauważyć, kerel został zamplemetoway w postac szablou fukc. Parametram szablou są wartośc se e obowązue uż założee, ż =se oraz, że est welokrotoścą se. Przyęto take rozwązae, poeważ a obecych kartach grafczych se zawsze powo wyosć 6, a opuszczale wartośc muszą być mesze lub rówe se. Umożlwa to proste wylczee wszystkch poprawych stac tego wzorca est ch 6, po ee la każe wartośc wybór opowee za pomocą kostrukc swtch. Zaomość wartośc se a etape komplac pozwala komplatorow w zaczym stopu zoptymalzować ko p. rozwąć pętle. erel, ako parametry formale przymue: wskaźk a obszar pamęc globale, w które zapsao macerz X parametr ata, wskaźk a obszar pamęc globale, o

które ależy zapsać wyk oblczeń out oraz wartość. erel zakłaa, ż ae weścowe macerz X są umeszczoe w eowymarowe tablcy, werszam:,,,,,,,,,,,,,,,,. Obszar pamęc wskazyway przez out to eowymarowa tablca o ługośc -/. W werszach 3,4 5 astępue pobrae aresu pamęc współzeloe przyzeloe o bloku w którym zaue sę wątek, oraz określee początków obszarów te pamęc o których możlwe est zapsae perwsze ruge kwaratowe pomacerzy. Aresy tych obszarów zapsywae są o zmeych Ml oraz Mq. W werszach 6, 7 8 astępue oblczee wartośc l oraz q. Przyęte tuta rozwązae umerowaa bloków est estaarowe wymaga wytłumaczea. Wyka oo z wóch czyków: e est możlwe stworzee olotrókąte satk oblczeń, a zatem e est możlwe wykorzystae blocki. blocki.y ako l q, możlwe est ustalee opowech współrzęych l oraz q a postawe umeru bloku, eżel są oe umerowae sekwecye, ale wówczas lczba możlwych o uruchomea bloków est zbyt ograczoa tylko 65535 bloków. Drug ze wspomaych czyków moża rozwązać uruchamaąc prostokątą satkę oblczeń, o opowee lczbe bloków, przelczyć wuwymarowe położee bloku w satce a ego eowymarowy umer. Uszczegółowaąc, moża powezeć, ż kerel fep powe być uruchamay w satce o owolych wymarach, tak ługo, ak lczba bloków w satce est rówa, lub wększa o, ale blska / se * / se /. aży blok powe być eowymarowy zawerać se wątków. Wracaąc o opsu kerela, lowy umer bloku oblczay est w werszu 6 zapsyway o zmee b. Wartośc l oraz q oblczae są astępe a postawe b w werszach 7 8. Wersze te mplemetuą wzory: 8b 9 3 l l l q b Wyprowazee powyższych wzorów est proste e zostało umeszczoe w esze publkac. Wytłumaczea wymaga eye fukca celsquareroot wykorzystaa w werszu 7. Je ko przestawoo a lstgu 7. Zaaem te fukc est oblczee perwastka lczby przekazae ako parametr ukęca eokłaośc oblczeń, w przypaku, key parametr est kwaratem lczby całkowte. W werszach 9 0 astępue określee współrzęych wątku w bloku, a postawe ego eowymarowego umeru. Alteratywe moża po prostu alokować o razu blok wuwymarowe o opowech wymarach. W werszach oblczae są pozyce początkowe kwaratowych pomacerzy macerzy X w tablcy ata. W werszach 3 4 cowae są zmee pomoccze, wykorzystywae poczas oblczaa wartośc 3.. W werszach 5 6 astępue przepsae wybraych pomacerzy kwaratowych o pamęc współzeloe. Wykorzystae fukc m w tych werszach gwaratue, ż e zostaą wykoae ostępy o pamęc spoza opuszczalego obszaru. W werszu 7 astępue sychrozaca wszystkch wątków, zęk które gwaratowae est przepsae wszystkch wymagaych aych o pamęc współzeloe zam zostaą wykoae kolee operace kerela. Waruk w werszach 8 9 pozwalaą a wykoywae alsze pracy eye wątkom, które oblczaą wartość 3. z olego trókąta macerzy wersz 8 przetwarzaą ae e wychozące poza macerz X wersz 9. Pętle w werszach o 0 o 6 oblczaą wartość 3. la opowee pary wektorów kolum z macerzy X. W werszu 3 wykorzystywaa est tablca vsgma, która e została wcześe zaeklarowaa, a przekazaa przez parametr. Jest to globala tablca zaweraąca macerz Σ -. W celu optymalzac czasu oblczeń została oa umeszczoa w pamęc stałych. Jak łatwo zauważyć, każy wątek w warpe bęze wykoywać ostęp o te same wartośc pamęc stałych, co est optymalą metoą ostępu o tego typu pamęc [NV0]. Istotym szczegółem, a który ależy zwrócć uwagę est tuta róweż sposób aresowaa pozyc w tablcach Ml Mq umeszczoych w pamęc współzeloe. Ze wzglęu a sposób ułożea macerzy X w pamęc globale, kolee wartośc w tych macerzach, po przepsau aych patrz

wersze 5 6, ułożoe są w astępuący sposób. Perwsze se wartośc, to wartośc z perwszego wersza opowee kwaratowe pomacerzy macerzy X, kolee se wartośc, to wartośc z rugego wersza opowee kwaratowe pomacerzy t. Wyka z tego, że kolee wartośc owole kolumy pomacerzy są ostępe co se wartośc w tablcy. Take ułożee aych umożlwa ostęp o pamęc współzeloe w werszach 3 5, który e powoue koflktów przy ostępe o baków te pamęc. Wyka to z astępuących obserwac. Przy założeu, że se=6, ee half-warp przetwarza ee wersz bloku. Poeważ koflkty mogą wystąpć eye w ramach half-warpa, alsze rozważaa zostaą ograczoe o eego wersza bloku. Jak łatwo zauważyć, kolee wątk w half-warpe bęą mały przyzeloe kolee wartośc t. Jak róweż łatwo zauważyć, t w wyrażeach oblczaących ares w tablcy Ml est oaway ako wyraz woly, bez żaego współczyka. Ozacza to, że kolee wątk w half-warpe wykouą ostępy o koleych wartośc z tablcy Ml, a co za tym ze o koleych baków. Poeważ w half-warpe est 6 wątków, a pamęć współzeloa ma 6 baków, koflkt w ostępe o baków gy e wystąp. Dostęp o tablcy Ml est zatem wyay. Wyawałoby sę atomast, że w przypaku tablcy Mq, wszystke wątk w ramach half-warpa wykouą ostęp o tego samego baku, gyż maą etycze wartośc zmeych p, k ty, które są wykorzystywae poczas oblczaa aresu w te tablcy. Okazue sę eak, że e tylko est to ee bak, ale zawsze okłae te sam ares, a zatem GPU może wykorzystać mechazm rozgłaszaa efektywe pobrać ae z pamęc współzeloe. Wersze 8 9 wykouą zaps wyków oblczeń o tablcy wykowe. Wytłumaczea wymaga wartość correcto oblczaa w werszu 8. Wartość ta, to lczba wątków, które ormale zostałyby zapsae w tablcy wykowe wcześe ż aktualy wątek, ale zostały pomęte gyż oblczały wartośc z przekąte macerzy, bąź z e częśc górotrókąte. W werszu 9, o lowe pozyc w tablcy wykowe, oblczoe a postawe lczby bloków, umeru aktualego bloku umeru aktualego wątku koecze est oęce wartośc correcto, aby wyk zostały zapsae w tablcy wykowe w sposób cągły. Wyprowazee wzoru a correcto moża oprzeć o rysuek. Jak łatwo zauważyć, lczba wątków, w których zostały pomęte oblczea w bloku zauącym sę a przekąte macerzy, wyos zawsze: se se /. Blok take bęą azywae epełym. Pozostałe blok bęą azywae blokam pełym a rysuku są arysowae w całośc a bało. Prze każym pełym blokem w werszu bloków pomęto l se se / wątków po se se / wątków a każy poprze wersz. W przypaku wątków zauących sę w bloku epełym, ależy oatkowo olczyć wątk, które zostały pomęte w poprzech werszach wątków w ramach bloku: ty se ty /. Powyższy wzór a opoweą lczbę wątków moża wyprowazć ze wzoru a sumę szeregu arytmetyczego. Samo wyprowazee est proste e zostało umeszczoe w esze publkac. Obywa wyże opsae wzory są sumowae, przy czym wzór ty se ty / możoy est razy wyrażee q l, które wyos, gy waruek est spełoy obsługway est blok epeły 0 w przecwym wypaku. Zaps te pozwala a ukęce epotrzebych struktur steruących kostrukc f.. template <t se,t >. global vo fepfloat *ata, float* out, t { 3. eter share float base[]; 4. float* Ml=base; 5. float* Mq=base + se * se; 6. t b = blocki. + blocki.y * grdm.; 7. t l = celcelsquarerootb << 3 + 9-3.0f /.0f; 8. t q = b - l * l + >> ; 9. t t = threai. % se; 0. t ty = threai. / se;. t lbeg = l * se;. t qbeg = q * se; 3. float part = 0.0f; 4. float res = 0.0f;

5. Mq[ty * se + t] = ata[mqbeg + t, - + mty, * ]; 6. Ml[ty * se + t] = ata[mlbeg + t, - + mty, - * ]; 7. sycthreas; 8. f qbeg + t < lbeg + ty { 9. f qbeg + t< && lbeg + t < { 0. for t p = 0; p < ; p++ {. part = 0.0f;. for t k = 0; k < ; k++ { 3. part += vsgma[k * + p] * Ml[k * se + t] - Mq[ k * se + ty]; 4. } 5. res += part * Ml[ p * se + t] - Mq[ p * se + ty]; 6. } 7. } 8. t correcto=se * se + * l + q == l * * se - ty + * ty / ; 9. out[threai. + b * blockdm. - correcto] = res; 30. } 3. } Lstg 6. erel oblczaący wartośc Y,. evce float celsquareroott {. float a = sqrtf; 3. retur roua * roua ==? roua : a; 4. } Lstg 7. Fukca oblczaąca perwastek kwaratowy z lczby, ukaąca ektórych błęów oblczeń 6.3. Optymalzaca oblczaa wartośc.4 Nabarze kosztowy etapem oblczaa wartośc.4 la welu różych wartośc h est oblczae opowech sum wartośc fukc 3.5. Sumy te moża oblczyć stosuąc rozwązaa poobe o tych zastosowaych przy oblczau sum wartośc fukc.6, omówoe w sekc 5.. Zaae to est wykoywae przez kerele reucestarerel patrz lstg 8, który oblcza częścowe sumy wartośc fukc 3.5 reucemultrowerel patrz lstg 0, który pozwala a oblczee ostateczych sum wartośc fukc 3.5. Oblczoe za pomocą tych kerel wartośc są astępe przetwarzae przez kerel falzecalc, który oblcza ostatecze wartośc.4. erel reucestarerel przymue ako parametry: wskaźk g_ata a obszar pamęc globale zaweraące wartośc Y, 3., wskaźk g_oata o obszaru pamęc globale, o / które zostae zapsay wyk sumowaa, wartość, wartość C et, wartość / C 4 et, wartość mh mmalą wartość parametru h, la które ma zostać oblczoa wartość fukc.4 oraz wartość step różca pomęzy koleym wartoścam parametru h. Istotym la wytłumaczea załaa omawaego kerela est struktura satk oblczeń, la które est o wywoływay. Satka oblczeń skłaa sę z eowymarowych bloków o lczbe wątków bęące potęgą. Ze wzglęu a wyaość, la obecych kart grafczych powo to być 56 lub 5 wątków. Blok w satce są uorgazowae w wuwymarową macerz. Wersze te macerzy powy zawerać tyle bloków, żeby lczba wątków w werszu te macerzy była rówa połowe lczby wartośc o zsumowaa tuta, połowe lczby wartośc 3.. W sytuac, gy e est możlwe uruchomee tak uże satk, powo zostać uruchomoe maksymale 65535 bloków w werszu satk. Z kole lczba werszy bloków w satce oblczeń powa opowaać lczbe różych wartośc.4 o oblczea. ażemu blokow przyzelay est obszar pamęc pozwalaący a przechowae tylu wartośc le est wątków w bloku. Wersze 3 o 7 maą aalogcze zaczee ak opowaaące m wersze w kerelu reuce6erel. W

werszach 8 9 oblczay est kwarat parametru fukc oblczae fukc.4. Jak łatwo zauważyć, aktuala wartość h oblczaa est a postawe umeru wersza bloków w satce oblczeń. Wyka z tego, ż wszystke wątk w eym werszu satk oblczeń kooperuą w celu oblczea wartośc.4 la ee wartośc h. Wersze 0 o 4 maą aalogcze zaczee ak opowaaące m wersze w kerelu reuce6erel. Tuta eak oblczae są e wartośc fukc 6 a wartośc fukc 3.5 la opowee, wyzaczoe werszem satk oblczeń wartośc h. Wartość 3.5 est oblczaa przez fukcę t_ev patrz lstg 9, która est prostą mplemetacą wzorów omawaych w sekc 5.. Wersze 5 o 33 maą aalogcze zaczee ak opowaaące m wersze w kerelu reuce6erel. W Werszu 34 wyk zapsyway est o tablcy z wykam pośrem. Jak łatwo zauważyć, reukc w wyku załaa eego bloku ulega razy tyle lczb le est wątków w bloku, p. 5 wątków oblczy sumę 04 wartośc 3.5. Tablca wykowa w pamęc globale, wskazywaa przez g_oata zawera zatem częścowe sumy wartośc 3.5 la różych wartośc h. Ze wzglęu a ułożee aych w pamęc, moża tą tablcę traktować ako macerz zapsaą w pamęc werszam, w które wersze opowaaą różym wartoścom h, a kolumy różym zsumowaym zakresom lczb. oecze est zatem zsumowae lczb w każym werszu te macerzy. Do wykoaa takego sumowaa służy kerel reucemultrowerel. erel te est barzo pooby o kerela reucestarerel. Poobe ak poprzeo satka oblczeń powa skłaać sę z eowymarowych bloków o lczbe wątków bęące potęgą. Wersze te macerzy powy zawerać tyle bloków, żeby lczba wątków w werszu te macerzy była rówa połowe lczby wartośc o zsumowaa tuta lczbe wartośc w werszu wykowe macerzy poprzeego kerela. erel przymue ako parametry: wskaźk o obszaru pamęc globale g_ata zaweraącego wyk załaa poprzeego kerela, wskaźk o obszaru pamęc globale g_oata, o którego zapsyway bęze wyk załaa kerela, oraz wartość. erel geerue wyk o takm samym formace ak kerel poprze, ale o mesze lczbe wartośc w werszu poobe ak poprzeo reukc w werszu ulega razy tyle wartośc le est wątków w bloku, czyl la bloków złożoych z 5 wątków, każe 04 wartośc reukuą sę o ee. Wersze 3 o 7 maą taką samą fukcoalość ak wersze 3 o 7 kerela reucestarerel. W werszu 8 oblczaa est wartość eltay określaąca pozycę w tablcy weścowe, o które zaczya sę wersz tablcy weścowe przetwarzay przez aktualy blok. Wersze 9 o maą poobą fukcoalość ak wersze 0 o 5 w kerelu reucestarerel. Są eak we różce. Po perwsze, przy ostępe o tablcy z aym weścowym uwzglęaa est wartość eltay, a po ruge e est uż oblczaa fukca t_ev e est to koecze bo oawae wartośc są uż sumam wartośc te fukc. Pozostałe wersze maą załae aalogcze, ak w reucestarerel. Jak łatwo zauważyć, w wyku załaa tego kerela otrzymywaa est owa macerz, w które wersze opowaaą różym wartoścom h, a kolumy częścowym sumom wartośc 3.5. erel te wywoływay est welokrote, zgoe ze schematem eszczącym, przy czym reukca kończy sę w momece, key w wykowe tablcy zaze sę tylko ea koluma. Uzyskaa tablca skłaa sę wówczas z wartośc, T,, h la różych wartośc h. Aby uzyskać ostateczy wyk koecze est tylko wykoae klku prostych oblczeń a tych wartoścach. Ostatecze oblczea wykoywae są przez kerel falzecalc przestawoy a lstgu. erel te przymue astępuące parametry: wskaźk o obszaru w pamęc globale, w którym zapsay est wyk załaa poprzech kerel g_ata, wskaźk o obszaru pamęc globale g_oata, o które powy zostać zapsae wartośc.4, lczba wartośc.4 o oblczea values oraz wartośc,, mh, step, C, które maą take same zaczee ak w przypaku kerela reucestarerel. erel powe być uruchamay w eowymarowe satce oblczeń, skłaaące sę z eowymarowych bloków wątków, take, że lczba wątków est rówa, bąź przekracza wartość values. erel w perwszym werszu oblcza, która pozyca weścowe tablcy ma być przetwarzaa przez aktualy wątek. Jeżel oblczoa pozyca e wskazue a obszar poza tablcą, to w werszu 4 poberaa est wartość sumy 3.5 z tablcy weścowe, w werszu 5 wyzaczaa