Przetwarzanie równoległe Kostka równoległe przesyłanie i przetwarzanie Rafał Malinowski, Marek Musielak
1. Cel projektu: Celem projektu było stworzenie i przetestowanie oprogramowania działającego na serwerze transputerów Politechniki Poznańskiej. Architektura zbudowana z transputerów, na której działać miało oprogramowani, to kostka, a sposób komunikacji to przetwarzanie i komunikacja jednoczesna (1 przesłanie między sąsiednimi procesorami, przetwarzanie po odbiorze całości danych - dla siebie i dla sąsiadów; jednocześnie wysyłanie danych dla sąsiadów i obliczenia). 2. Architektura: Na serwerze transputerów zbudowano następującą architekturę: Rysunek 2.1 Architektura kostka zbudowana z transputerów Do transputerów przydzielono procesy połączone ze sobą w następujący sposób: Rysunek 2.2 Przydział procesów do transputerów
3. Model idealny: a) Wykres Gantt'a: Dla tak przygotowanej architektury stworzono wykres Gantt'a przedstawiający zależności czasowe między komunikacją a obliczeniami. Wykres ten, przy założeniu równych czasów przesyłania danych między transputerami i równych czasów obliczeń na transputerach, wyglada następująco: Wykres 3.1 Wykres Granta dla modelu idealnego. Liczby poprzedzone strzałkami oznaczają numer transputera, do którego przesyłane są dane.
b) Wyznaczenie parametrów systemu: W celu wyznaczenia parametrów systemu napisane zostały programy: badający czas przesyłania danych, badający czas obliczania danych. Przy obliczaniu czasu przesyłania danych założono, że każde łącze posiada tzw. startup time, czyli stały czas potrzebny na zainicjowanie łącza. Wyznaczając prędkość łączy przeprowadzono test polegający na przesłaniu przez łącza kolejno 10000, 15000,..., 100000 liczb. Wyniki otrzymane w ten sposób prezentuje następujący wykres (fakt, że wykres wygląda jakby znajdowały się na nim wyniki jedynie dwóch serii pomiarów, spowodowany jest faktem, że wszystkie łącza poziome (pionowe), mają jednakową prędkość) : Czas przesyłania liczb przez łącza: poziome i pionowe Czas w jednostkach zegara transputerowego 500000 450000 400000 350000 300000 250000 200000 150000 100000 50000 0 0 20000 40000 60000 80000 100000 120000 Liczba przesyłanych liczb Czas trwania przesyłania liczb przez łącze poziome Czas trwania przesyłania liczb przez łącze pionowe Wykres 3.2 Czasy przesyłania liczb przez łącza: poziome i pionowe Na podstawie wyników, metodą regresji obliczono sth i stv (startup time dla łącza poziomego i pionowego) oraz dth i dtv (czasy przesłania jednostki danych). Wyniosły one odpowiednio (w jednostkach procesora): sth 23,30, stv 25,47, dth 2,25, dtv 4,40.
Przy wyznaczaniu czasu obliczania danych na transputerach posłużono sie programami testującymi, które dla każdego transputera, dla liczby danych od 10000 do 100000 (z krokiem 5000), trzykrotnie wyznaczyły czas obliczania przez niego takiej liczby danych. Funkcja, jaką zastosowano, to y = x^10. Wyniki te następnie uśredniono i zebrano w tabeli: TR0 TR1 TR3 TR4 TR6 TR7 TR9 TR10 10000 408003 402210 406960 402210 408003 402210 408003 402211 15000 612003 603313 610439 603314 612003 603314 612003 603313 20000 816003 804417 813917 804417 816003 804417 816003 804417 25000 1020003 1005520 1017395 1005521 1020003 1005521 1020003 1005520 30000 1224004 1206624 1220873 1206624 1224003 1206624 1224003 1206624 35000 1428003 1407727 1424352 1407728 1428003 1407727 1428003 1407727 40000 1632004 1608831 1627830 1608831 1632003 1608831 1632003 1608831 45000 1836003 1809934 1831308 1809934 1836004 1809934 1836003 1809934 50000 2040003 2011037 2034786 2011038 2040003 2011038 2040003 2011037 55000 2244003 2212141 2238264 2212141 2244003 2212141 2244003 2212142 60000 2448003 2413245 2441742 2413245 2448003 2413245 2448004 2413244 65000 2652004 2614348 2645221 2614348 2652003 2614348 2652003 2614348 70000 2856003 2815451 2848699 2815451 2856003 2815451 2856003 2815451 75000 3060003 3016555 3052177 3016555 3060003 3016555 3060003 3016555 80000 3264003 3217658 3255656 3217659 3264003 3217658 3264003 3217658 85000 3468003 3418762 3459134 3418762 3468003 3418762 3468003 3418762 90000 3672003 3619865 3662613 3619865 3672003 3619866 3672003 3619865 95000 3876003 3820968 3866090 3820969 3876003 3820969 3876003 3820968 100000 4080003 4022072 4069569 4022072 4080003 4022072 4080003 4022072 Tabela 3.1 Średnie czasy obliczania funkcji y = x^10 na transputerach dla danej liczby zmiennych x Na podstawie zgromadzonych wyników, metodą regresji, obliczono dla każdego transputera cti (czasy obliczania funkcji y = x^10 dla jednej liczby). Wynoszą one: TR 0 1 3 4 6 7 9 10 ct 40,80 40,22 40,70 40,22 40,80 40,22 40,80 40,22
c) Model matematyczny: Na podstawie wykresu Grantt'a (Wykres 3.1) oraz wyliczonych parametrów, sporządzono model matematyczny minimalizujący czas wyliczenia wszystkich danych (czyli innaczej mówiąc minimalizujący liczbę danych obliczanych na TR3), o następujących ograniczeniach: d0+d1+d3+d4+d6+d7+d9+d10 = data d10t0t1 + d10t0t9 + d10t4t1 + d10t4t7 + d10t6t7 + d10t6t9 = d10 d1t0 + d1t4 = d1 d7t4 + d7t6 = d7 d9t0 + d9t6 = d9 ct3*d3 >= stv + dtv * (d0 + d1t0 + d9t0 + d10t0t1 + d10t0t9) + ct0*d0 ct3*d3 >= sth + dth * (d4 + d1t4 + d7t4 + d10t4t1 + d10t4t7) + ct4*d4 ct3*d3 >= stv + dtv * (d6 + d7t6 + d9t6 + d10t6t7 + d10t6t9) + ct6*d6 ct0*d0 >= sth + dth * (d1t0 + d10t0t1) + ct1*d1 ct0*d0 >= stv + dtv * (d9t0 + d10t0t9) + ct9*d9 ct4*d4 >= stv + dtv * (d1t4 + d10t4t1) + ct1*d1 ct4*d4 >= stv + dtv * (d7t4 + d10t4t7) + ct7*d7 ct6*d6 >= sth + dth * (d7t6 + d10t6t7) + ct7*d7 ct6*d6 >= stv + dtv * (d9t6 + d10t6t9) + ct9*d9 ct1*d1 >= stv + dtv * (d10t0t1 + d10t4t1) + ct10*d10 ct7*d7 >= stv + dtv * (d10t4t7 + d10t6t7) + ct10*d10 ct9*d9 >= sth + dth * (d10t0t9 + d10t6t9) + ct10*d10 Oznaczenia przyjęte w powyższym modelu: data liczba danych do obliczenia na transputerach, di liczba danych do obliczenia na transputerze TRi, ditj liczba danych dla transputera TRi przesyłana przez transputer TRj, d10titj liczba danych dla transputera TR10 przesyłana najpierw przez transputer TRi, a następnie przez transputer TRj, cti czas obliczenia jednostki danych na transputerze TRi, stv startup time dla łącza pionowego, sth startup time dla łącza poziomego, dtv czas przesłania jednostki danych przez łącze pionowe, dth czas przesłania jednostki danych prze łącze poziome. Jako liczbę danych przyjęto data = 100000. Ponadto wprowadzono ograniczenia na całkowitoliczbowość dla wszystkich zmiennych d*. Pierwsze pięć równań modelu jest podziałem całości danych na części, które bedą później przesyłane daną drogą, bądź też liczone na danym transputerze. Kolejnych 12 ograniczeń zapewnia, że żaden z transputerów nie zacznie liczyć zanim nie otrzyma wszystkich niezbędnych danych, oraz że żaden z transputerów nie skończy liczyć później niż TR3.
4. Rozwiązanie modelu matematycznego: Powyższy model matematyczny rozwiązano przy użyciu progamu LPSolve IDE v5.5. Uzyskane wyniki prezentuje poniższa tabela: data 100000 d0 12251 d1 12082 d3 15007 d4 13251 d6 12251 d7 12083 d9 11514 d10 11561 d10t0t1 0 d10t0t9 2089 d10t4t1 4753 d10t4t7 0 d10t6t7 4719 d10t6t9 0 d1t0 6168 d1t4 5914 d7t4 10661 d7t6 1422 d9t0 4700 d9t6 6814 Tabela 4.1 Rozwiązanie modelu matematycznego cd0 499841 cd1 485938 cd3 610785 cd4 532955 cd6 499841 cd7 485978 cd9 469771 cd10 464983 t3t0s 110941 t3t4s 77826 t3t6s 110932 t0t1s 13901 t0t9s 29897 t4t1s 46960 t4t7s 46934 t6t7s 13841 t6t9s 30007 t1t10s 20939 t7t10s 20789 t9t10s 4723,6 Tabela 4.2 Czasy obliczeń (cdi) na transputerach i przesyłania między transputerami obliczone na bazie rozwiązania modelu matematycznego Na bazie powyższych tabel (Tabela 4.1, Tabela 4.2), stworzono wykres Gantt'a: Wykres 4.1 Wykres Gantt'a dla rozwiązania modelu matematycznego. Liczby poprzedzone strzałkami oznaczają numer transputera, do którego przesyłane są dane.
5. Rozwiązanie rzeczywiste: a) Opis algorytmu: Program składa się z 27 procesów. Na każdym transputerze znajdują się osobne procesy odpowiedzialne za przesyłanie danych, procesy obliczające wartość funkcji, procesy zbierające informacje o wykonanych akcjach oraz 1 proces przeznaczony tylko i wyłącznie do komunikacji z użytkownikiem, przydzielony do transputera TR3. Początek programu to zebranie przez proces wejscia-wyjścia informacji o gotowości wszystkich procesów. Następnie, zgodnie z założeniami projektu, rozpoczyna się jednoczesne przesyłanie danych i obliczenia. Po skończeniu wykonywania każdej operacji, wiadomość o czasie jej wykonania zostaje przesłana do procesu wejścia-wyjścia. Na koniec działania programu, proces wejścia-wyjścia przekazuje użytkownikowi oprządkowane uprzednio dane. b) Wykres Gannt'a: Na podstawie zebranych danych stworzony został wykres Gannt'a: Wykres 5.1 Wykres Gantt'a dla rozwiązania rzeczywistego. Liczby poprzedzone strzałkami oznaczają numer transputera, do którego przesyłane są dane. Porównując wykres rozwiązania rzeczywistego (Wykres 5.1) z wykresem modelu teoretycznego (Wykres 4.1), dostrzec można, że w przypadku rzeczywistym, czasy zakończenia obliczeń na poszczególnych transputerach są różne. W celu znalezienia różnic wprowadźmy następujące wykresy:
Porównanie czasów obliczeń: według modelu matematycznego i rzeczywistego czasu 700000 Czas obliczeń [jednostki procesora] 600000 500000 400000 300000 200000 100000 model matematyczny czas rzeczywisty 0 TR0 TR1 TR3 TR4 TR6 TR7 TR9 TR10 Transputer Wykres 5.2 Porównanie czasów obliczeń: według modelu matematycznego i rzeczywistego czasu Wykres 5.3 Porównanie czasów obliczeń: według modelu matematycznego i rzeczywistego czasu błąd względny obliczony ze wzoru Błąd względny = rzeczywisty czasobliczeń czas obliczeń według modelu matematycznego czas obliczeń według modelu matematycznego
Porównanie czasów przesyłania danych: według modelu matematycznego i rzeczywistego czasu 120000 Czas przesyłania danych [jednostki procesora] 100000 80000 60000 40000 20000 model matematyczny czas rzeczywisty 0 t3t0s t3t4s t3t6s t0t1s t0t9s t4t1s t4t7s t6t7s t6t9s t1t10s t7t10s t9t10s Kolejne przesyłania danych Wykres 5.4 Porównanie czasów przesyłania danych: według modelu matematycznego i rzeczywistego czasu Wykres 5.5 Porównanie czasów przesyłania danych: według modelu matematycznego i rzeczywistego czasu błąd względny obliczony ze wzoru Błąd względny= rzeczywisty czas przesyłania czas przesyłania według modelumat. czas przesyłania według modelu matematycznego
model matematyczny czas rzeczywisty cd0 499841 523584 cd1 485938 504064 cd3 610785 647344 cd4 532955 555136 cd6 499841 520576 cd7 485978 504896 cd9 469771 488960 cd10 464983 464000 t3t0s 110941 110941 t3t4s 77826 77826 t3t6s 110932 110932 t0t1s 13901 13902 t0t9s 29897 29902 t4t1s 46960 46961 t4t7s 46934 46935 t6t7s 13841 13841 t6t9s 30007 30007 t1t10s 20939 21176 t7t10s 20789 20791 t9t10s 4724 4724 Tabela 5.1 Porównanie czasów obliczeń (cdi) na transputerach i przesyłania między transputerami, obliczone na bazie rozwiązania modelu matematycznego i rzeczywiste c) Patrząc na powyższe wykresy oraz tabelę (Tabela 5.1) dostrzec możemy, że rzeczywiste czasy przesyłania danych są praktycznie identyczne (poza jednym przypadkiem, gdzie błąd wynosi 1,13%) z czasami wyliczonymi na podstawie modelu matematycznego. Różnice natomiast (i to wyraźne - do 6%), widać między czasami obliczeń. Czas rzeczywisty jest (poza transputerem TR10) zawsze większy od czasu modelowego. Nasuwa się wniosek, że jednoczesne przesyłanie danych i liczenie, zwalnia tę drugą operację (co potwierdzałby przypadek transputera TR10, który już nic nie przesyła, zatem czas obliczeń na nim jest prawie taki sam jak w przypadku modelu matematycznego).