autoreferat: Agnieszka Kamińska - Zachodniopomorski Uniwersytet
Transkrypt
autoreferat: Agnieszka Kamińska - Zachodniopomorski Uniwersytet
Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki Katedra Inżynierii Oprogramowania Agnieszka Kamińska MODELE STATYSTYCZNE DO OSZACOWANIA WYDAJNOŚCI APLIKACJI GRUBOZIARNISTYCH W STANDARDZIE OPENMP C/C++ ORAZ ICH ZASTOSOWANIE W KOMPILACJI ITERACYJNEJ AUTOREFERAT ROZPRAWY DOKTORSKIEJ Promotor: prof. dr hab. inż. Włodzimierz Bielecki Recenzenci: prof. dr hab. inż. Ryszard Budziński Wydział Nauk Ekonomicznych i Zarządzania Uniwersytet Szczeciński prof. dr hab. inż. Włodzimierz Khadzhynov Wydział Elektroniki i Informatyki Politechnika Koszalińska Szczecin 2014 Spis treści 1. AKTUALNOŚĆ PROBLEMU ................................................................................................... 1 2. PRZEDMIOT BADAŃ ........................................................................................................... 2 3. GŁÓWNY CEL ROZPRAWY .................................................................................................. 2 4. ZADANIA DO ROZWIĄZANIA ................................................................................................. 3 5. METODY NAUKOWE STOSOWANE PODCZAS WYKONANIA BADAŃ............................................ 4 6. OSIĄGNIĘCIA DEKLAROWANE DO OBRONY ........................................................................... 4 7. STRUKTURA I UKŁAD PRACY ............................................................................................... 4 8. ZAWARTOŚĆ PRACY .......................................................................................................... 4 Rozdział 1 Wstęp ............................................................................................................................4 Rozdział 2 Przegląd aktualnego stanu wiedzy na temat przetwarzania równoległego ..................5 Rozdział 3 Opracowanie ogólnego modelu statystycznego oraz modeli szczególnych ................5 Koncepcja rozwiązania problemu postawionego w pracy ........................................... 5 Postać modelu ogólnego ............................................................................................. 7 Sposób oszacowania wartości parametrów modeli szczególnych ............................ 15 Weryfikacja jakości oszacowań ................................................................................. 19 Sposób wykorzystania modeli szczególnych w kompilacji iteracyjnej ....................... 20 Rozdział 4 Badania eksperymentalne ......................................................................................... 24 Rozdział 5 Podsumowanie .......................................................................................................... 27 9. WARTOŚĆ TEORETYCZNA ................................................................................................ 27 10. WARTOŚĆ PRAKTYCZNA .................................................................................................. 27 11. AKCEPTACJA WYNIKÓW PRZEZ SPOŁECZNOŚĆ NAUKOWĄ .................................................. 28 12. ZAKOŃCZENIE ................................................................................................................. 28 13. SPIS PUBLIKACJI ............................................................................................................. 29 BIBLIOGRAFIA ........................................................................................................................ 30 AUTOREFERAT ROZPRAWY DOKTORSKIEJ 1. AKTUALNOŚĆ PROBLEMU Na przestrzeni ostatnich kilkunastu lat, miały miejsce wielka popularyzacja i rozpowszechnienie wykorzystania komputerów, wskutek czego komputery są dziś wszechobecne w życiu ludzi. Jedną z konsekwencji tego zjawiska jest pojawienie się i dynamiczny rozwój nowej gałęzi produkcji niematerialnej – wytwarzania oprogramowania komputerowego. Podobnie jak w przypadku tradycyjnych gałęzi przemysłu, także w wytwarzaniu oprogramowania komputerowego kluczowe jest zapewnienie wysokiej jakości produktu końcowego i krótkiego czasu jego wytwarzania. Redukcja czasu wytwarzania oprogramowania jest przedmiotem badań prowadzonych zarówno w ośrodkach naukowych, jak i przemysłowych. Główne kierunki wspomnianych badań to: organizacja sprzętu komputerowego, języki programowania, kompilacja i jej optymalizacja, organizacja procesu wytwarzania oprogramowania. Na szczególną uwagę zasługuje tu kompilacja, czyli konwersja programu komputerowego, napisanego w języku programowania zrozumiałym dla człowieka, na postać wykonywalną zrozumiałą dla maszyny. Stosując na etapie kompilacji odpowiednio dobrane transformacje, można przekształcić program, napisany w danym języku programowania i dla określonej platformy sprzętowej, do postaci wykonywalnych o różnych czasach wykonania. W ramach kompilacji, określanej jako optymalizująca, dąży się do wyboru takich transformacji, by uzyskana postać wykonywalna programu miała jak najkrótszy czas wykonania w docelowym środowisku sprzętowym. Z uwagi na ciągły rozwój sprzętu komputerowego i języków programowania, także kompilacja – a zwłaszcza kompilacja optymalizująca – jest dziedziną rozwojową. W wyniku badań nad kompilacją optymalizującą i czasem wykonania programów, zaproponowano różne metody, pozwalające na: prognozowanie czasu wykonania programu [2], szacowanie czasu wykonania programu czasu [8] bądź wybór tej postaci programu, która ma najkrótszy spodziewany czas wykonania ([3] [10] [11]). Z uwagi na bardzo złożoną budowę współczesnego sprzętu komputerowego, metody wymienione powyżej nie pozwalają wskazać ze 100 % pewnością, która spośród możliwych postaci danego programu jest postacią o najkrótszym czasie wykonania w danym środowisku docelowym. Metody te pozwalają na znalezienie rozwiązań przybliżonych; jedynym sposobem znalezienia rozwiązania dokładnego wciąż pozostaje kompilacja iteracyjna. Kompilacja iteracyjna polega na wykonaniu w docelowym środowisku sprzętowym wszystkich z rozpatrywanych postaci kodu źródłowego programu, porównaniu ich czasów wykonania i wybraniu do ostatecznego stosowania postaci o najkrótszym czasie wykonania. Kompilacja iteracyjna może być bardzo czasochłonna i przez to, kosztowna w zastosowaniach praktycznych, zwłaszcza w przypadku komercyjnego wytwarzania oprogramowania. Dlatego też, potencjalnym usprawnieniem w zakresie kompilacji iteracyjnej byłoby zastosowanie modelu matematycznego, w celu wyłonienia z możliwych postaci kodu źródłowego danego programu tych postaci, które mają najlepsze rokowania odnośnie czasu wykonania, i ograniczenie zakresu empirycznej selekcji do tak zawężonego zbioru. 1 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Rozwiązania, zaproponowane w pracach wymienionych w niniejszym rozdziale, dostarczają dobrych narzędzi do szacowania czasu wykonania programu, jednakże kosztem czasochłonnego procesu budowy modeli matematycznych oraz wąskiego zakresu stosowalności uzyskanych modeli (modele są dedykowane dla konkretnych programów lub konkretnych transformacji optymalizujących). Z uwagi na te ich właściwości, przedmiotowe rozwiązania nie są adekwatne do realizacji postulowanego usprawnienia kompilacji iteracyjnej. Potencjalne korzyści praktyczne związane z postulowanym usprawnieniem kompilacji iteracyjnej oraz luka naukowa stwierdzona w tym obszarze stały się inspiracją dla niniejszej pracy. Problematyka niniejszej pracy – redukcja czasu wytwarzania oprogramowania komputerowego poprzez wybór wersji programu przeznaczonej do ostatecznego stosowania przy pomocy modeli matematycznych dedykowanych do oszacowania czasu wykonania programu – mieści się w zakresie działalności naukowo-badawczej Katedry Inżynierii Oprogramowania Wydziału Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie. 2. PRZEDMIOT BADAŃ Przedmiotem badań było opracowanie modelu, pozwalającego określić zależność liczbową pomiędzy czasem wykonania programu a czynnikami, mającymi istotny wpływ na czas wykonania programu. Z uwagi na brak możliwości opracowania uniwersalnego modelu, adekwatnego dla wszystkich możliwych przypadków, badania ograniczono do pewnej, często spotykanej w praktyce, klasy programów (aplikacji gruboziarnistych zrównoleglonych według standardu OpenMP C/C++) i środowiska sprzętowego (komputerów wieloprocesorowych z pamięcią dzieloną). 3. GŁÓWNY CEL ROZPRAWY Biorąc pod uwagę lukę naukową, wskazaną w rozdziale 1 autoreferatu oraz ograniczenia natury praktycznej, wskazane w rozdziale 2 autoreferatu, sformułowano następujący, główny cel badań: Opracowanie rodziny modeli statystycznych (przewidywanych do zastosowania w optymalizujących kompilatorach zrównoleglających) pozwalających na oszacowanie czasu wykonania aplikacji gruboziarnistych w standardzie OpenMP C/C++ przez komputery wieloprocesorowe z pamięcią dzieloną. OpenMP to obecnie bardzo popularny standard zrównoleglenia aplikacji. Jest on jednym z najczęściej stosowanych standardów zrównoleglenia aplikacji napisanych w językach: C i C++, przeznaczonych do wykonania na maszynach wieloprocesorowych z pamięcią dzieloną. Do oszacowania czasu wykonania wskazanej w celu pracy klasy programów równoległych, wybrano modele regresyjne. Analiza regresji jest bardzo dobrze rozwiniętą i powszechnie stosowaną metodą identyfikacji i opisu zależności występujących w zbiorach danych empirycznych. Stosując analizę regresji, można uzyskać stosunkowo proste równania analityczne (modele regresyjne) opisujące te zależności z bardzo dobrym przybliżeniem. Przeprowadzenie analizy regresji nie jest obecnie czasochłonne, z uwagi na powszechnie dostępne na rynku oprogramowanie komputerowe, w którym są dostępne moduły 2 AUTOREFERAT ROZPRAWY DOKTORSKIEJ wykonujące analizę regresji. Ponadto, stosując powszechnie znane współczynniki i testy statystyczne można szybko i trafnie ocenić jakość otrzymanego modelu regresyjnego. Aby zrealizować cel badań, należało wykazać, że: Istnieje możliwość opracowania rodziny modeli statystycznych do oszacowania czasu wykonania aplikacji gruboziarnistych w standardzie OpenMP C/C++, które pozwolą na osiągnięcie zadawalającej dokładności oszacowania. Dokładność oszacowania jest pojęciem jakościowym, określającym zgodność wyniku oszacowania z wartością zmierzoną empirycznie. Na potrzeby pracy przyjęto, że dokładność oszacowania jest uznawana za zadawalającą, jeżeli: wielkość uzyskanego błędu oszacowania nie przekracza 100 punktów procentowych (próg ten jest zasadą zwyczajową, przyjętą w wielu publikacjach), oraz oszacowania dokonane według modeli należących do opracowanej rodziny modeli są wystarczające do wskazania tych postaci kodu źródłowego programu, które w danym środowisku sprzętowym mają najlepsze rokowania odnośnie czasu wykonania, a weryfikacja przeprowadzona drogą kompilacji iteracyjnej potwierdza, że wskazania wynikające z oszacowań są zgodne z wynikami uzyskanymi empirycznie. Należy tu podkreślić, że ocena dokładności oszacowania w aspekcie ilościowym jest drugorzędna w stosunku do oceny w aspekcie jakościowym, co wynika z przewidywanego zastosowania modeli należących do opracowanej rodziny modeli. Z punktu widzenia zastosowania modeli, jest bowiem kluczowe, by pozwalały one uszeregować różne postaci kodów źródłowych danej pętli malejąco według czasu wykonania, bez konieczności wykonywania przedmiotowych kodów źródłowych w docelowym środowisku. Jeżeli modele pozwalają dokonać takiego uszeregowania, to uzyskane błędy oszacowań mają mniejsze znaczenie. 4. ZADANIA DO ROZWIĄZANIA Aby zrealizować główny cel pracy, należało zrealizować następujące zadania cząstkowe: 1/ Zidentyfikowanie czynników, mających istotny wpływ na czas wykonania programu, i wyrażenie ich w sposób ilościowy, 2/ Określenie sposobu wyznaczenia oraz wyznaczenie postaci modelu matematycznego, pozwalającego określić jak wpływ czynników z punktu 1/, rozpatrywanych łącznie, przekłada się na czas wykonania programu, 3/ Weryfikacja jakości oszacowań dokonanych według zaproponowanego modelu, 4/ Opracowanie iteracyjnej, 5/ Weryfikacja empiryczna zaproponowanego modelu, pod kątem wykorzystania go w kompilacji iteracyjnej. sposobu wykorzystania zaproponowanego 3 modelu w kompilacji AUTOREFERAT ROZPRAWY DOKTORSKIEJ 5. METODY NAUKOWE STOSOWANE PODCZAS WYKONANIA BADAŃ Podczas wykonywania badań, zastosowano następujące metody naukowe: metodę intuicyjną oraz analizę krytyczną – jako metody główne, wykorzystane do sformułowania autorskiej koncepcji rozwiązania problemu, postawionego w pracy, metodę eksperymentalną oraz metody statystyczne – jako metody pomocnicze, wykorzystane do zweryfikowania zaproponowanej koncepcji autorskiej. 6. OSIĄGNIĘCIA DEKLAROWANE DO OBRONY Wyniki, które osiągnięto w ramach realizacji pracy i które przedstawia się do obrony, to: 1/ Zidentyfikowanie czynników, mających istotny wpływ na czas wykonania programu, i przedstawienie propozycji ich reprezentacji w sposób ilościowy, 2/ Określenie sposobu wyznaczenia oraz wyznaczenie postaci modelu matematycznego, pozwalającego określić jak wpływ czynników z punktu 1/, rozpatrywanych łącznie, przekłada się na czas wykonania programu, 3/ Weryfikacja jakości oszacowań dokonanych według zaproponowanego modelu, 4/ Opracowanie iteracyjnej. 7. sposobu wykorzystania zaproponowanego modelu w kompilacji STRUKTURA I UKŁAD PRACY Wyniki realizacji pracy zostały przedstawione w rozprawie, obejmującej: 5 rozdziałów, wykaz pozycji bibliograficznych liczący 101 pozycji cytowanych w tekście dysertacji, spis rysunków oraz spis tabel. Rozprawa liczy 163 strony; zamieszczono w niej 58 rysunków, 69 tabel oraz 44 numerowane równania. 8. ZAWARTOŚĆ PRACY Wyniki realizacji pracy zostały przedstawione w dysertacji, obejmującej 5 następujących rozdziałów: Rozdział 1 Rozdział 2 Rozdział 3 Rozdział 4 Rozdział 5 Wstęp Przegląd aktualnego stanu wiedzy na temat przetwarzania równoległego Opracowanie ogólnego modelu statystycznego oraz modeli szczególnych Badania eksperymentalne Podsumowanie Zawartość poszczególnych rozdziałów dysertacji przedstawia się następująco: Rozdział 1 Wstęp W rozdziale 1 dysertacji przedstawiono problem, który legł u podstaw pracy (problem ten nakreślono w rozdziale 1 autoreferatu) i stał się wyznacznikiem jej tematu oraz celu: opracowania modeli pozwalających na oszacowanie czasu wykonania programu. 4 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Z uwagi na popularność przetwarzania równoległego i jego sprzętowo-programistyczną naturę oraz fakt, że większość czasochłonnych operacji – obliczeń wykonywanych w programach – jest realizowana w pętlach, zakres celu pracy ograniczono do często stosowanej w praktyce klasy pętli zrównoleglonych. W rozdziale 1 dysertacji przedstawiono także hipotezę badawczą pracy oraz krótką prezentację zawartości poszczególnych rozdziałów dysertacji. (Cel i hipoteza badawcza pracy zostały przedstawione w rozdziale 3 autoreferatu.) Rozdział 2 Przegląd aktualnego stanu wiedzy na temat przetwarzania równoległego W rozdziale 2 dysertacji dokonano przeglądu aktualnego stanu wiedzy na temat przetwarzania równoległego, koncentrując się na miernikach oceny wydajności aplikacji równoległych oraz podejściach do tworzenia aplikacji równoległych. Na tym tle, przeanalizowano stosowane obecnie podejścia do oszacowania wydajności aplikacji równoległych, mianowicie: Profilowanie, polegające na zbieraniu informacji o zachowaniu programu w trakcie jego wykonywania, a następnie wykorzystywaniu tych informacji do analizy zachowania programu i jego optymalizacji. Typowo stosowane sposoby modelowania wydajności aplikacji równoległych, oparte na pomiarze czasu wykonania programu, mianowicie: prawo Amdahla, ekstrapolację z obserwacji, analizę asymptotyczną. Na podstawie przeprowadzonej analizy, stwierdzono, że podejścia te są nieadekwatne do zastosowania w kompilacji iteracyjnej celem oszacowania czasu wykonania programów zrównoleglonych. Rozdział 3 Opracowanie ogólnego modelu statystycznego oraz modeli szczególnych W rozdziale 3 dysertacji przedstawiono koncepcję rozwiązania problemu, postawionego w pracy, oraz szczegółowy opis elementów, składających się na proponowane rozwiązanie autorskie. Koncepcja rozwiązania problemu postawionego w pracy Aby rozwiązać problem postawiony w pracy, postanowiono sformułować ogólne równanie funkcji (określane w pracy jako model ogólny) pozwalającej na oszacowanie czasu wykonania pewnej, często wykorzystywanej w praktyce, klasy pętli równoległych. Za zmienną zależną modelu ogólnego postanowiono przyjąć czas wykonania programu. Za zmienne niezależne modelu ogólnego postanowiono przyjąć zmienne ilościowe, które byłyby odzwierciedleniem czynników mających istotny wpływ na czas wykonania programu. W modelu ogólnym, oprócz zmiennej zależnej i zmiennych niezależnych, występowałyby także parametry o nieznanych wartościach. 5 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Wartości tych parametrów należałoby wyznaczyć dla konkretnego środowiska sprzętowego, na podstawie analizy regresji przeprowadzonej dla danych empirycznych zebranych w tym środowisku. Aby zebrać niezbędne dane empiryczne, postanowiono wykorzystać specjalnie w tym celu przygotowane programy. Każdy z tych programów reprezentowałby inny wzorzec ponownego użycia danych w programie. W pracy, programy te są nazywane pętlami wzorcowymi. Każda z pętli wzorcowych jest reprezentantem pewnych arbitralnie przyjętych cech związanych z ponownym użyciem danych1 i interferencją2. W pracy zamierzano wykorzystać 2 przykładowe pętle wzorcowe: nonInterf (pętla-reprezentant ponownego użycia danych przy braku interferencji) i matmul (pętla-reprezentant ponownego użycia danych przy występowaniu interferencji). Po podstawieniu do równania modelu ogólnego wartości liczbowych parametrów, wyznaczonych metodą regresji, otrzymano by równanie modelu szczególnego. Model szczególny to model, który uszczegóławia model ogólny dla konkretnej sytuacji, poprzez przypisanie parametrom modelu ogólnego konkretnych wartości liczbowych. Każdy model szczególny byłby wyprowadzany z modelu ogólnego dla jednego, konkretnego programu-wzorca ponownego użycia danych. Model szczególny można by stosować zarówno dla programu-wzorca, który posłużył do jego wyprowadzenia, jak i dla innych programów, które cechują się takim samym typem ponownego użycia danych, co wzorzec. W pracy, te inne programy są nazywane pętlami niewzorcowymi. Aby zapobiec ekstrapolacji modelu szczególnego na dane spoza zakresu, dla którego ten model zbudowano, postanowiono opracować założenia dotyczące zakresu stosowalności modelu szczególnego dla programów innych niż wzorzec wykorzystany do wyznaczenia modelu szczególnego. W tym celu, wprowadzono 3 ograniczenia, dotyczące: łącznego rozmiaru danych, przetwarzanych w programie, wielkości „porcji pracy”, przydzielanej do wykonania wątkom, czasu wykonania programu. Aby ocenić czy model szczególny pozwala z zadawalającą dokładnością oszacować czas wykonania programów innych niż wzorzec wykorzystany do wyznaczenia modelu szczególnego, postanowiono opracować dedykowany do tego celu sposób oceny jakości oszacowań dokonanych przy pomocy modelu szczególnego. Byłby to kompleksowy sposób oceny jakości, obejmujący: aspekt jakościowy oraz aspekt ilościowy, i odnoszący uzyskane oszacowania do wartości rzeczywistych wyznaczonych empirycznie w środowisku docelowym. Do statystycznej weryfikacji oceny jakości w obu aspektach planowano wykorzystać test Kołmogorowa-Smirnowa. Modele szczególne zostałyby wykorzystane w kompilacji iteracyjnej. Przy pomocy modeli szczególnych, można by oszacować czas wykonania różnych postaci kodu źródłowego danego programu. Na podstawie dokonanych oszacowań, do wykonania w docelowym środowisku sprzętowym byłyby wybierane tylko te kody źródłowe, które uzyskałyby najlepsze 1 Czasowe ponowne użycie danych (ang. temporal data reuse) występuje wówczas, gdy dane pobrane z określonej lokalizacji w pamięci są wielokrotnie wykorzystywane w programie. Przestrzenne ponowne użycie danych (ang. spatial data reuse) występuje wówczas, gdy w programie są wykorzystywane dane sąsiadujące, w ramach jednej linii pamięci podręcznej, z danymi pobranymi z określonej lokalizacji w pamięci [1] [13]. 2 Interferencja zachodzi w sytuacji, gdy wiersz pamięci podręcznej zawierający dane, które można ponownie użyć w programie, zostaje nadpisany nowymi danymi pomimo, że w pamięci podręcznej jest wolne miejsce, w którym można byłoby ulokować nowo wprowadzane dane – jednak sposób organizacji pamięci podręcznej wymusza nadpisanie konkretnego, zajętego wcześniej wiersza pamięci podręcznej [1] [4] [5] [12]. 6 AUTOREFERAT ROZPRAWY DOKTORSKIEJ rokowania co do czasu wykonania. Do ostatecznego stosowania wybierano by spośród nich kod źródłowy o najkrótszym czasie wykonania w docelowym środowisku sprzętowym. Dzięki zastosowaniu modeli szczególnych, czas trwania kompilacji iteracyjnej dla pętli spełniających założenia modeli szczególnych uległby skróceniu – gdyż, zamiast wykonywać w środowisku docelowym wszystkie kody źródłowe, wykonywałoby się tylko część z nich. Postać modelu ogólnego Z uwagi na przewidywany zakres zastosowania modeli szczególnych, potencjalne właściwości, które należało uwzględnić w modelu ogólnym, to: a) b) c) struktura programu równoległego i rodzaj równoległości, reprezentowanej w programie, specyfika problemu rozwiązywanego w sposób równoległy, parametry środowiska sprzętowego, w którym będzie wykonywany zrównoleglony program. Dla poszczególnych właściwości przyjęto następującą reprezentację ilościową: a) Struktura programu równoległego i rodzaj równoległości, reprezentowanej w programie W standardzie OpenMP C/C++, przyjętym sposobem zrównoleglenia programu jest wielowątkowość. Czas wykonania zrównoleglonego programu jest zależny od liczby powołanych wątków OpenMP – dlatego też, potencjalną zmienną niezależną modelu ogólnego była zmienna niezależna (X4) określająca liczbę wątków OpenMP, wykonujących program. W przypadku, gdy zadanie do wykonania jest realizowane w pętli programowej, każdy z powołanych wątków OpenMP otrzymuje do wykonania pewną liczbę iteracji tej pętli. Poszczególne wątki mogą otrzymać jednakową lub niejednakową liczbę iteracji do wykonania – jest to zależne od przyjętego sposobu przydziału iteracji pętli do wątków. Czas wykonania całego zadania (pętli programowej) jest zdeterminowany przez czas wykonania tego wątku, który otrzymał do wykonania najwięcej iteracji, a w szczególności – przez wielkość największej porcji iteracji, jaka została przydzielona do wykonania do wspomnianego wątku. Dlatego też, potencjalną zmienną niezależną modelu ogólnego była zmienna niezależna (X3) określająca maksymalną wielkość pojedynczej porcji iteracji przydzielonej do wykonania przez wątek, dla danego sposobu przydziału iteracji do wątków OpenMP. b) Specyfika problemu rozwiązywanego w sposób równoległy W aspekcie najbardziej niskopoziomowym, specyfika i różnorodność problemów rozwiązywanych w programach uwidacznia się w liczbie i typie operacji arytmetycznych, jakie ma wykonać procesor. Prostym, ale skutecznym sposobem wyrażenia powyższej obserwacji w sposób ilościowy jest przypisanie różnych wag różnym operacjom arytmetycznym; wagi należy dobrać na podstawie analizy czasów wykonania instrukcji danego procesora. Dzięki takiemu podejściu, uzyskuje się porównywalność operacji arytmetycznych różnych typów (np. dodawanie i mnożenie). Dlatego też, potencjalną zmienną niezależną modelu ogólnego była zmienna niezależna (X2) wskazująca, jaka jest łączna ważona liczba operacji przypadająca na pojedynczy wątek programu. 7 AUTOREFERAT ROZPRAWY DOKTORSKIEJ c) Parametry środowiska sprzętowego, w którym będzie wykonywany zrównoleglony program Z uwagi na występowanie dysproporcji pomiędzy szybkością procesorów a czasem dostępu do podsystemu pamięci, to właśnie pamięć – a zwłaszcza szybko dostępna pamięć podręczna procesora – jest jednym z tych elementów środowiska sprzętowego, które determinują długość czasu wykonania programu. W idealnej sytuacji, wszystkie dane potrzebne procesorowi podczas wykonywania programu powinny być dostępne w pamięci podręcznej procesora w momencie, gdy zostało na nie zgłoszone zapotrzebowanie, a nie być dopiero wówczas pobierane z pamięci głównej do pamięci podręcznej procesora. Z drugiej strony, pojemność pamięci podręcznej procesora i sposób jej adresowania determinują jaki odsetek danych przetwarzanych w programie jest dostępny w pamięci podręcznej procesora w momencie zgłoszenia zapotrzebowania na przedmiotowe dane. Oznacza to, że czas wykonania programu jest zależny od: 1/ 2/ 3/ faktycznej pojemności i sposobu organizacji (asocjacyjności) pamięci podręcznej procesora w danym systemie komputerowym, minimalnej pojemności pamięci podręcznej procesora (pamięć z odwzorowaniem bezpośrednim), jaka jest niezbędna do pomieszczenia wszystkich danych przetwarzanych w programie, przy założeniu pełnego czasowego i przestrzennego ponownego użycia danych przechowywanych w pamięci podręcznej procesora. Przedmiotową pojemność można oszacować przy pomocy odcisku danych (według metodyki przedstawionej w pracach [7] i [13]). W celu wyznaczenia odcisku danych dla danego programu wystarczy znać jego kod źródłowy, nie ma potrzeby wykonywania tego programu. relacji pomiędzy wielkościami wskazanymi w 1/ i 2/. W związku z powyższym, potencjalną zmienną niezależną modelu ogólnego była zmienna niezależna (X1), przedstawiająca relację pomiędzy wielkościami wskazanymi w 1/ i 2/. Tak więc, lista potencjalnych zmiennych objaśniających (niezależnych) to: X1, X2, X3, X4. Zaproponowane zmienne niezależne uwzględniają i odzwierciedlają wiele różnych aspektów równoległego wykonania programu. W Tabeli 1 przedstawiono jakie są determinanty ostatecznej wartości liczbowej poszczególnych zmiennych niezależnych. Determinanty wartości liczbowej poszczególnych zmiennych niezależnych Tabela 1 X1 Rozmiar pamięci podręcznej (L1 i L2) Sposób organizacji pamięci podręcznej Ponowne użycie danych w programie Typ ponownego użycia danych w programie X2 Liczba operacji arytmetycznych, wykonywanych w programie Typ operacji arytmetycznych, wykonywanych w programie Czas wykonania poszczególnych typów operacji arytmetycznych procesora X3 Struktura programu równoległego Rodzaj równoległości, reprezentowanej w programie Sposób przydziału zadań do poszczególnych wątków wykonujących program 8 X4 Liczba procesorów komputera wieloprocesorowe go AUTOREFERAT ROZPRAWY DOKTORSKIEJ X1 Interferencja Struktura programu X2 X3 X4 Przyjmując taką listę potencjalnych zmiennych niezależnych poszukiwanego modelu oraz zakładając, że zmienna objaśniana (zależna) to Yt gdzie Yt – szacowany czas procesora dla wykonania pętli programowej przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora (wielkość bezwymiarowa) przystąpiono do analizy regresji. Przedmiotem analizy regresji były dane empiryczne, zebrane dla dwóch specjalnie w tym celu przygotowanych pętli wzorcowych: nonInterf i matmul. Wybraną metodą analizy regresji była regresja liniowa oparta o klasyczną metodę najmniejszych kwadratów. Zgodnie z założeniami regresji linowej, zależność występująca pomiędzy obserwowanymi wartościami zmiennej zależnej Y oraz odpowiadającymi im wartościami zmiennych niezależnych X1, X2, …, Xp jest zależnością wyrażoną równaniem (1): Yi a0 a1 X 1i a2 X 2 i a p Xp i i Yt i i gdzie: i a0, …, ap X1i, …, Xpi Yi Yti εi (1) – numery kolejnych obserwacji (i = 1, …, n), – parametry o nieznanych wartościach dokładnych; wartości tych parametrów są szacowane w oparciu o klasyczną metodę najmniejszych kwadratów, – znane wartości zmiennych niezależnych X1, X2, …, Xp, odpowiadające wartości Y obserwowanej w i-tej obserwacji, – wartość zmiennej zależnej Y obserwowana w i-tej obserwacji, – teoretyczna (przewidywana) wartość zmiennej zależnej Y dla i-tej obserwacji, – błąd (reszta, składnik resztowy) dla i-tej obserwacji. Równanie (1) można zastosować w przypadku, gdy zależność, występująca pomiędzy empirycznymi wartościami zmiennej zależnej i zmiennych niezależnych jest zależnością liniową lub zależnością, którą można sprowadzić do zależności liniowej – czyli zależnością potęgową, wykładniczą, logarytmiczną lub hiperboliczną. Dlatego też, dla potencjalnych zmiennych niezależnych: X1, X2, X3, X4 oraz zmiennej zależnej Yt opracowywany w ramach pracy model ogólny, będący modelem regresyjnym opartym o regresję liniową wykorzystującą klasyczną metodę najmniejszych kwadratów, mógł przyjąć jedną z następujących postaci: postać liniową, wyrażoną równaniem (2): Yt a1 X 1 a2 X 2 a3 X 3 a4 X 4 postać potęgową, wyrażoną równaniem (3): Yt X 1a1 X 2 a 2 X 3a3 X 4 a 4 (2) (3) postać wykładniczą, wyrażoną równaniem (4): Yt a1X 1 a2 X 2 a3 X 3 a4 X 4 9 (4) AUTOREFERAT ROZPRAWY DOKTORSKIEJ postać logarytmiczną, wyrażoną równaniem (5): Yt a1 log X 1 a2 log X 2 a3 log X 3 a4 log X 4 (5) postać hiperboliczną, wyrażoną równaniem (6): Yt a1 1 1 1 1 a2 a3 a4 X1 X2 X3 X4 (6) Uwaga : W równaniach (2) ÷ (6) nie uwzględniono a0 z uwagi na to, że dla modelowanego zjawiska parametr a0 nie ma sensu praktycznego. Do ustalenia ostatecznej postaci analitycznej poszukiwanego modelu, wykorzystano: współczynnik determinacji R2 (do ustalenia charakteru zależności pomiędzy zmienną zależną a poszczególnymi zmiennymi niezależnymi modelu), skorygowany współczynnik determinacji (do wyboru, spośród potencjalnych zmiennych niezależnych modelu, ostatecznej listy zmiennych niezależnych modelu). Na podstawie natury zmiennych X1, X2, X3, X4, Yt i ich wzajemnych powiązań nasuwało się przypuszczenie, że zależność występująca pomiędzy zmiennymi: X1, X2, X3, X4 oraz Yt ma charakter potęgowy. Przypuszczenie to zweryfikowano, badając wartość współczynnika determinacji (R2) dla: zmiennej Yt i wszystkich zmiennych niezależnych łącznie (przypadek 1/), zmiennej Yt i poszczególnych zmiennych niezależnych (przypadki 2/ ÷ 5/). Wartości współczynnika determinacji, uzyskane dla obu pętli wzorcowych, przedstawiono w Tabeli 2 i Tabeli 3. Dla obu pętli wzorcowych, najwyższą wartość R2 dla przypadku 1/ uzyskano stosując model potęgowy wyrażony równaniem (3). Ponadto, dla obu pętli, stosując wspomniany model potęgowy uzyskano bardzo dobre wyniki dopasowania także dla wszystkich pozostałych przypadków, co świadczyło o potęgowym charakterze zależności pomiędzy zmienną zależną a każdą z potencjalnych zmiennych niezależnych. Tabela 2 Wartości współczynników determinacji dla różnych możliwych postaci modelu ogólnego – dla pętli nonInterf Przypadek 1/ Postać modelu liniowy potęgowy wykładniczy logarytmiczny hiperboliczny R 2 Yt.X1,X2,X3,X4 0,9738484 0,9999580 0,9845407 0,9557310 0,9458243 Przypadek 2/ R 2 Yt.X1 Przypadek 3/ R 0,0602237 0,8968516 0,3399016 0,4977595 0,9239709 2 Yt.X2 0,9239709 0,9957804 0,7284349 0,7366662 0,0602237 10 Przypadek 4/ R 2 Yt.X3 0,6125842 0,9653380 0,8848293 0,6611192 0,5872795 Przypadek 5/ R 2 Yt.X4 0,6390095 0,9203893 0,9194891 0,6387514 0,5997874 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Tabela 3 Wartości współczynników determinacji dla różnych możliwych postaci modelu ogólnego – dla pętli matmul Przypadek 1/ Postać modelu liniowy potęgowy wykładniczy logarytmiczny hiperboliczny R 2 Yt.X1,X2,X3,X4 Przypadek 2/ R 2 Yt.X1 0,9506216 0,9999514 0,9645971 0,8230448 0,8098927 Przypadek 3/ R 0,0002301 0,6540767 0,1066810 0,8095558 0,7669016 2 Yt.X2 Przypadek 4/ R 0,9286567 0,9982205 0,5703056 0,5858303 0,0014395 2 Yt.X3 Przypadek 5/ R 2 Yt.X4 0,3616036 0,9119271 0,4310208 0,5074892 0,3219836 0,4771490 0,9183616 0,9170599 0,4774223 0,4602693 Zmienne: X1, X2, X3, X4 zostały zaproponowane jako potencjalne zmienne niezależne modelu ogólnego. Potencjalne – bo analiza teoretyczna wskazywała, że mają one istotny wpływ na czas wykonania programu. Jednakże, dopiero analiza materiału empirycznego mogła dostarczyć odpowiedzi na pytanie czy w modelu ogólnym należy uwzględnić wszystkie te zmienne, czy być może tylko niektóre z nich. W celu znalezienia odpowiedzi na to pytanie, dla modelu potęgowego wyrażonego równaniem (3) i wszystkich możliwych kombinacji potencjalnych zmiennych niezależnych (tj. zmiennych: X1, X2, X3, X4) obliczono wartość skorygowanego współczynnika determinacji. Jeżeli wprowadzenie do modelu konkretnej, kolejnej zmiennej niezależnej faktycznie zwiększa stopień, w jakim model wyjaśnia kształtowanie się badanego zjawiska, wówczas wartość skorygowanego współczynnika determinacji jest wyższa niż w przypadku, gdy przedmiotowej zmiennej niezależnej nie uwzględniono w modelu. Dlatego też, w modelu regresyjnym należy uwzględnić jako zmienne niezależne ten podzbiór zbioru potencjalnych zmiennych niezależnych, dla którego uzyskano najwyższą wartość skorygowanego współczynnika determinacji. Wartości skorygowanego współczynnika determinacji, uzyskane dla obu pętli wzorcowych, przedstawiono w Tabeli 4 i Tabeli 5. Dla obu pętli wzorcowych, najwyższą wartość skorygowanego współczynnika determinacji uzyskano uwzględniając w modelu potęgowym wyrażonym równaniem (3) wszystkie potencjalne zmienne niezależne, tj. zmienne: X1, X2, X3, X4. Tabela 4 Wartości skorygowanych współczynników determinacji dla różnych możliwych kombinacji potencjalnych zmiennych niezależnych – dla pętli nonInterf i modelu potęgowego wyrażonego równaniem (3). 2 Zmienne modelu R 0,8968516 0,9957804 0,9653380 0,9203893 0,9982909 0,9663456 0,9300614 0,9966362 0,9959525 0,9702187 0,9983220 x1 x2 x3 x4 x1 x1 x1 x2 x3 x4 x2 x2 x1 x2 x3 x3 x3 x4 x4 11 2 Skorygowane R 0,8919398 0,9955795 0,9636874 0,9165983 0,9981200 0,9629802 0,9230676 0,9962998 0,9955477 0,9672406 0,9980570 AUTOREFERAT ROZPRAWY DOKTORSKIEJ x1 x1 x1 Tabela 5 Zmienne modelu x2 x3 x2 x3 x2 x3 2 R 0,9999401 0,9747436 0,9970075 0,9999580 x4 x4 x4 x4 2 Skorygowane R 0,9999306 0,9707558 0,9965350 0,9999486 Wartości skorygowanych współczynników determinacji dla różnych możliwych kombinacji potencjalnych zmiennych niezależnych – dla pętli matmul i modelu potęgowego wyrażonego równaniem (3). 2 Zmienne modelu R 0,6540767 0,9982205 0,9119271 0,9183616 0,9994628 0,9383487 0,9655228 0,9982451 0,9982402 0,9549970 0,9994630 0,9999501 0,9796433 0,9982646 0,9999514 x1 x2 x3 x4 x1 x1 x1 x2 x3 x4 x2 x2 X1 x1 x1 x1 x2 x2 x2 x2 x3 x3 x3 x3 x3 x3 x4 x4 x4 x4 x4 x4 2 Skorygowane R 0,6458404 0,9981782 0,9098301 0,9164178 0,9994366 0,9353413 0,9638410 0,9981595 0,9981543 0,9528018 0,9994227 0,9999463 0,9781166 0,9981345 0,9999464 Aby zweryfikować poprawność postaci analitycznej modelu wynikającej z analizy współczynnika determinacji oraz skorygowanego współczynnika determinacji, wykorzystano: wykresy reszt dla zmiennych niezależnych modelu (celem ustalenia czy występuje homoskedastyczność), test statystyczny do oceny istotności zaproponowanego równania modelu regresyjnego, oparty o statystykę testową F, test statystyczny (oparty o statystykę testową Kołmogorowa-Smirnowa), badający, czy rozkład reszt uzyskanych dla zaproponowanego modelu jest rozkładem normalnym. Wyniki weryfikacji zaproponowanej postaci analitycznej modelu (model wyrażony równaniem (3) ze zmiennymi niezależnymi: X1, X2, X3, X4) przedstawiają się następująco: Wykresy reszt dla zmiennych niezależnych modelu 12 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Rozkład reszt dla log(X2) - pętla nonInterf 0,1 0 -0,1 0 1 2 3 4 Składniki resztowe Składniki resztowe Rozkład reszt dla log(X1) - pętla nonInterf 0,1 0 -0,1 0 2 Rozkład reszt dla log(X3) - pętla nonInterf 6 Rozkład reszt dla log(X4) - pętla nonInterf 0,05 0,05 Składniki resztowe Składniki resztowe 4 log(X2) log(X1) 0 -0,05 0 0,5 1 1,5 log(X3) 0 0 0,2 0,4 0,6 0,8 -0,05 log(X4) Rysunek 1 Wykresy reszt dla zmiennych niezależnych uliniowionego modelu wyrażonego równaniem (3) ze zmiennymi niezależnymi: X1, X2, X3, X4 – dla pętli nonInterf Rozkład reszt dla log(X2) - pętla matmul 0,1 0 -3 -2 -1 -0,1 0 -0,2 1 Składniki resztowe Składniki resztowe Rozkład reszt dla log(X1) - pętla matmul 2 0,1 0 -0,1 0 -0,2 2 8 10 Rozkład reszt dla log(X4) - pętla matmul Rozkład reszt dla log(X3) - pętla matmul 0,1 0 0,1 1 2 3 Składniki resztowe Składniki resztowe 6 log(X2) log(X1) -0,1 0 -0,2 4 0 -0,1 0 0,2 0,4 0,6 0,8 -0,2 log(X3) log(X4) Rysunek 2 Wykresy reszt dla zmiennych niezależnych uliniowionego modelu wyrażonego równaniem (3) ze zmiennymi niezależnymi: X1, X2, X3, X4– dla pętli matmul Na wykresach reszt (patrz Rysunek 1 oraz Rysunek 2) reszty są rozłożone losowo, nie wykazują żadnej tendencji tj. wzrostu lub spadku ze wzrostem wartości którejś ze zmiennych niezależnych (co świadczyłoby o nieujęciu w modelu czynnika o charakterze 13 AUTOREFERAT ROZPRAWY DOKTORSKIEJ systematycznym); wariancja reszt jest stała. Taka sytuacja (homoskedastyczność) jest zgodna z ogólnymi założeniami analizy regresji. Test statystyczny do oceny istotności regresyjnego, oparty o statystykę testową F zaproponowanego równania modelu Dla obu przypadków, tj. dla pętli nonInterf i matmul, sprawdzono istotność równania regresji otrzymanego dla modelu ogólnego wyrażonego równaniem (3), ze zmiennymi niezależnymi: X1, X2, X3, X4. W tym celu, wykorzystano zestaw następujących hipotez: H0: 1 0 2 0 k 0 H1: 1 0 2 0 k 0 gdzie βi to współczynnik regresji dla i-tej zmiennej niezależnej występującej w równaniu regresji Wyniki weryfikacji hipotezy o istotności równania regresji dla pętli nonInterf i matmul przedstawiono w Tabeli 6. Tabela 6 Wyniki weryfikacji hipotezy o istotności równania regresji (model wyrażony równaniem (3) ze zmiennymi niezależnymi: X1, X2, X3, X4 – dla pętli nonInterf i matmul Pętla nonInterf matmul Wartość statystyki F 112 988,28 205 702,56 Graniczny poziom istotności p -39 2,52 x 10 -84 9,74 x 10 Dla obu przypadków, tj. dla pętli nonInterf i matmul, uzyskano bardzo małe wartości granicznego poziomu istotności (p). Oznacza to, że można przyjąć, że w obu przypadkach równania regresji, uzyskane z modelu ogólnego, jako całość są statystycznie istotne. Test statystyczny (oparty o statystykę testową Kołmogorowa-Smirnowa), badający, czy rozkład reszt uzyskanych dla zaproponowanego modelu jest rozkładem normalnym. Dla obu pętli wzorcowych sprawdzono czy reszty uzyskane dla modelu potęgowego wyrażonego równaniem (3) mają rozkład zbliżony do rozkładu normalnego N(μ, σ). Jeżeli rozkład reszt jest normalny lub zbliżony do normalnego oznacza to, że prognozy uzyskane przy pomocy modelu są „stabilne” – czyli spełniają regułę 3 sigm (co oznacza, że niemal wszystkie prognozy odchylają się od wartości faktycznie obserwowanych o nie więcej niż 3σ) i tylko znikomy odsetek prognoz uzyskanych według modelu (poniżej 1 % wszystkich prognoz) odchyla się od wartości faktycznie obserwowanych o więcej niż 3σ. Tak więc, jeżeli rozkład reszt uzyskanych dla zaproponowanego modelu jest rozkładem normalnym, to świadczy to o dobrych walorach prognostycznych modelu i w konsekwencji, o poprawności przyjętej postaci analitycznej modelu Dla obu przypadków, tj. dla pętli nonInterf i matmul, sprawdzono czy omawiany rozkład reszt jest rozkładem normalnym, wykorzystując w tym celu zestaw następujących hipotez: H0: H1: rozkład reszt jest rozkładem normalnym rozkład reszt nie jest rozkładem normalnym 14 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Wyniki weryfikacji hipotezy o normalności rozkładu reszt (uzyskanych dla modelu potęgowego wyrażonego równaniem (3) ze zmiennymi niezależnymi: X1, X2, X3, X4) dla pętli nonInterf i matmul przedstawiono w Tabeli 7. Tabela 7 Wyniki weryfikacji hipotezy o normalności rozkładu reszt (uzyskanych dla modelu potęgowego wyrażonego równaniem (3), ze zmiennymi niezależnymi: X1, X2, X3, X4) – dla pętli nonInterf i matmul Pętla nonInterf matmul Wartość statystyki testowej Kołmogorowa-Smirnowa 0,1054 0,1074 Graniczny poziom istotności p 0,9372 0,6507 Dla obu przypadków, to jest dla pętli nonInterf i matmul, uzyskano bardzo wysokie wartości granicznego poziomu istotności (p). Z tego względu, można przyjąć, że w obu przypadkach brak jest podstaw do odrzucenia hipotezy zerowej – a co za tym idzie, w obu przypadkach analizowany rozkład reszt jest rozkładem normalnym. Na podstawie przedstawionych powyżej wyników analizy regresji, na potrzeby problemu rozpatrywanego w niniejszej pracy przyjęto, jako model ogólny, regresyjny model statystyczny ze zmiennymi: Yt, X1, X2, X3, X4 oraz parametrami a1, a2, a3, a4, wyrażony w postaci funkcji potęgowej. Model ten jest postaci: Yt X 1a1 X 2a 2 X 3a3 X 4a 4 (7) gdzie: Yt X1 X2 X3 X4 a1, a2, a3, a4 – szacowany czas procesora dla wykonania pętli programowej przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora, – wielkość bezwymiarowa, określająca stosunek łącznego rozmiaru pamięci podręcznej L1 i L2, przypadającej na pojedynczy wątek OpenMP, do odcisku danych dla pojedynczego wątku OpenMP, – łączna ważona liczba operacji przypadająca na pojedynczy wątek OpenMP, – maksymalna wielkość pojedynczej porcji iteracji przydzielonej do wykonania przez wątek, dla danego sposobu przydziału iteracji do wątków OpenMP, – liczba wątków OpenMP wykonujących program, – parametry, których wartości wyznaczono na podstawie analizy regresji, przeprowadzonej dla danych empirycznych zebranych w docelowym środowisku sprzętowo-programowym dla specjalnie przygotowanej próbki. Sposób oszacowania wartości parametrów modeli szczególnych Przyjęto, że sposób wyznaczenia wartości parametrów modeli szczególnych będzie miał charakter metody, którą można zastosować dla dowolnego środowiska. Dlatego też, podjęto decyzję o wyznaczaniu wartości parametrów a1, a2, a3, a4 dla danego środowiska drogą analizy statystycznej danych empirycznych, zebranych w środowisku w metodyczny sposób. 15 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Do wyznaczenia wartości parametrów a1, a2, a3, a4 wykorzystano programy-wzorce ponownego użycia danych. Każdy wzorzec reprezentował inny sposób ponownego użycia danych w programie. W pracy wykorzystano 2 programy-wzorce (zwane w pracy pętlami wzorcowymi): nonInterf i matmul. Każda z pętli wzorcowych była reprezentantem pewnych arbitralnie przyjętych cech związanych z ponownym użyciem danych i interferencją. Z uwagi na występowanie ponownego użycia danych i interferencji, można wyróżnić następujące rodzaje pętli: Pętle, w których nie występuje ponowne użycie danych – w praktyce, bardzo rzadko wykorzystywane i w związku z tym, pominięte w modelu Pętle, w których występuje ponowne użycie danych Przy braku interferencji Pętla wzorcowa: nonInterf Przy występowaniu interferencji Pętla wzorcowa: matmul Pętla nonInterf cechuje się występowaniem ponownego użycia danych, przy braku interferencji. Pętla matmul cechuje się występowaniem ponownego użycia danych oraz interferencji. Kody źródłowe tych pętli przedstawiono w Tabeli 8. Tabela 8 Pętle wzorcowe Założenia Konkretyzacja Pętla nonInterf int ma[N][N],mb[N][N],mc[N][N],md[N][N],me[N][N]; int i, j, N; Pętla wzorcowa 1 Występowanie ponownego użycia danych przy braku interferencji for (i = 0; i <= N-1; i++) { for (j= 0; j <= N-1; j++) { ma[i][j]=1; mb[i][j]=mc[i][j]+md[i][j]*me[i][j]; } //endfor j } //endfor i Pętla matmul int ma[N][N],mb[N][N],mc[N][N]; int i, j, k, r, N; Pętla wzorcowa 2 Występowanie ponownego użycia danych oraz interferencji for (i = 0; i <= N-1; i++) { for (k=0; k <= N-1; k++) { r = ma[i][k]; for (j=0; j <= N-1; j++){ mc[i][j]= mc[i][j] + r*mb[k][j]; } //endfor j } //endfor k } //endfor i 16 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Każda z pętli wzorcowych była reprezentantem pewnych arbitralnie przyjętych cech związanych z ponownym użyciem danych i interferencją. Dane empiryczne, zebrane dla pętli wzorcowej, były podstawą do wyznaczenia wartości parametrów a1, a2, a3, a4 modelu szczególnego dotyczącego wszystkich pętli, które mają te same arbitralnie przyjęte cechy, co pętla wzorcowa. Pętla, nie będąca pętlą wzorcową, a mająca te same arbitralnie przyjęte cechy, co pętla wzorcowa, jest określana w pracy jako pętla niewzorcowa. Należy tu podkreślić, że pętle wzorcowe: nonInterf oraz matmul to przykładowe pętle wzorcowe charakteryzujące się cechami, wskazanymi w Tabeli 8. Pętle te przyjęto na potrzeby utworzenia przykładowych modeli szczególnych dla modelu ogólnego (7). Ta konkretyzacja pętli wzorcowych (tj. poprzez pętle nonInterf oraz matmul) jest jedną z wielu możliwych konkretyzacji. Przyjmując inną konkretyzację pętli wzorcowej 1 oraz pętli wzorcowej 2 można uzyskać modele szczególne o innych przestrzeniach dziedziny, niż modele szczególne zbudowane w oparciu o pętle wzorcowe nonInterf i matmul, co dowodzi dużej uniwersalności opracowanego podejścia. W celu uzyskania reprezentatywnych dla analizowanego środowiska danych empirycznych, założono, że dla każdej z pętli wzorcowych: 1/ Łączny rozmiar danych, przetwarzanych w pętli, nie przekracza rozmiaru pamięci podręcznej L2 dostępnej dla procesora. Założenie 1/ wyrażono następującym równaniem: total _ matrix _ size ( N ) 1 L2 _ per _ processor (8) gdzie: total_matrix_size(N) L2_per_processor 2/ – łączny rozmiar danych zapisanych w zmiennych tablicowych przetwarzanych w pętli (wielkość wyrażona w bajtach), dla rozmiaru problemu N, – rozmiar pamięci podręcznej L2, dostępnej dla pojedynczego procesora (wielkość wyrażona w bajtach). Różnica względna pomiędzy średnią liczbą porcji iteracji, przypadającą na pojedynczy wątek OpenMP, a maksymalną liczbą porcji iteracji, przypadającą na pojedynczy wątek OpenMP przy danym sposobie przydziału iteracji do wątków nie przekracza 50% (wartość przyjęta a priori). Założenie 2/ wyrażono następującym równaniem: no _ chunksmax no _ chunksaverage 0,5 no_chunksaverage gdzie: no_chunksmax no_chunksaverage (9) – maksymalna liczba porcji iteracji, przypadająca na pojedynczy wątek OpenMP, przy danym sposobie przydziału iteracji do wątków, – średnia liczba porcji iteracji, przypadająca na pojedynczy wątek OpenMP, przy danym sposobie przydziału iteracji do wątków. 17 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Wartości no_chunksmax, no_chunksaverage można wyznaczyć przy pomocy następujących równań: N outermost no _ chunksmax (10) num _ threads X 3 no _ chunksaverage N outermost num _ threads X 3 (11) gdzie: – liczba iteracji do wykonania w najbardziej zewnętrznej pętli w pętli zagnieżdżonej (uwaga: Noutermost dotyczy wyłącznie najbardziej zewnętrznej pętli gniazda i nie uwzględnia w żaden sposób liczby iteracji pętli zagnieżdżonych w najbardziej zewnętrznej pętli gniazda), num_threads – liczba wątków wykonujących program (tutaj: analizowaną pętlę programową), X3 – maksymalna, dla danego sposobu przydziału iteracji do wątków OpenMP, wielkość pojedynczej porcji iteracji przydzielonej do wykonania przez wątek. Noutermost Przy założeniach 1/ i 2/, dla przyjętych pętli wzorcowych i środowiska sprzętowego badań empirycznych, otrzymano następujące modele szczególne: dla pętli wzorcowej nonInterf: Yt = X1 -0,325431 x X2 0,675172 x X3 -0,082602 x X4 0,981967 (12) dla pętli wzorcowej matmul: Yt = X1 -0,298695 x X2 0,623738 x X3 0,014426 x X4 0,962976 (13) Wyniki analizy regresji (tj. model regresyjny) nie powinny być ekstrapolowane na dane spoza zakresu, na którym został zbudowany model regresyjny, ponieważ nie jest znany charakter zależności pomiędzy wartościami zmiennych niezależnych i wartościami zmiennej zależnej spoza zakresu. W pracy, aby uchronić się przed niebezpieczeństwem opisanej ekstrapolacji przy stosowaniu modeli szczególnych dla pętli niewzorcowych, przyjęto następujące założenia szczegółowe dotyczące zakresu stosowalności modeli szczególnych: 1/ Wartość λ, wyznaczona według równania (8) dla pętli niewzorcowej, nie może przekraczać wartości λ wyznaczonych dla odpowiadającej jej pętli wzorcowej. Założenie to jest wyrażone następującym równaniem: λ min(referenceLoop) ≤ λ ≤ λ max(referenceLoop) gdzie: λ – wartość λ wyznaczona dla pętli niewzorcowej, λ min(referenceLoop) – najmniejsza wartość λ dla pętli wzorcowej, λ max(referenceLoop) – największa wartość λ dla pętli wzorcowej. 18 (14) AUTOREFERAT ROZPRAWY DOKTORSKIEJ 2/ Wartość θ, wyznaczona według równania (9) dla pętli niewzorcowej, nie może przekraczać 0,5. 3/ Faktyczny czas wykonania analizowanej pętli w środowisku docelowym musi być tego samego rzędu wielkości, co czas wykonania odpowiadającej jej pętli wzorcowej. Założenie to jest wyrażone następującym równaniem: γ min(referenceLoop) ≤ γ ≤ γ max(referenceLoop) (15) gdzie: γ – faktyczny czas procesora spędzony na wykonywaniu analizowanej pętli przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora, γ min(referenceLoop) – najkrótszy (spośród czasów zmierzonych dla całej próby) faktyczny czas procesora spędzony na wykonywaniu pętli wzorcowej przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora, γ max(referenceLoop) – najdłuższy (spośród czasów zmierzonych dla całej próby) faktyczny czas procesora spędzony na wykonywaniu pętli wzorcowej przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora. Wprowadzenie założenia wyrażonego równaniem (15) wynika stąd, że mogą istnieć pętle, dla których założenie 1/ oraz 2/ są spełnione, niemniej pętle te, pomimo podobieństwa do pętli wzorcowych pod względem występowania ponownego użycia danych oraz pod względem występowania interferencji, pod innymi względami są na tyle różne od pętli wzorcowych, że ich czasy wykonania są zupełnie innego rzędu wielkości, niż czasy wykonania pętli wzorcowych. Weryfikacja jakości oszacowań Weryfikacja jakości oszacowań dokonanych według zaproponowanego modelu ogólnego, którego opracowanie było celem pracy, sprowadzała się do oceny jakości modeli szczególnych utworzonych w oparciu o model ogólny. Ocena jakości modeli szczególnych została przeprowadzona w dwóch aspektach: jakościowym i ilościowym. Celem oceny jakości modeli szczególnych w aspekcie jakościowym było stwierdzenie czy modele te pozwalają z zadawalającą dokładnością oszacować czas wykonania pętli niewzorcowych, spełniających założenia odnośnie zakresu stosowalności przedmiotowych modeli szczególnych. W praktyce oznaczało to, że należało sprawdzić czy dla danego rozmiaru problemu rozwiązywanego w programie (pętli programowej), występowała zgodność kierunku zmian zmierzonych czasów wykonania poszczególnych wersji danego programu (pętli programowej) z kierunkiem zmian odpowiadających im czasów oszacowanych według modeli należących do opracowanej rodziny modeli. Celem oceny jakości omawianych modeli szczególnych w aspekcie ilościowym było określenie wielkości błędów oszacowań dokonanych według tych modeli. Błąd względny oszacowania wyznaczono w następujący sposób: 19 AUTOREFERAT ROZPRAWY DOKTORSKIEJ δY(per_thread) – błąd względny oszacowania wartości Yt(per_thread), wyznaczony na podstawie równania (16) Y ( per _ thread) Yt ( per _ thread) ( per _ thread) 100% ( per _ thread) Yt ( per _ thread) ( per _ thread) Yt X 4 a4 X 4 a4 (16) (17) (18) gdzie: – szacowany czas procesora dla wykonania pętli programowej przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora, wyznaczony na podstawie modelu szczególnego, Yt(per_thread) – Yt w przeliczeniu na jeden wątek, γ – faktyczny (to znaczy zmierzony empirycznie) czas procesora spędzony na wykonywaniu pętli programowej przez wszystkie wątki programu, wyrażony liczbą taktów zegara procesora, γ(per_thread) – γ w przeliczeniu na jeden wątek, X4 – liczba wątków OpenMP wykonujących program, a4 – parametr a4 odpowiedniego modelu szczególnego. Yt Weryfikacja statystyczna wyników oceny jakości modeli szczególnych (oba aspekty oceny) została przeprowadzona przy pomocy testu Kołmogorowa-Smirnowa. Ponieważ w rezultacie przeprowadzonego testu Kołmogorowa-Smirnowa rozkład reszt uzyskanych dla rozpatrywanych modeli szczególnych można było uznać za normalny – to ocena jakości tych modeli w aspekcie jakościowym i ilościowym była pozytywna. Sposób wykorzystania modeli szczególnych w kompilacji iteracyjnej W pracy zaproponowano autorską procedurę przeprowadzenia kompilacji iteracyjnej przy wykorzystaniu modeli szczególnych. W niniejszym autoreferacie, sposób wykorzystania tej procedury zademonstrowano na przykładzie pętli UA_diffuse_3, pochodzącej ze zbioru testów referencyjnych NAS Parallel Benchmarks (NPB) ([6] [9]) (rozmiar problemu rozwiązywanego w tej pętli oznaczono przez N; w przykładzie N=30). Kod źródłowy zrównoleglonej pętli UA_diffuse_3 to: 20 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Kod źródłowy pętli UA_diffuse_3 – wersja zrównoleglona int N = 30; int NUM_THREADS = ?; int CHUNK_SIZE=?; Możliwe wartości: wartość liczbowa podana przez programistę, wartość domyślna (równa N / NUM_THREADS), wynikająca ze specyfiki standardu OpenMP int tm1[N][N][N], u[N][N][N], wdtdr[N][N]; omp_set_num_threads(NUM_THREADS); //ustawienie liczby wątków #pragma omp parallel for private(iz,k,j,i) schedule(static, CHUNK_SIZE) for (iz = 0; iz < N; iz++) { for (k = 0; k < N; k++) { for (j = 0; j < N; j++) { for (i = 0; i < N; i++) { tm1[iz][j][i] = tm1[iz][j][i]+wdtdr[k][i]*u[iz][j][k]; } //endfor i } //endfor j } //endfor k } //endfor iz Przyjmując różne wartości zmiennych NUM_THREADS oraz CHUNK_SIZE, można uzyskać różne (ale równoważne semantycznie) postaci kodu źródłowego pętli UA_diffuse_3. Należy tak dobrać wartości zmiennych NUM_THREADS oraz CHUNK_SIZE, by czas wykonania programu (pętli) był możliwie najkrótszy. Zmienna CHUNK_SIZE może przyjąć wartość domyślną lub wartość wskazaną przez programistę. Dla pętli UA_diffuse_3 utworzono 9 różnych postaci kodu źródłowego, o następujących wartościach zmiennych NUM_THREADS oraz CHUNK_SIZE: Postać kodu źródłowego pętli UA_diffuse_3, N=30 NUM_THREADS CHUNK_SIZE postać 1 postać 2 postać 3 postać 4 postać 5 postać 6 postać 7 postać 8 postać 9 2 2 2 3 3 3 4 4 4 domyślny 5 3 3 domyślny 5 5 3 domyślny Dla każdej z tych 9 postaci, dokonano oszacowania czasu jej wykonania w docelowym środowisku sprzętowym w przeliczeniu na 1 wątek, wykorzystując w tym celu model szczególny, adekwatny dla pętli UA_diffuse_3. Wyniki oszacowań ustawiono w kolejności od największego do najmniejszego, tworząc ciąg. 21 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Następnie, w docelowym środowisku wykonania wykonano kody źródłowe odpowiadające poszczególnym wartościom z ciągu i zapisano zmierzony empirycznie rzeczywisty czas ich wykonania w przeliczeniu na 1 wątek. Niech: t – liczba wszystkich, podanych na wejściu, różnych postaci kodu źródłowego pętli UA_diffuse_3 (t = 9) k (0 < k < t) – jest wartością podaną przez użytkownika, oznaczającą przyjętą liczbę kodów źródłowych pętli UA_diffuse_3 o najkrótszych oszacowanych czasach wykonania. Dla k kodów źródłowych pętli UA_diffuse_3 o najkrótszych oszacowanych czasach wykonania, porównano oszacowane czasy wykonania ze zmierzonymi czasami wykonania tych kodów. Do ostatecznego stosowania wybrano ten spośród k kodów źródłowych, którego zmierzony czas wykonania był najkrótszy. Na kolejnych wykresach (patrz Rysunek 3) przedstawiono, jak wygląda wybór kodu do ostatecznego stosowania w zależności od przyjętej wartości k. Żółtymi słupkami oznaczono kody źródłowe, brane pod uwagę przy wyborze kodu do ostatecznego stosowania. Błękitnym prostokątem oznaczono kod źródłowy, który miał najkrótszy zmierzony czas wykonania w środowisku docelowym. Był to kod źródłowy nr 8. 22 AUTOREFERAT ROZPRAWY DOKTORSKIEJ 95 ,0 1 ,78 26 ,9 07 11 ,2 4 37 37 48 99 ,9 48 84 ,6 37 postać 9 8 95 ,0 72 06 ,2 1 37 26 ,9 07 37 4 37 ,78 2 84 ,6 11 ,2 48 99 ,9 8 2 08 ,6 49 48 50 ,5 72 71 ,6 23 3 k=1 postaci kodu źródłow ego, o najlepszych rokow aniach odnośnie czasu w ykonania szacow ana liczba taktów zegara CPU, przypadająca na 1 w ątek w g modelu - Yt(per_thread) 9 0 postać 1 postać 9 23 6 6 ,0 34 ,0 06 ,0 06 26 30 30 6 1 000 ,2 36 2 000 0 liczba taktów zegara CPU 1 37 26 ,9 07 37 4 11 ,2 37 ,78 2 48 84 ,6 8 48 99 ,9 2 08 ,6 49 5 1 8 71 06 ,2 72 95 ,0 5 1 50 ,5 72 8 2 08 ,6 49 9 postać 8 faktyczna liczba taktów zegara CPU, przypadająca na 1 w ątek w g pomiaru - γ(per_thread) 30 ,0 02 liczba taktów zegara CPU 2 71 72 06 ,2 5 1 50 ,5 liczba taktów zegara CPU 1 26 ,9 07 37 4 11 ,2 37 3 ,6 23 ,0 34 23 26 postać 7 37 9 postać 8 ,1 16 postać 7 postać 2 postać 3 postać 4 postać 5 postać 6 postać 7 postać 8 postać 9 Postać kodu źródłowego Postać kodu źródłowego Rysunek 3 postać 6 48 postać 6 3 000 1 postać 5 4 000 ,8 51 postać 4 postać 5 Faktyczny a szacowany czas wykonania różnych postaci kodu źródłowego pętli UA_diffuse_3, N=30 k=1 48 szacow ana liczba taktów zegara CPU, przypadająca na 1 w ątek w g modelu - Yt(per_thread) 9 postać 3 postać 4 5 000 2 ,6 23 3 postać 2 6 postać 3 6 000 ,3 29 23 6 ,0 34 ,0 06 6 6 ,0 06 26 30 30 ,2 36 0 0 postać 1 ,0 06 k=3 postaci kodu źródłow ego, o najlepszych rokow aniach odnośnie czasu w ykonania faktyczna liczba taktów zegara CPU, przypadająca na 1 w ątek w g pomiaru - γ(per_thread) 30 ,0 02 1 000 30 postać 2 7 000 49 9 2 000 szacow ana liczba taktów zegara CPU, przypadająca na 1 w ątek w g modelu - Yt(per_thread) Postać kodu źródłowego 37 ,1 16 1 2 ,8 51 48 48 ,3 29 3 000 49 4 000 6 5 000 ,0 06 postać 1 8 000 6 000 30 6 0 postać 9 Faktyczny a szacowany czas wykonania różnych postaci kodu źródłowego pętli UA_diffuse_3, N=30 k=zaokrąglenie w górę (0,3 x 9) 7 000 ,2 36 1 000 Postać kodu źródłowego 8 000 30 0 postać 8 faktyczna liczba taktów zegara CPU, przypadająca na 1 w ątek w g pomiaru - γ(per_thread) ,0 02 postać 7 2 000 k=5 postaci kodu źródłow ego, o najlepszych rokow aniach odnośnie czasu w ykonania 37 postać 6 9 postać 5 ,1 16 postać 4 48 postać 3 1 postać 2 3 000 ,8 51 9 postać 1 4 000 48 ,6 23 3 0 5 000 2 23 6 ,0 34 ,0 06 26 30 6 6 ,0 06 0 ,2 36 30 30 ,0 02 1 000 szacow ana liczba taktów zegara CPU, przypadająca na 1 w ątek w g modelu - Yt(per_thread) 6 000 ,3 29 9 faktyczna liczba taktów zegara CPU, przypadająca na 1 w ątek w g pomiaru - γ(per_thread) 37 ,1 16 2 000 k=9 postaci kodu źródłow ego, o najlepszych rokow aniach odnośnie czasu w ykonania 7 000 49 48 1 2 ,8 51 ,3 29 3 000 48 4 000 37 5 000 ,78 2 84 ,6 48 48 99 ,9 8 2 08 ,6 49 6 000 72 8 95 ,0 8 000 71 5 72 06 ,2 1 50 ,5 72 7 000 49 liczba taktów zegara CPU 8 000 8 Faktyczny a szacowany czas wykonania różnych postaci kodu źródłowego pętli UA_diffuse_3, N=30 k=zaokrąglenie w górę (0,5 x 9) Faktyczny a szacowany czas wykonania różnych postaci kodu źródłowego pętli UA_diffuse_3, N=30 k=9 Wybór postaci kodu źródłowego do ostatecznego stosowania, wg autorskiej procedury przeprowadzenia kompilacji iteracyjnej przy wykorzystaniu modeli szczególnych – pętla UA_diffuse_3 (N = 30) 23 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Dla k = 1, kod źródłowy nr 8 (kod o najkrótszym czasie wykonania) NIE został wybrany do ostatecznego stosowania. Dla k > 1, do ostatecznego stosowania został wybrany kod źródłowy nr 8 (kod o najkrótszym czasie wykonania). Należy tu zauważyć, że im większa wartość k, tym dłuższy czas wykonania kompilacji iteracyjnej. Jednocześnie, ze wzrostem k, wzrasta prawdopodobieństwo wyboru, do ostatecznego stosowania, kodu źródłowego o najkrótszym (spośród wszystkich kodów, podanych na wejściu) czasie wykonania. Czas wykonania kompilacji iteracyjnej wg zaproponowanej procedury, w zależności od przyjętej wartości k, przedstawiono na Rysunku 4. Czas wykonania kompilacji iteracyjnej wg zaproponowanej procedury, dla pętli UA_diffuse_3 (N=30) 9 0 ,9 49 8 0 ,4 24 0 4 45 000 liczba taktów zegara CPU 40 000 3 4 ,2 03 33 35 000 5 9 ,1 83 25 30 000 25 000 20 SUKCES - stosując zaproponowaną prcedurę, znaleziono wśórd rozpatrywanych kodów postać o najkrótszym czasie wykonania 4 0 ,5 93 6 0 ,5 03 16 20 000 15 000 3 5 ,9 14 11 3 74 PORAŻKA - stosując zaproponowaną prcedurę, NIE znaleziono wśórd rozpatrywanych kodów postaci o najkrótszym czasie wykonania 3 10 000 0 4,7 72 6, 91 50 000 47 5 000 0 9 8 7 6 5 4 3 2 1 k Rysunek 4 Czas wykonania kompilacji iteracyjnej wg zaproponowanej procedury, dla pętli UA_diffuse 3 (N = 30) Dla pętli UA_diffuse_3 (N = 30) optymalna wartość k to 2; czas wykonania kompilacji iteracyjnej wynosi wówczas około 7 500 przyjętych jednostek miary czasu. Dla k = 9, czas ten wynosi około 47 500 jednostek, czyli jest ponad 6-krotnie dłuższy. Rozdział 4 Badania eksperymentalne W rozdziale 4 dysertacji przedstawiono sposób przeprowadzenia badań eksperymentalnych, ich cele oraz podsumowanie uzyskanych wyników. Celem badań eksperymentalnych było: wyznaczenie wartości parametrów a1, a2, a3, a4 dla przykładowych modeli szczególnych, przeprowadzenie oceny jakości przykładowych modeli szczególnych w aspekcie jakościowym i ilościowym. 24 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Aby wyznaczyć wartości parametrów a1, a2, a3, a4 dla 2 przykładowych modeli szczególnych, wykorzystano autorskie pętle wzorcowe: nonInterf oraz matmul. Dla wykazania przydatności zaproponowanego modelu do stosowania go podczas kompilacji iteracyjnej, wykorzystano zbiór testów referencyjnych NAS Parallel Benchmarks (NPB) ([6] [9]). NPB został wykorzystany z uwagi na to, że jest przeznaczony do oceny wydajności komputerów równoległych i obejmuje dużą liczbę bardzo różnorodnych pętli. Do badań wybrano 10 pętli programowych, pochodzących ze zbioru NPB. Pętle programowe wybrane do badań były inne niż programy-wzorce ponownego użycia danych, ale cechowały się takim samym typem ponownego użycia danych, co programy-wzorce. Przy pomocy modeli szczególnych, oszacowano czasy wykonania różnych postaci 10 wybranych pętli programowych. Łącznie, oszacowano czas wykonania 307 różnych kodów źródłowych. Dla wszystkich analizowanych pętli, przeprowadzono weryfikację hipotezy o normalności rozkładu reszt (uzyskanych dla odnośnych modeli szczególnych), wykorzystując w tym celu test Kołmogorowa-Smirnowa. Na podstawie uzyskanych wyników testu KołmogorowaSmirnowa, we wszystkich analizowanych przypadkach można przyjąć, że wspomniany rozkład jest rozkładem normalnym. Dla każdej z wybranych pętli, zaobserwowano zgodność kierunku zmian zmierzonych czasów wykonania poszczególnych wersji danej pętli z kierunkiem zmian odpowiadających im czasów oszacowanych według modeli szczególnych. Wniosek o występowaniu zgodności kierunku zmian zmierzonych czasów wykonania i oszacowanych czasów wykonania sformułowano na podstawie porównania trendów liniowych przedstawiających tendencję zmian zmierzonych czasów wykonania z trendami liniowymi przestawiającymi tendencję zmian oszacowanych czasów wykonania Średni oraz maksymalny błąd względny oszacowania w porównaniu z czasem zmierzonym empirycznie dla wszystkich postaci kodu źródłowego, przyjętych dla danej pętli i dla danego rozmiaru problemu rozwiązywanego w pętli, nie przekraczały odpowiednio 55 i 65 punktów procentowych. Tak więc, dla każdej z wybranych pętli, oszacowania dokonane według modeli szczególnych były zadawalająco dokładne – co potwierdzało prawdziwość hipotezy badawczej przyjętej w pracy. Na podstawie przedstawionych w pracy wyników badań eksperymentalnych, dla każdej z wybranych pętli oszacowano także skrócenie czasu trwania kompilacji iteracyjnej (a w konsekwencji: czasu wytwarzania oprogramowania), jakie można by uzyskać, stosując modele szczególne zgodnie z opracowaną w ramach pracy procedurą ich wykorzystania w kompilacji iteracyjnej. Przyjęto następujące oznaczenia: t – liczba wszystkich, podanych na wejściu, różnych postaci kodu źródłowego danej pętli k (0 < k < t) – jest wartością podaną przez użytkownika, oznaczającą przyjętą liczbę kodów źródłowych danej pętli o najkrótszych oszacowanych czasach wykonania. kmin – minimalna wartość k gwarantująca, że do ostatecznego stosowania zostanie wybrany kod o najkrótszym czasie wykonania zmierzonym w środowisku sprzętowym Uzyskane wyniki przedstawiono w niniejszym autoreferacie, w tabelach 9 ÷ 11. 25 AUTOREFERAT ROZPRAWY DOKTORSKIEJ Tabela 9 Skrócenie czasu wykonywania kompilacji iteracyjnej szczególnego wyprowadzonego dla pętli nonInterf Rozmiar zadania wykonywanego w pętli Pętla t po zastosowaniu modelu Czas T wykonania kompilacji iteracyjnej dla Skrócenie kompilacji iteracyjnej t kodów źródłowych = (Tt / Tkmin) k min kmin kodów źródłowych CG_cg_3 CG_cg_3 CG_cg_3 CG_cg_4 CG_cg_4 CG_cg_4 75 000 118 000 160 000 100 000 215 000 330 000 8 8 8 8 8 8 2 2 2 2 1 1 1 957,38 3 007,58 4 086,69 2 053,32 4 334,33 6 630,62 341,16 516,88 698,61 354,45 369,65 560,69 5,74 5,82 5,85 5,79 11,73 11,83 FT_auxfnct_2 FT_auxfnct_2 FT_auxfnct_2 LU_HP_pintgr_11 LU_HP_pintgr_11 LU_HP_pintgr_11 MG_mg_3 MG_mg_3 MG_mg_3 UA_diffuse_2 UA_diffuse_2 UA_diffuse_2 30 38 45 200 265 330 26 000 57 444 88 888 80 000 173 333 266 666 8 9 8 8 8 8 6 6 6 6 6 6 1 3 3 2 1 1 1 2 2 1 2 2 1 970,33 4 262,63 6 449,17 2 411,02 4 189,57 6 463,89 1 415,69 3 077,12 4 721,80 1 507,84 3 209,56 4 952,80 170,82 1 115,40 1 827,18 415,78 357,66 547,95 168,43 723,66 1 105,69 178,29 753,97 1 160,27 11,53 3,82 3,53 5,80 11,71 11,80 8,41 4,25 4,27 8,46 4,26 4,27 Tabela 10 Skrócenie czasu wykonywania kompilacji iteracyjnej szczególnego wyprowadzonego dla pętli matmul Pętla UA_diffuse_3 UA_diffuse_3 UA_diffuse_3 UA_diffuse_4 UA_diffuse_4 UA_diffuse_4 UA_transfer_11 UA_transfer_11 UA_transfer_11 UA_transfer_16 UA_transfer_16 UA_transfer_16 Rozmiar zadania wykonywanego w pętli 30 50 71 30 50 71 100 267 433 100 267 433 t po zastosowaniu Czas T wykonania kompilacji iteracyjnej dla Skrócenie kompilacji iteracyjnej t kodów źródłowych kmin kodów źródłowych = (Tt / Tkmin) 7 434,70 28 664,12 440 496,92 3 553,01 27 287,32 406 675,21 3 075,79 58 900,22 259 521,85 6 137,31 58 795,83 251 492,63 6,39 12,81 3,53 12,80 12,80 3,53 12,82 12,81 12,80 6,39 12,81 12,80 k min 9 9 9 9 9 9 9 9 9 9 9 9 2 1 3 1 1 3 1 1 1 2 1 1 47 490,99 367 227,10 1 553 446,57 45 461,97 349 379,17 1 436 886,56 39 440,76 754 399,16 3 322 817,71 39 222,20 753 418,47 3 219 799,16 26 modelu AUTOREFERAT ROZPRAWY DOKTORSKIEJ Tabela 11 Skrócenie czasu wykonywania kompilacji iteracyjnej szczególnego wyprowadzonego dla pętli matmul Rozmiar zadania wykonywanego w pętli Pętla UA_diffuse_3 z blokowaniem UA_diffuse_3 z blokowaniem UA_diffuse_4 z blokowaniem UA_diffuse_4 z blokowaniem UA_diffuse_4 z blokowaniem UA_transfer_11 z blokowaniem UA_transfer_11 z blokowaniem UA_transfer_16 z blokowaniem UA_transfer_16 z blokowaniem Rozdział 5 t po zastosowaniu modelu Czas T wykonania kompilacji iteracyjnej dla Skrócenie kompilacji iteracyjnej t kodów źródłowych = (Tt / Tkmin) k min kmin kodów źródłowych 30 6 1 32 717,19 3 832,76 8,54 50 9 1 372 406,66 29 061,50 12,81 30 6 1 30 950,68 3 633,07 8,52 50 9 1 355 263,02 27 649,17 12,85 66 6 1 585 501,19 83 959,39 6,97 100 9 1 50 544,85 3 620,25 13,96 267 6 2 791 499,21 219 195,31 3,61 100 9 1 51 596,66 3 726,92 13,84 267 6 2 787 679,05 219 196,70 3,59 Podsumowanie W rozdziale 5 dysertacji dokonano oceny otrzymanych wyników w odniesieniu do celu i tezy pracy. W wyniku przeprowadzonych badań eksperymentalnych empirycznie wykazano, że wykorzystując autorski model zaproponowany w pracy można uzyskać zadawalającą dokładność oszacowania czasów wykonania przykładowych pętli wybranych ze zbioru testów referencyjnych NPB. Tym samym, potwierdzono prawdziwość hipotezy badawczej przyjętej w pracy i poświadczono osiągnięcie celu pracy. 9. WARTOŚĆ TEORETYCZNA W pracy przedstawiono autorską rodzinę modeli do oszacowania czasu wykonania programu, składającą się z modelu ogólnego oraz modeli szczególnych. Rodzinę tę opracowano na podstawie danych empirycznych zebranych dla programów-wzorców, będących reprezentantami arbitralnie wybranych cech związanych ze strukturą programu i specyfiką środowiska wykonania programu. Przykładowe modele szczególne należące do opracowanej rodziny zastosowano do oszacowania czasu wykonania programów innych niż wzorce użyte do wyprowadzenia przedmiotowych modeli szczególnych. 10. WARTOŚĆ PRAKTYCZNA Oszacowano skrócenie czasu wykonywania kompilacji iteracyjnej (a w konsekwencji, czasu wytwarzania oprogramowania) jakie można uzyskać, stosując modele szczególne zgodnie z zaproponowaną w ramach pracy procedurą ich wykorzystania w kompilacji iteracyjnej. Dla 27 AUTOREFERAT ROZPRAWY DOKTORSKIEJ przykładów przedstawionych w pracy, a zaczerpniętych ze zbioru testów referencyjnych NPB, czas wykonywania kompilacji iteracyjnej uległ skróceniu od około 3 do około 14 razy (szczegółowe wyniki przedstawiono w niniejszym autoreferacie, w tabelach 9 ÷ 11). 11. AKCEPTACJA WYNIKÓW PRZEZ SPOŁECZNOŚĆ NAUKOWĄ Wyniki, które uzyskano w ramach realizacji badań związanych z tematem pracy, przedstawiono w następujących czasopismach: Metody Informatyki Stosowanej, Pomiary Automatyka Kontrola, Przegląd Elektrotechniczny oraz poddano dyskusji podczas następujących konferencji: XIV Konferencja Naukowa „Reprogramowalne Układy Cyfrowe” RUC 2011, I Konferencja Naukowa „Software and Security” SoftSec 2011, II Konferencja Naukowa „Software and Security” SoftSec 2013. 12. ZAKOŃCZENIE Celem pracy było: Opracowanie rodziny modeli statystycznych (przewidywanych do zastosowania w optymalizujących kompilatorach zrównoleglających) pozwalających na oszacowanie czasu wykonania aplikacji gruboziarnistych w standardzie OpenMP C/C++ przez komputery wieloprocesorowe z pamięcią dzieloną. Aby zrealizować powyższy cel, należało wykazać, że: Istnieje możliwość opracowania rodziny modeli statystycznych do oszacowania czasu wykonania aplikacji gruboziarnistych w standardzie OpenMP C/C++, które pozwolą na osiągnięcie zadawalającej dokładności oszacowania. Aby wykazać prawdziwość przyjętej hipotezy badawczej, zrealizowano zadania cząstkowe wskazane w rozdziale 4 autoreferatu. W wyniku realizacji tych zadań, opracowano: model ogólny wyrażony równaniem (7) (przedstawiony na stronie 15 autoreferatu), procedurę wykorzystania modelu w kompilacji iteracyjnej. Ostateczną postać modelu ogólnego (z kilku rozpatrywanych) wytypowano na podstawie analizy statystycznej materiału empirycznego, zebranego dla 2 pętli: nonInterf i matmul. Metody statystyczne wybrano z uwagi na ilościowy charakter problemu rozwiązywanego w pracy oraz nieznany faktyczny charakter zależności liczbowych pomiędzy czynnikami, które poddano analizie. W zaproponowanym modelu ogólnym szacowany czas wykonania pętli programowej, wyrażony zmienną Yt, został uzależniony od następujących czynników: rozmiaru pamięci podręcznej L1 i L2, przypadającej na pojedynczy wątek OpenMP, odcisku danych dla pojedynczego wątku OpenMP, liczby i typu operacji wykonywanych przez pojedynczy wątek OpenMP, 28 AUTOREFERAT ROZPRAWY DOKTORSKIEJ sposobu przydziału iteracji do wątków OpenMP, liczby wątków OpenMP wykonujących program, wyrażonych za pośrednictwem zmiennych niezależnych X1, X2, X3, X4, gdzie: X1 – stosunek łącznego rozmiaru pamięci podręcznej L1 i L2, przypadającej na pojedynczy wątek OpenMP, do odcisku danych dla pojedynczego wątku OpenMP; X2 – łączna ważona liczba operacji przypadająca na pojedynczy wątek OpenMP, X3 – maksymalna, dla danego sposobu przydziału iteracji do wątków OpenMP, wielkość pojedynczej porcji iteracji przydzielonej do wykonania przez wątek, X4 – liczba wątków OpenMP wykonujących program. W oparciu o zaproponowany model ogólny, utworzono dwa przykładowe modele szczególne. Przy pomocy modeli szczególnych, oszacowano czasy wykonania różnych postaci 10 pętli programowych wybranych ze zbioru testów referencyjnych NAS Parallel Benchmarks (NPB) [6] [9]. Łącznie, oszacowano czas wykonania 307 różnych kodów źródłowych. Dla każdej z wybranych pętli, zaobserwowano zgodność kierunku zmian zmierzonych czasów wykonania poszczególnych wersji danej pętli z kierunkiem zmian odpowiadających im czasów oszacowanych według modeli szczególnych. Maksymalny błąd względny oszacowania w porównaniu z czasem zmierzonym empirycznie dla wszystkich postaci kodu źródłowego, przyjętych dla danej pętli i dla danego rozmiaru problemu rozwiązywanego w pętli, nie przekraczał 65 punktów procentowych. Tak więc, dla każdej z wybranych pętli, oszacowania dokonane według modeli szczególnych były zadawalająco dokładne – co potwierdzało prawdziwość hipotezy badawczej przyjętej w pracy. Dla każdej z wybranych pętli, oszacowano także spodziewane skrócenie czasu wykonywania kompilacji iteracyjnej, jakie można by uzyskać, stosując modele szczególne zgodnie z opracowaną w ramach pracy procedurą ich wykorzystania w kompilacji iteracyjnej. Dla rozpatrywanych przykładów, czas wykonywania kompilacji iteracyjnej uległ skróceniu od około 3 do około 14 razy (szczegółowe wyniki przedstawiono w tabelach 9 ÷ 11). Uzyskane wyniki wskazują, że rozwiązanie autorskie zaproponowane w pracy jest adekwatne do stosowania w kompilacji iteracyjnej w celach optymalizacyjnych i stanowią potwierdzenie osiągnięcia celu pracy. 13. SPIS PUBLIKACJI 1. Kamińska A. Model obliczeniowego szacowania czasu wykonania programu. Metody Informatyki Stosowanej, nr 4/2011 (29), s. 125-134 2. Kamińska A. Obliczeniowe szacowanie czasu wykonania programu. PAK, nr 02/2012, s. 193-195 3. Kamińska A., Bielecki W. Estimation of the execution time of coarse-grained parallel program loops. Przegląd Elektrotechniczny, nr 2/2014, s. 85-88 4. Kamińska A., Bielecki W. Model for the estimation of the execution time of parallel program loops. Przegląd Elektrotechniczny, nr 2/2014, s. 125-127 5. Kamińska A., Bielecki W. Obliczeniowe szacowanie lokalności danych na poziomie pamięci podręcznej. Metody Informatyki Stosowanej, nr 4/2011 (29), s. 33-44 29 AUTOREFERAT ROZPRAWY DOKTORSKIEJ 6. Kraska K., Kamińska A. Koncepcja metody zwiększania lokalności danych na poziomie pamięci podręcznej oparta na transformacjach pętli programowych. Metody Informatyki Stosowanej, nr 2/2010 (23), s.63-72 7. Kraska K., Wierciński T., Kamińska A. Obliczeniowe szacowanie lokalności danych dla programów ANSI-C. PAK, nr 08/2011, s.951-953 BIBLIOGRAFIA [1] Aho A.V., Lam M.S., Sethi R., Ullman J.D. Compilers: Principles, Techniques, and Tools (2nd Edition). Addison Wesley, 2006 [2] Berlińska J. Metody tworzenia modeli statystycznych charakteryzujących aplikacje równoległe i rozproszone. Rozprawa doktorska. Politechnika Szczecińska, 2005 [3] Cavazos J., O’Boyle M.F.P. Method-Specific Dynamic Compilation using Logistic Regression. ACM SIGPLAN Notices, Vol. 41, No. 10, 2006, s. 229-240 [4] Coleman S., McKinley K.S. Tile Size Selection Using Cache Organization and Data Layout. ACM SIGPLAN Notices, Volume 30, Issue 6, 1995, s. 279-290 [5] Esseghir K. Improving data locality for caches. Master’s thesis, Department of Computer Science, Rice University, 1993 [6] Haoqiang J., Frumkin M., Yan J. The OpenMP implementation of NAS parallel benchmarks and its performance. Technical Report NAS-99-011, NASA Ames Research Center, 1999 [7] Lam M.S., Rothberg E.E., Wolf M.E. The Cache Performance and Optimization of Blocked Algorithms. ACM SIGARCH Computer Architecture News, Vol. 19, No. 2, 1991, s. 63-74 [8] Lokuciejewski P., Stolpe M., Morik K., Marwedel P. Automatic Selection of Machine Learning Models for WCET-aware Compiler Heuristic Generation. Proceedings of the 4th Workshop on Statistical and Machine Learning Approaches to Architectures and Compilation (SMART), 2010, s. 3-17 [9] NAS Parallel Benchmarks [online] http://www.nas.nasa.gov/publications/npb.html [dostęp: 2013] [10] Park E., Kulkarni S., Cavazos J. An Evaluation of Different Modeling Techniques for Iterative Compilation. Proceedings of the 14th international conference on compilers, architectures and synthesis for embedded systems, ACM, 2011, s. 65-74 [11] Pekhimenko G., Brown A.D. Efficient Program Compilation through Machine Learning Techniques. Software Automatic Tuning, Springer New York, 2010, s. 335-351 [12] Temam O., Fricker C., Jalby W. Cache interference phenomena. ACM SIGMETRICS Performance Evaluation Review, Volume 22, Issue 1, 1994, s. 261-271. [13] Wolfe M. High Performance Compilers for Parallel Computing. Addison-Wesley, 1996 30