Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami dr inż. Mariusz Uchroński Wrocławskie Centrum Sieciowo-Superkomputerowe
Agenda Cykliczny problem przepływowy Minimalny czas cyklu Wzorce Bloki zadań Równoległe wyznaczanie bloków Eksperymenty obliczeniowe Przyspieszenie Skalowalność Podsumowanie dr inż. Mariusz Uchroński Równoległy algorytm... 2/21
Cykliczny problem przepływowy Dane są: zbiór zadań J = {1, 2,..., n}, zbiór maszyn M = {1, 2,..., m}. Zadania ze zbioru J należy wykonać należy wykonać cyklicznie (w sposób powtarzalny) na maszynach ze zbioru M. Zadanie j J jest ciągiem m operacji. Operacja O k,j odpowiada czynności wykonywania zadania j na maszynie k, w czasie p k,j. Po zakończeniu pewnej, a przed rozpoczęciem następnej operacji należy wykonać przezbrojenie maszyny. Niech s k i,j (k M, i j i, j J ) będzie czasem przezbrojenia pomiędzy operacją O k,i oraz O k,j. dr inż. Mariusz Uchroński Równoległy algorytm... 3/21
Minimalny czas cyklu Zbiór zadań wykonywanych w pojedynczym cyklu nazywany jest MPS-em (ang. minimal part set). MPS-y są przetwarzane cyklicznie, jeden po drugim. Należy wyznaczyć kolejność wykonywania zadań (taką samą na każdej maszynie), która minimalizuje czas cyklu, tj. termin rozpoczęcia wykonywania zadań ze zbioru J w następnym cyklu. Dla ustalonej permutacji π Φ oraz maszyny k M n 1 T k (π) = (p k,π(i) + sπ(i),π(i+1)) k + p k,π(n) + sπ(n),π(1). k i=1 jest czasem wykonywania zadań dla kolejności π. Minimalny czas cyklu T (π) = min{t i (π) : i = 1, 2,..., m}. dr inż. Mariusz Uchroński Równoległy algorytm... 4/21
Wzorce Wyznaczenie minimalnego czasu pracy k-tej maszyny można sprowadzić do następującego problemu komiwojażera. Niech H k = (V, E; p, s) będzie grafem pełnym, gdzie zbiór wierzchołków: V = J, zbiór łuków: E = {(v, u) : v u, v, u V}, wagi wierzchołków: p(v) = p k,v, v V, wagi łuków: s(e) = s k e, e E. Minimalny czas pracy k-tej maszyny jest równy długości drogi komiwojażera w grafie H k, tj. minimalnego (ze względu na długość) cyklu Hamiltona. Permutacja π k określająca drogę komiwojażera w grafie H k nazywana będzie wzorcem dla k-tej maszyny. dr inż. Mariusz Uchroński Równoległy algorytm... 5/21
Bloki zadań Niech B = (π(a), π(a + 1),..., π(b)), (1) będzie ciągiem bezpośrednio występujących po sobie zadań w permutacji π Φ, π k wzorcem dla k-tej maszyny oraz u, v (u v, 1 u, v n) parą liczb takich, że: W1: π(a) = π (u), π(a + 1) = π (u + 1),..., π(b 1) = π (v 1), π(b) = π (v), lub W2: π(b) = π (u), π(b 1) = π (u + 1),..., π(a + 1) = π (v 1), π(a) = π (v) W3: B jest maksymalnym podciągiem ze względu na zawieranie. Jeżeli ciąg zadań (1) spełnia warunki W1 i W3 lub W2 i W3, to nazywamy go blokiem na k-tej maszynie (k M). dr inż. Mariusz Uchroński Równoległy algorytm... 6/21
Równoległe wyznaczanie bloków Złożoność obliczeniowa sekwencyjnego algorytmu wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami wynosi O(n). Twierdzenie Wyznaczenie bloków dla cyklicznego problemu przepływowego z przezbrojeniami można wykonać w czasie O(log n) na mn-procesorowej maszynie CREW PRAM. dr inż. Mariusz Uchroński Równoległy algorytm... 7/21
Równoległe wyznaczanie bloków Wejście: permutacje: π = (π(1), π(1),..., π(n)) oraz π = (π (1), π (1),..., π (n)) Wyjście: wektor pozycji początkowych bloków (b 1, b 2,..., b k ), k liczba bloków, oraz wektor pozycji końcowych bloków (e 1, e 2,..., e k ) π = (8, 10, 7, 4, 5, 6, 3, 1, 9, 2) π = (9, 3, 1, 6, 10, 7, 4, 5, 2, 8) k = 2, b = (2, 7), e = (5, 8) B 1 = (10, 7, 4, 5), B 2 = (3, 1) dr inż. Mariusz Uchroński Równoległy algorytm... 8/21
Równoległe wyznaczanie bloków Krok 1. parfor r {1, 2,..., p} do π(0) := π(n + 1) := π (0) := π (n + 1) := 1; (π ) 1 (0) := (π ) 1 (n + 1) := 1; if (poprzednia pozycja w π jest identyczna jak w π, tj. π(r 1) = π ((π ) 1 (π(r)) 1)) then B b [r] := 1; else B b [r] := 0; if (następna pozycja w π jest identyczna jak w π, tj. π(r + 1) = π ((π ) 1 (π(r)) + 1)) then B e [r] := 1; else B e [r] := 0; dr inż. Mariusz Uchroński Równoległy algorytm... 9/21
Równoległe wyznaczanie bloków π = (8, 10, 7, 4, 5, 6, 3, 1, 9, 2) π = (9, 3, 1, 6, 10, 7, 4, 5, 2, 8) (π ) 1 = (3, 9, 2, 7, 8, 4, 6, 10, 1, 5) B b = (0, 0, 1, 1, 1, 0, 0, 1, 0, 0) B e = (0, 1, 1, 1, 0, 0, 1, 0, 0, 0) dr inż. Mariusz Uchroński Równoległy algorytm... 10/21
Równoległe wyznaczanie bloków Krok 2. parfor r {1, 2,..., p} do if ((B b [r] = 0) and (B b [r + 1] = 1)) then B b [r] := 1; else B b [r] := 0; B b = (0, 1, 0, 0, 0, 0, 1, 0, 0, 0) dr inż. Mariusz Uchroński Równoległy algorytm... 11/21
Równoległe wyznaczanie bloków Krok 3. parfor r {1, 2,..., p} do if ((B e [r] = 0) and (B e [r 1] = 1)) then B e [r] := 1; else B e [r] := 0; B e = (0, 0, 0, 0, 1, 0, 0, 1, 0, 0) dr inż. Mariusz Uchroński Równoległy algorytm... 12/21
Równoległe wyznaczanie bloków Krok 4. Wyznaczyć sumy prefiksowe P elementów z tablicy B b, tj.. r r {1,2,...,p} P[r] = B b [i] i=1 B b = (0, 1, 0, 0, 0, 0, 1, 0, 0, 0) P = (0, 1, 1, 1, 1, 1, 2, 2, 2, 2) dr inż. Mariusz Uchroński Równoległy algorytm... 13/21
Równoległe wyznaczanie bloków Krok 5. parfor r {1, 2,..., p} do if (B b [r] = 1) then b[p[r]] := r; if (B e [r] = 1) then e[p[r]] := r; B e = (0, 0, 0, 0, 1, 0, 0, 1, 0, 0) B b = (0, 1, 0, 0, 0, 0, 1, 0, 0, 0) P = (0, 1, 1, 1, 1, 1, 2, 2, 2, 2) b = (2, 7), e = (5, 8) dr inż. Mariusz Uchroński Równoległy algorytm... 14/21
Eksperymenty obliczeniowe Równoległa algorytm wyznaczania bloków została zaimplementowana w języku C++ z wykorzystaniem biblioteki OpenMP. Dane na potrzeby eksperymentów obliczeniowych (permutacje zadań) zostały wygenerowane losowo. Liczba elementów permutacji zmieniała się w zakresie 10 3 10 7. Eksperymenty obliczeniowe zostały przeprowadzone w dwóch środowiskach obliczeniowych z pamięcią współdzieloną: 1 CPU procesor wielordzeniowy Intel Xeon E5-2670 (2.30 GHz) pozwalający na wykorzystanie 48 procesorów (węzeł klastra Bem), 2 MIC koprocesor Intel Xeon Phi 3120A (6GB, 1.1 GHz) pozwalający na wykorzystanie 228 procesorów. dr inż. Mariusz Uchroński Równoległy algorytm... 15/21
Przyspieszenie względne Przyspieszenie względne algorytmu równoległego zdefiniowane jest w następujący sposób S = T s T p, (2) gdzie T p jest czasem wykonania algorytmu równoległego na maszynie równoległej z p procesorami, a T s jest czasem wykonania algorytmu równoległego uruchomionego w sposób sekwencyjny, tj. dla p = 1 na tej samej maszynie. dr inż. Mariusz Uchroński Równoległy algorytm... 16/21
6 5 n=10 10 3 n=100 10 3 n=1000 10 3 n=10000 10 3 4 przyspieszenie 3 2 1 0 0 5 10 15 20 25 30 35 liczba procesorów Rysunek: Zależność przyspieszenia od liczby procesorów Intel Xeon E5-2670. dr inż. Mariusz Uchroński Równoległy algorytm... 17/21
12 10 n=10 10 3 n=100 10 3 n=1000 10 3 n=10000 10 3 8 przyspieszenie 6 4 2 0 0 20 40 60 80 100 120 140 liczba procesorów Rysunek: Zależność przyspieszenia od liczby procesorów Intel Xeon Phi 3120A. dr inż. Mariusz Uchroński Równoległy algorytm... 18/21
Skalowalność Algorytm równoległy jest skalowalny jeżeli jego efektywność nie zmienia się przy zmianie liczby procesorów i rozmiaru problemu o ten sam czynnik. Silna skalowalność zachodzi gdy utrzymanie efektywności algorytmu równoległego jest możliwe poprzez zwiększenie liczby procesorów bez zwiększania rozmiaru problemu. Słaba skalowalność zachodzi gdy utrzymanie efektywności algorytmu równoległego wymaga zwiększenia liczby procesorów i rozmiaru problemu o ten sam czynnik. dr inż. Mariusz Uchroński Równoległy algorytm... 19/21
12 10 p=16 p=32 p=64 p=128 8 przyspieszenie 6 4 2 0 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 rozmiar Rysunek: Zależność przyspieszenia od liczby zadań Intel Xeon Phi 3120A. dr inż. Mariusz Uchroński Równoległy algorytm... 20/21
Podsumowanie Z uzyskanych wyników widać, że dla różnej liczby zadań w permutacji przyspieszenie początkowo dość szybko wzrasta, osiąga maksimum, a następnie powoli zmniejsza się. Liczba procesorów dla którego osiągane jest maksimum przyspieszenia zależy od rozmiaru problemu. Przedstawiony algorytm równoległego wyznaczania bloków może zostać zastosowany jako element algorytmów metaheurystycznych w celu przyspieszenia obliczeń. dr inż. Mariusz Uchroński Równoległy algorytm... 21/21