Metody zrównoleglania algorytmów wyznaczania najkrótszej drogi w transporcie morskim

Podobne dokumenty
ZASTOSOWANIE GRAFU WIDOCZNOŚCI W PLANOWANIU TRASY PRZEJŚCIA STATKU APPLICATION OF A VISIBILITY GRAPH IN SHIP S PATH PLANNING

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

PROBLEMY WYZNACZANIA OPTYMALNEJ TRAJEKTORII OBIEKTU NA OBSZARZE OGRANICZONYM

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Algorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Ogólne wiadomości o grafach

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Matematyczne Podstawy Informatyki

Informatyka w szkole - algorytm Dijkstry dla każdego. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

Sprawozdanie do zadania numer 2

Algorytm dyskretnego PSO z przeszukiwaniem lokalnym w problemie dynamicznej wersji TSP

IMPLEMENTACJA I PORÓWNANIE WYDAJNOŚCI WYBRANYCH ALGORYTMÓW GRAFOWYCH W WARUNKACH OBLICZEŃ RÓWNOLEGŁYCH

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Wyznaczanie optymalnej trasy problem komiwojażera

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

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Digraf. 13 maja 2017

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.

TEORETYCZNE PODSTAWY INFORMATYKI

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

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

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

a) 7 b) 19 c) 21 d) 34

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

PROGRAMOWANIE DYNAMICZNE W ROZMYTYM OTOCZENIU DO STEROWANIA STATKIEM

Minimalne drzewa rozpinające

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Równoległość i współbieżność

Równoległość i współbieżność

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Task Parallel Library

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

Programowanie sieciowe. Tadeusz Trzaskalik

System obliczeniowy laboratorium oraz. mnożenia macierzy

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE STOPNIE Z INFORMATYKI W KLASIE 8 opracowane na podstawie podręcznika

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

Programowanie dynamiczne cz. 2

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

AiSD zadanie trzecie

Nowoczesne technologie przetwarzania informacji

Rys Wykres kosztów skrócenia pojedynczej czynności. k 2. Δk 2. k 1 pp. Δk 1 T M T B T A

Problem komiwojażera ACO. Zagadnienie optymalizacyjne, polegające na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym.

KONCEPCJA BAZY DANYCH NAWIGACYJNO-HYDROGRAFICZNEGO ZABEZPIECZENIA (NHZ) NA POLSKICH OBSZARACH MORSKICH

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

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

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

OPTYMALIZACJA ZBIORNIKA NA GAZ PŁYNNY LPG

Programowanie dynamiczne

PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE. K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3

REFERAT PRACY DYPLOMOWEJ

Algorytmy dla maszyny PRAM

Schemat programowania dynamicznego (ang. dynamic programming)

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Przetwarzanie Równoległe i Rozproszone

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Metody uporządkowania

Zastosowanie teorii grafów w Geograficznych Systemach Informacyjnych

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Architektura komputerów

Algorytmy i Struktury Danych.

PRACA DYPLOMOWA MAGISTERSKA

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

TRANSCOMP XIV INTERNATIONAL CONFERENCE COMPUTER SYSTEMS AIDED SCIENCE, INDUSTRY AND TRANSPORT

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

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

Teoria obliczeń i złożoność obliczeniowa

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

ZESZYTY NAUKOWE POLITECHNIKI ŚLĄSKIEJ 2014 Seria: TRANSPORT z. 82 Nr kol. 1903

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Moc płynąca z kart graficznych

Systemy mrówkowe. Opracowali: Dawid Strucker, Konrad Baranowski

PROBLEM ROZMIESZCZENIA MASZYN LICZĄCYCH W DUŻYCH SYSTEMACH PRZEMYSŁOWYCH AUTOMATYCZNIE STEROWANYCH

Mechanizmy pracy równoległej. Jarosław Kuchta

Harmonogramowanie przedsięwzięć

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Wykład 10 Grafy, algorytmy grafowe

ZESZYTY NAUKOWE NR 11(83) AKADEMII MORSKIEJ W SZCZECINIE. Dynamiczne programowanie trasy statku z uwzględnieniem omijania cyklonów tropikalnych

Metody optymalizacji soft-procesorów NIOS

Transkrypt:

WRÓBEL Magdalena 1 NOZDRZYKOWSKI Łukasz 2 Metody zrównoleglania algorytmów wyznaczania najkrótszej drogi w transporcie morskim WSTĘP Celem nawigacji morskiej, jako złożonego systemu analizy dużej ilości danych, jest stworzenie warunków bezpiecznej żeglugi pomiędzy portami przy minimalizacji kosztów podróży. Korzystając z systemów nawigacyjnych, w których skład wchodzą takie elementy jak ARPA, AIS, czy systemy obrazowania map elektronicznych ECDIS, możliwe było opracowanie koncepcji zintegrowanego mostka nawigacyjnego. Jednym z najważniejszych zadań procesu nawigacyjnego jest planowanie trasy statku pomiędzy portem początkowym, a końcowym z uwzględnieniem portów pośrednich. Proces ten polega na wykorzystaniu danych na temat istniejących ograniczeń nawigacyjnych (lądy, tory wodne, płycizny) w celu wyznaczenia punktów zwrotu (waypoint) marszruty statku [1]. Bliskim zagadnieniem jest problem unikania kolizji na morzu polegający na wyznaczaniu trajektorii statku z optymalizacją kosztów odchyleń od trajektorii zadanej, zwłaszcza od trajektorii określanej poprzez najkrótszą drogę, przy czym w procesie tym należy spełniać warunki bezpieczeństwa drogi. Należą do nich widzialność, zdolność manewrowa, warunki pogodowe czy rejon żeglugi, a także same charakterystyki statków [2, 3]. W obecnych czasach procesom nawigacyjnym nieodłącznie towarzyszą systemy informatyczne. Dotyczy to także systemów wyznaczania drogi, które w rzeczywistości operują na grafach i poszukiwaniu w nich najkrótszej ścieżki (drogi). Komputery i systemy informatyczne usprawniają i automatyzują procesy pozyskiwania, przetwarzania i analizowania informacji [4]. Niestety, coraz większe ilości informacji, jakie należy przetworzyć, wymagają zaangażowania coraz większych mocy obliczeniowych. Z pomocą przychodzi koncepcja systemów przetwarzania równoległego i rozproszonego, które pozwalają na znaczne przyspieszenie obliczeń. Aplikacje komputerowe pisane dotychczas w formie sekwencyjnych operacji są teraz zrównoleglone w celu skrócenia czasu wykonywania zadań. W artykule przedstawione zostaną sposoby zrównoleglenia wybranych algorytmów poszukiwania najkrótszej ścieżki w grafie, które stosowane są w nawigacji do wyznaczania marszruty statku. 1 ALGORYTMY POSZUKIWANIA NAJKRÓTSZEJ ŚCIEŻKI W GRAFACH W niniejszej pracy zaproponowano możliwość przyspieszenia działania algorytmów znajdowania najkrótszej ścieżki w grafach przy pomocy programowania równoległego. Poprzez przystosowanie implementacji algorytmów najkrótszej drogi do działania na wielu rdzeniach procesora możliwe staje się szybsze przeszukiwanie grafu. Ogólnie problem najkrótszej ścieżki definiuje się dla grafu G(N,A), o n= N węzłach oraz m= A krawędziach [5]. Każde połączenie (i,j) należące do A posiada swój koszt c i,j reprezentujący czas podróżny daną krawędzią. Ścieżką P z punktu O do celu D jest serią połączonych krawędziami wierzchołków, a czas całkowity podróży jest sumą wszystkich czasów (wag) każdej z krawędzi należących do danej ścieżki P. Problem najkrótszej ścieżki ma za zadanie w grafie ważonym wyszukać połączenie pomiędzy wierzchołkami o najmniejszej sumie czasów (wag). Oznaczając 1 mgr inż. M. Wróbel, asystent, Instytut Technologii Morskich, Wydział Nawigacyjny, Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin, (+4891)48-09-566, m.wrobel@am.szczecin.pl 2 dr inż. Ł. Nozdrzykowski, adiunkt, Instytut Technologii Morskich, Wydział Nawigacyjny, Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin, (+4891)48-09-566, l.nozdrzykowski@am.szczecin.pl 11386

najkrótszy dystans z węzła i do D jako d i (minimalny czas podróży) należy sprawdzić dla każdego węzła i[5]: (1) Szczególnym przypadkiem jest problem najkrótszej ścieżki od jednego wierzchołka do wszystkich pozostałych oraz problem najkrótszej ścieżki pomiędzy wszystkimi parami wierzchołków. W niniejszym artykule wykonano próbę zrównoleglenia algorytmów Dijkstry, Floyda-Warschalla oraz Prima przy pomocy standardu zrównoleglenia OpenMP [6]. 2 SPOSÓB ZRÓWNOLEGLENIA ALGORYTMU DIJKSTRA Algorytm Dijkstra jest algorytmem ze sprzężeniem zwrotnym, gdzie krok następny jest determinowany przez krok poprzedni. Wyjątkiem jest oczywiście wybierany krok pierwszy oznaczony jako punkt startowy. Z tego powodu niemożliwe staje się zrównoglenie tego algorytmu przy pomocy prostych instrukcji zrównoleglających, jak chociażby #pragmaomp for. Algorytm ten pozwala jedynie na zrównoleglenie procesu wyszukiwania najkrótszej drogi z najniższą wagą. W celu zrównoleglenia algorytmu Dijkstry proponuje się początkowo w sekcji równoległej #pragmaompparallel wykonać inicjalizację danych (listing 1). intistartobliczen, ikoniecobliczen, iwierzcholek, iminwatka, inrwatkamin, m, iwatek =omp_get_thread_num(); #pragma omp single ile_watkow = omp_get_num_threads(); iporcjadanych = ROZMGRAFU / ile_watkow; istartobliczen = iwatek * iporcjadanych; ikoniecobliczen = istartobliczen + iporcjadanych - 1; Listing 1 Inicjalizacja zmiennych oraz podział zadań pomiędzy wątkami Poprzez tą operację każdy wątek wykonuje operacje na własnych danych w sposób niezależny. Wątek główny ma tu za zadanie dokonać podziału zadania na równe części pomiędzy wszystkie wątki. Wszystkie wątki następnie wyznaczają swój zakres obliczeń. Całościowy proces wyszukiwania najkrótszej drogi odbywa się w pętli iterującej po wszystkich węzłach (listing 2). for (iwierzcholek = 0; iwierzcholek< ROZMGRAFU; iwierzcholek++) Listing 2Przejście po wszystkich wierzchołkach grafu W pierwszej fazie pętli konieczne jest przeprowadzenie inicjalizacji danych początkowych (listing 3). Operację tą powinien wykonać jeden z wątków, którym domyślnie jest wątek główny. #pragmaomp single iminwatkow = NIESKONCZONOSC; inrwierzcholka = 0; Listing 3Inicjalizacja doanych początkowych przez wątek główny W celu wymuszenia wykonania operacji przez wątek główny zastosowano pragmę Single standardu OpenMP. iminwatka = NIESKONCZONOSC; for (i = istartobliczen; i <= ikoniecobliczen; i++) if (iodwiedzone[i] &&iminodleglosc[i] <iminwatka) iminwatka = iminodleglosc[i]; inrwatkamin = i; Listing 4 Poszukiwanie minimum przez wybrany wątek 11387

Kolejnym krokiem (listing 4) algorytmu wykonywanym w pętli każdego wątku jest wyszukiwanie najkrótszej drogi do kolejnego nieodwiedzonego węzła. W tym miejscu każdy z wątków operuje na zakresie danych wyznaczonym na listingu 1. #pragmaompcritical if (iminwatka<iminwatkow) iminwatkow = iminwatka; inrwierzcholka = inrwatkamin; Listing 5 Agregacja danych obliczonych przez wszystkie wątki. W następnej fazie (listing 5) wykonana zostaje agregacja danych w celu wyznaczenie najniższej wartości wyliczonej w operacjach wykonywanych przez wątki. Obszar ten oznaczony został jako krytyczny i powinien zostać wykonany przez jeden wątek. Po tej operacji możliwe staje się zapisanie najkrótszej ścieżki dotąd odwiedzonej (listing 6). for (i = istartobliczen; i <= ikoniecobliczen; i++) if(iminodleglosc[inrwierzcholka] + iwektrododleglosci[inrwierzcholka * ROZMGRAFU + i] <iminodleglosc[i]) iminodleglosc[i] = iminodleglosc[inrwierzcholka] + iwektrododleglosci[inrwierzcholka * ROZMGRAFU + i]; Listing 6 Wyliczenie minimalnej ścieżki grafu 7). Końcowym zadaniem jest oznaczenie odwiedzonego węzła oraz wykonanie synchronizacji (listing #pragmaomp single iodwiedzone[inrwierzcholka] = 0; #pragma omp barrier Listing 7 Oznaczenie węzła jako odwiedzony oraz wywołanie bariery. Poprzez ustawienie bariery zapobiega się występowania wyścigu wątków. 3 ZRÓWNOLEGLENIE ALGORYTMU PRIMA Algorytm Prima wykonywany jest w pętli, w której nie występuje zależność pomiędzy iteracjami. Z tego powodu jest on łatwiejszy do zrównoleglenia. Jego sposób przedstawiono w całości na listingu 8. 11388

while (wierzcholki!= iliczbawierz) #pragmaompparallel for private(iindexwierz) for (iindexwierz = 0; iindexwierz<iliczbawierz; iindexwierz++) if (igraf[wiersz][iindexwierz]!= 0) if (iodwiedzone[iindexwierz] == 0) if (iwaga[iindexwierz]>igraf[wiersz][iindexwierz]) #pragmaompcritical iwaga[iindexwierz] = igraf[wiersz][iindexwierz]; ikosztdrogi = MX; for (iindexwierz = 0; iindexwierz<iliczbawierz; iindexwierz++) if (iodwiedzone[iindexwierz] == 0) if (iwaga[iindexwierz] <ikosztdrogi) ikosztdrogi = iwaga[iindexwierz]; wiersz = iindexwierz; iodwiedzone[wiersz] = 1; wierzcholki++; ikosztdrogi = 0; for (iindexwierz = 0; iindexwierz<iliczbawierz; iindexwierz++) ikosztdrogi += iwaga[iindexwierz]; Listing 8 Zrównoleglony algorytm Prima Do zrównoleglenia należy zastosować zrównoleglenie pętli for z domyślną zmienną prywatną iindexwiersz poprzez instrukcję #pragmaompparallel for private(iindexwiersz), która rozbija poszukiwanie poszczególnych ścieżek w grafie na osobne wątki. Ponieważ wewnątrz pętli odbywa się sprawdzanie wyboru najkrótszej ścieżki, stąd też wymagane jest wydzielenie sekcji krytycznej dla jej zapisania. 4 ZRÓWNOLEGLENIE ALGORYTMU FLOYDA-WARSCHALLA Algorytm Floyda-Warschalla jako sposób na przeszukiwanie fragmentów grafu pomiędzy dwoma wierzchołkami cechuje się prostą konstrukcją, gdzie pętle podobnie jak w algorytmie Prima nie posiadają zależności pomiędzy instrukcjami. W całości algorytm ten przedstawia listing 9. for (iindexk = 0; iindexk<rozmgrafu; iindexk++) #pragma omp parallel for shared(a) for (iindexi = 0; iindexi<rozmgrafu; iindexi++) for (iindexj = 0; iindexj<rozmgrafu; iindexj++) igraf[iindexi][iindexj] = minimum(igraf[iindexi][iindexj], igraf[iindexi][iindexk] + igraf[iindexk][iindexj]); Listing 9 Zrównoleglony algorytm Floyda-Warschalla Do jego zrównoleglenia wystarcza pojedyncza instrukcja zrównoleglenia pętli for z przekazaniem tablicy wag wierzchołków w sposób dzielony pomiędzy wątki. 11389

5 TESTY EFEKTYWNOŚCI PROPONOWANYCH ROZWIĄZAŃ Testy efektywności zrównoleglonych algorytmów poszukiwania najkrótszej ścieżki w grafach wykonano na komputerze z procesorem ośmiowątkowym Intel Core i7-720qm, 4GB pamięci RAM, system operacyjny Windows 7 64 bit. 5.1 Algorytm Dijkstra Algorytm przetestowano dla różnych rozmiarów danych wejściowych. Graf posiadał odpowiednio 10000, 60000 oraz 100000 wierzchołków. Na rys. 1 przedstawiono wyniki z poszczególnych testów. Dijkstra 10000 wierzchołków Dijkstra 60000 wierzchołków 5 4 3 2 1 0 4.09 1.99 1.08 0.51 35 30 25 20 15 10 5 0 29.96 14.04 8.00 4.08 Dijkstra 100000 wierzchołków 100 80 60 40 20 0 80.30 38.29 19.60 10.21 Rys. 1 Wyniki testów zrównoleglonego algorytmu Dijkstra dla różnej wielkości danych oraz różnej liczby procesorów. Na rysunku 1 przedstawiono wykresy z wynikami dla różnych wielkości danych. We wszystkich przypadkach wraz ze wzrostem liczby wątków użytych do obliczeń maleje czas wykonania się algorytmu. Przyspieszenie dla poszczególnych wielkości danych oraz liczby procesorów przedstawia tabela 1. Tab. 1. Uzyskane przyspieszenie algorytmu Dijkstra Rozmiar danych 10000 60000 100000 2 2,05 2,13 2,09 4 3,78 3,74 4,09 8 7,98 7,34 7,86 Dane w tab. 1 pokazują, że w wyniku zrównoleglenia algorytmu Dijkstry osiągnięto przyspieszenie liniowe. 11390

5.2 Algorytm Prima Algorytm Prima przetestowano dla następujących rozmiarów grafu, który posiadał odpowiednio 8000, 9000 oraz 10000 wierzchołków. Na rys. 2 przedstawiono wyniki z poszczególnych testów. Prim 8000 wierzchołków Prim 9000 wierchołków 0.95 0.85 0.75 0.65 0.55 0.91 0.69 0.59 0.61 1.25 1.15 1.05 0.95 0.85 0.75 0.65 0.55 1.16 0.86 0.73 0.63 Prim 10000 wierzchołków 1.6 1.4 1.2 1 0.8 0.6 1.41 1.03 0.89 0.80 Rys. 2 Wyniki testów zrównoleglonego algorytmu Prima dla różnej wielkości danych oraz różnej liczby procesorów. Na rys. 2 przedstawiono czasy wykonania się algorytmu Prima dla poszczególnych wielkości danych oraz liczby wątków. Na wykresie dla grafu posiadającego 8000 wierzchołków widać, że zwiększenie liczby wątków z 4 na 8 nie przyniosło znaczącego skrócenia czasu obliczeń. Spowodowane jest to domyślną barierą dla każdej iteracji pętli for jaką ustawia OpenMP. Na pozostałych wykresach czas maleje przy wykorzystaniu większej liczby wątków. Przyspieszenie dla poszczególnych wielkości danych oraz liczby procesorów przedstawia tabela 2. Tab. 2. Uzyskane przyspieszenie algorytmu Prima Rozmiar danych 8000 9000 10000 2 1,32 1,35 1,36 4 1,53 1,58 1,57 8 1,49 1,85 1,76 5.3 Algorytm Floyda-Warschalla Testy algorytmu Floyda-Warschalla wykonano dla następujących rozmiarów grafu 1000, 1500, 2000 węzłów. Zmierzony czas wykonania się algorytmu przedstawia rys. 3. 11391

Floyd-Warshall 1000 Floyd-Warshall 1500 38 33 28 23 18 32.98 21.20 19.38 18.85 123 113 103 93 83 73 63 111.57 96.75 73.26 64.58 280 260 240 220 200 180 160 263.95 Rys. 3 Wyniki testów zrównoleglonego algorytmu Floyda-Warschalla dla różnej wielkości danych oraz różnej liczby procesorów. Na rys. 3 zaprezentowano czasy wykonania algorytmu Floyda-Warschalla dla poszczególnych wielkości danych oraz liczby wątków. Przyspieszenie dla poszczególnych wielkości danych oraz liczby procesorów przedstawia tabela 3. Tab. 3. Uzyskane przyspieszenie algorytmu Floyda-Warschalla Rozmiar danych 1000 1500 2000 2 1,55 1,15 1,32 4 1,70 1,52 1,50 8 1,75 1,72 1,57 Podobnie jak dla algorytmu Prima, tak i dla algorytmu Floyda-Warschalla efektywność zrównoleglenia jest na zbliżonym poziomie. Spowodowane to jest tym samym sposobem przyjętego zrównoleglenia obydwu tych algorytmów. W związku z tym stwierdza się, że wzrastająca liczba wątków obliczeniowych nie wpływa znacząco na przyspieszenie obliczeń. WNIOSKI Floyd-Warshall 2000 199.47 175.36 167.25 W artykule zostały przedstawione metody zrównoleglania trzech algorytmów znajdowania najkrótszej ścieżki w grafie. Były to algorytmy Dijsktra, Prima oraz Floyda-Warschalla. Poprzez zastosowanie odpowiednio dobranych pragm standardu programowania równoległego OpenMP udało się uzyskać przyspieszenie działania algorytmów na poziomie: algorytm Dijkstra 7,34; algorytm Prima 1,49 oraz algorytm Floyda-Warschalla 1,57. Przyspieszenie obliczeń dotyczących algorytmów znajdowania najkrótszej ścieżki w grafie staje się szczególnie istotne z punktu widzenia ich realizacji w ramach systemów komputerowych, w tym systemów operujących w transporcie morskim. Umożliwia to przyspieszenie rozwiązywania 11392

problemów poszukiwania optymalnej marszruty statku na morzu z uwzględnieniem coraz większej ilości danych dodatkowych, w tym ograniczeniach akwenów, gdzie obliczenia są wykonywane nie przez jeden rdzeń, a wiele rdzeni współczesnych komputerów. Streszczenie W artykule przedstawiono sposób przyspieszania działania wybranych algorytmów wyszukiwania najkrótszej ścieżki w grafie poprzez wykorzystanie programowania równoległego w systemach komputerowych. Przedstawiono metodę zrównoleglenia algorytmów Dijkstra, Prima oraz Floyda-Warshalla przy pomocy instrukcji standardu programowania równoległego OpenMP. W artykule tym przedstawiono tzw. pragmyopenmp służące do zachowania poprawności działania algorytmu w środowisku równoległym Przedstawione algorytmy stanowią podstawę metod planowania drogi w transporcie, w tym w transporcie morskim do wyznaczania optymalnej trasy statku z uwzględnieniem danych o lokalizacji portów pośrednich i ograniczeń nawigacyjnych. Przedstawiono także testy efektywności zrównoleglenia proponowanych rozwiązań dla różnych wielkości grafów do przeszukania oraz różnej liczby wątków sprzętowych biorących udział w obliczeniach. Methods of parallelization a shortest path algorithms for maritime transport Abstract In article presents a method to accelerating a operation of selected algorithms of searching the shortest path in graph by using the parallel programming in computer systems. Presents a method of parallelization Dijkstra's, Prim's and Floyd Warshall algorithms with using the instructions of OpenMP parallel programming standard. This article presents the specific pragmas of OpenMPused to preservation the proper operation of the algorithm in a parallel environment. These algorithms are the basis of methods of route in the transport, including maritime transport to determine the optimal route of the vessel including the information about ports and navigation restrictions. This paper also presents a tests of parallelization efficiency of the proposed solutions for different sizes of graphs to be searched and the different number of hardware threads involved to the calculation. BIBLIOGRAFIA 1. Lazarowska Agnieszka, Planowanie trasy przejścia statku z zastosowaniem algorytmu mrówkowego, Zeszyty naukowe Akademii Morskiej w Gdyni, nr 78, marzec 2013 2. Smierzchalski Roman, Nawigacyjny problem unikania kolizji na morzu jako adaptacyjne modelowanie trajektorii statku, Proceedings of the 2nd National Conference on Evolutionary Computation and Global Optimization, Rytro, Poland, Warsaw University of Technology Publishing House, pp. 253-260, 1997 3. Wiśniewski Bernad, Ships ocean route programming, Zeszyty Naukowe Akademia Morska w Szczecinie, 2012, 29 (101) 4. Pietrzykowski Z., Nozdrzykowski Ł., Wróbel M., Koncepcja udostępniania usług w chmurze obliczeniowej w transporcie morskim, Logistyka 2/2014 5. Jincheng Jiang, Lixin Wu, A Dynamic Navigation Algorith Considering Network Disruptions, The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Volume XL-4, 2014 6. Standard OpenMPwww.openmp.org [dostęp 09.2014] 11393