Algorytmy Równoległe 2/72 Plan wykładu nr 8 Metody sekwencyjne rozwiązywania układów równań różniczkowych zwyczajnych przykłady układów opisywanych równaniami różniczkowymi zwyczajnymi podstawowe pojęcia, podział metod, błędy metody jednokrokowe i metody wielokrokowe Metody równoległe rozwiązywania układów równań różniczkowych zwyczajnych równoległość układu, równoległość metody, równoległość czasu (kroków) Definicja klastra, ogólna struktura klastra Typy i klasyfikacje klastrów Klastry na liście TOP500 Supercomputer Sites Przykłady realizacji klastrów: Beowulf, Mosix i openMosix 3/72 Metody rozwiązywania układów ODEs Wstęp: przedstawione metody dotyczą rozwiązywania układów równań różniczkowych zwyczajnych (ang. ODEs - Ordinary Differential Equations) o postaci: x1 f1 ( x1 , x2 , , xN , t ) x2 f 2 ( x1 , x2 , , xN , t ) x N f N ( x1 , x2 , , xN , t ) (1) z zadanym warunkiem początkowym w punkcie t0: x1 (t0 ) x10 , x2 (t0 ) x20 , , xN (t0 ) xN 0 (2) 4/72 Metody rozwiązywania układów ODEs - przykłady Szeregowy obwód RL przy wymuszeniu stałym: t=0 R zakładamy zerowe warunki początkowe: W i(0) iL (0) 0 i(t) uR(t) E w chwili t = 0 zamykamy wyłącznik W zapiszmy równanie zgodnie z II prawem Kirchhoffa: uR (t ) uL (t ) E napięcia na rezystancji i indukcyjności: podstawiamy: Ri (t ) L di (t ) R E i (t ) dt L L di (t ) E dt wprowadzamy oznaczenie: x1 = i(t) x1 R E x1 , L L uR (t ) Ri (t ) x1 (0) 0 L u L (t ) L di (t ) dt uL(t) 5/72 Metody rozwiązywania układów ODEs - przykłady Szeregowy obwód RLC przy wymuszeniu e(t): t=0 R zakładamy zerowe warunki początkowe: W i(0) iL (0) 0, uC (0) 0 C L i(t) uR(t) uL(t) uC(t) e(t) w chwili t = 0 zamykamy wyłącznik W zapiszmy równanie zgodnie z II prawem Kirchhoffa: uR (t ) uL (t ) uC (t ) e(t ) prąd kondensatora i napięcie cewki: napięcie na rezystancji: u R (t ) Ri (t ) RC iC (t ) C duC (t ) i (t ) dt duC (t ) dt napięcie cewki: di(t ) d duC (t ) d 2uC (t ) uL (t ) L LC LC dt dt dt dt 2 u L (t ) L di (t ) dt 6/72 Metody rozwiązywania układów ODEs - przykłady Szeregowy obwód RLC przy wymuszeniu e(t): do równania napisanego zgodnie z II prawem Kirchhoffa: uR (t ) uL (t ) uC (t ) e(t ) podstawiamy wyznaczone napięcia: du (t ) u R (t ) RC C , dt di(t ) u L (t ) L , dt otrzymując: duC (t ) d 2uC (t ) RC LC uC (t ) e(t ) dt dt 2 po uporządkowaniu: d 2uC (t ) duC (t ) LC RC uC (t ) e(t ) 2 dt dt d 2uC (t ) u L (t ) LC dt 2 7/72 Metody rozwiązywania układów ODEs - przykłady Szeregowy obwód RLC przy wymuszeniu e(t): rozwiązanie numeryczne równania drugiego rzędu: d 2uC (t ) duC (t ) LC RC uC (t ) e(t ) dt 2 dt wymaga jego przekształcenia do układu dwóch równań pierwszego rzędu w tym celu dzielimy obie strony równania przez LC: d 2uC (t ) R duC (t ) 1 e(t ) u ( t ) C dt 2 L dt LC LC wprowadzając podstawienie: x1 (t ) uC (t ), x2 (t ) duC (t ) dt otrzymujemy układ dwóch równań pierwszego rzędu: x1 (t ) x2 (t ) 1 R 1 x ( t ) x ( t ) x ( t ) e(t ) 1 2 2 LC L LC 8/72 Metody rozwiązywania układów ODEs - przykłady Układ mechaniczny: układ mechaniczny składający się z dwóch ciał o masach odpowiednio m1 i m2 i dwóch sprężyn o współczynnikach sprężystości k1 i k2 na ciało o masie m2 działa siła zewnętrzna f(t) opory tarcia ciał są proporcjonalne do prędkości, przy czym r1 i r2 są współczynnikami tarcia odpowiednio ciała o masie m1 i m2 źródło: Kaczorek T., Dzieliński A., Dąbrowski W., Łopatka R.: „Podstawy Teorii Sterowania”. WNT, Warszawa, 2005. 9/72 Metody rozwiązywania układów ODEs - przykłady Układ mechaniczny: współczynnik sprężystości k: k F x gdzie: k - współczynnik sprężystości [N/m] gdzie: F - siła [N], x - przesunięcie (odkształcenie) [m] współczynnik tarcia r: r T N gdzie: r - współczynnik tarcia (wielkość niemianowana), T - siła tarcia posuwistego [N], gdzie: N - siła dociskająca trące powierzchnie [N] oznaczmy: x1 x2 x3 x4 - współrzędna określająca położenie(*) ciała o masie m1 prędkość ciała o masie m1 (x2 = x1) współrzędna określająca położenie(*) ciała o masie m2 prędkość ciała o masie m2 (x4 = x3) . . (*) - przemieszczenie od położenia równowagi 10/72 Metody rozwiązywania układów ODEs - przykłady Układ mechaniczny: biorąc pod uwagę siły działające na poszczególne ciała na podstawie drugiego prawa Newtona możemy zapisać równania: m1 x2 r1 x2 k1 x1 k 2 ( x1 x3 ) 0 m2 x4 r2 x4 k 2 ( x3 x1 ) f (t ) po prostych przekształceniach otrzymujemy układ 4 równań: x1 x2 x2 k1 k 2 r k x1 1 x2 2 x3 m1 m1 m1 x3 x4 k k r 1 x4 2 x1 2 x3 2 x4 f (t ) m2 m2 m2 m2 11/72 Metody rozwiązywania układów ODEs Wstęp: przedstawiając metody numeryczne ograniczymy się tylko do jednego równania, gdyż upraszcza to zapis i jest powszechnie stosowaną praktyką w literaturze rozwiązywane jest zatem równanie: dx f ( x, t ), dt a t b, x(a) x0 (3) gdzie x0 jest znanym warunkiem początkowym w punkcie a = t0 zakładając, że: funkcja f(x,t) jest określona i ciągła w obszarze a t b, - < x < , gdzie a i b są skończone istnieje stała L > 0 taka, że dla każdego t [a,b] i dowolnych liczb x1 i x2 zachodzi nierówność (warunek Lipschitza): f ( x1, t ) f ( x2 , t ) L x1 x2 to można udowodnić, że w przedziale [a,b] istnieje dokładnie jedna funkcja ciągła różniczkowalna x(t) spełniająca równanie (3) z danym warunkiem początkowym (4) 12/72 Metody rozwiązywania układów ODEs Wstęp: numeryczne rozwiązanie równania (3) przy zadanym warunku początkowym nazywane jest także numerycznym rozwiązaniem zagadnienia początkowego (ang. IVP - Initial Value Problem) lub numerycznym całkowaniem zagadnienia początkowego ogólna idea numerycznego całkowania zagadnienia początkowego jest następująca: rozpoczynając od znanej wartości x0 w punkcie t0 przechodzimy przez cały przedział <a,b> obliczając wartości przybliżone rozwiązania dokładnego w wybranych punktach, t1,t2,t3,... x aż do osiągnięcia końca przedziału obliczenie wartości przybliżonej xn+1 w kolejnym punkcie tn+1 nazywane jest jednym krokiem obliczeń sposób obliczenia wartości przybliżonej xn+1 w kolejnym punkcie tn+1 (wyrażony najczęściej wzorem) w jednym kroku nazywany jest metodą numeryczną x0 x1 x2 t a=t0 t1 t2 t3 ... b 13/72 Metody rozwiązywania układów ODEs Krok całkowania: odległość pomiędzy dwoma kolejnymi punktami tn,tn+1, n = 0,1,2,... nazywana jest długością kroku całkowania i oznaczana przez hn jeśli odległości pomiędzy wszystkimi punktami tn,tn+1 są takie same (hn = const.), to mówimy, że obliczenia wykonywane są ze stałą długością kroku całkowania jeśli zaś odległości te zmieniają się, to mamy obliczenia ze zmienną długością kroku całkowania x x0 x1 x2 t a=t0 t1 t2 t3 ... hn b 14/72 Metody rozwiązywania układów ODEs Metody jednokrokowe i metody wielokrokowe: do obliczenia wartości przybliżenia xn+1 w punkcie tn+1 wykorzystywane są przybliżenia obliczone we wcześniejszych punktach jeśli do wykonania jednego kroku obliczeń wykorzystywane jest tylko jedno przybliżenie z poprzedniego kroku, to mówimy, że metoda numeryczna jest metodą jednokrokową (ang. onestep method) oznacza to, że do obliczenia x1 wykorzystujemy warunek początkowy x0, do obliczenia x2 - uprzednio obliczoną x wartość x1, do obliczenia x3 - wartość x2, x0 itd.. w przypadku, gdy do wykonania jednego kroku obliczeń wykorzystywanych jest klika przybliżeń z poprzednich kroków, to metodę taką nazywamy metodą wielokrokową (ang. multistep method) jeśli będzie to k przybliżeń, to mówimy, że jest to metoda k-krokowa x1 x2 t a=t0 t1 t2 t3 ... b 15/72 Metody rozwiązywania układów ODEs Błędy w metodach numerycznych rozwiązywania układów ODE: wyznaczanie kolejnych wartości rozwiązania przybliżonego obarczone jest błędem w analizie metod całkowania zagadnienia początkowego zasadniczo nie analizuje się błędu całkowitego, gdyż jest to dość trudne i ma niewielkie znaczenie praktyczne poddaje się natomiast analizie błąd nazywany błędem aproksymacji (błędem odcięcia, lokalnym błędem obcięcia) błąd ten definiowany jest jako różnica wartości rozwiązania dokładnego x(tn+1) w punkcie tn+1 i rozwiązania numerycznego xn+1 w tym samym punkcie przyjmuje się przy tym, że dla chwili tn wyrażenie xn = x(tn) jest rozwiązaniem dokładnym błąd aproksymacji jest zatem błędem jaki wnosi sama metoda w jednym kroku obliczeń bez uwzględniania wpływu błędów popełnionych we wcześniejszych krokach 16/72 Metody rozwiązywania układów ODEs Błędy w metodach numerycznych rozwiązywania układów ODE: błąd aproksymacji wykorzystywany jest często w metodach ze zmiennym krokiem całkowania do regulacji długości tego kroku poza błędem aproksymacji istnieją także błędy wynikające z reprezentacji liczb w arytmetyce danej maszyny cyfrowej (błędy zaokrągleń) wielkość tego błędu jest zazwyczaj o wiele rzędów mniejsza od wielkości błędu aproksymacji i w większości rozważań nie jest uwzględniana, chociaż może mieć znaczenie w przypadku bardzo dużej liczby kroków obliczeniowych 17/72 Metody jednokrokowe - metoda Taylora metoda Taylora (metoda rozwinięcia w szereg Taylora) powstaje poprzez rozwinięcie rozwiązania dokładnego x(t) w szereg Taylora w otoczeniu punktu t = tn i obliczeniu rozwinięcia dla t = tn+1 po zastąpieniu rozwiązania dokładnego przez rozwiązanie przybliżone otrzymujemy wzór ogólny metody Taylora: h h 2 (1) h p ( p1) xn1 xn f ( xn , tn ) f ( xn , tn ) f ( xn , tn ) 1! 2! p! ograniczając liczbę członów rozwinięcia do p otrzymujemy metodę p-tego rzędu dla p = 1 jest to jedna z najprostszych metod - metoda Eulera xn 1 xn h f ( xn , tn ) (5) (6) przyjmując natomiast p = 2 otrzymujemy metodę Taylora rzędu drugiego, tzw. ulepszoną metodę Eulera: h2 xn 1 xn h f ( xn , tn ) f x ( xn , tn ) f ( xn , tn ) f t ( xn , tn ) 2 gdzie: fx i ft są pochodnymi cząstkowymi, odpowiednio, po x i t. (7) 18/72 Metody jednokrokowe - metoda Eulera w równaniu różniczkowym: dx f ( x, t ), x(t0 ) x0 dt (8) zastępujemy lewą stronę równania ilorazem różnicowym: po podstawieniu: dx x(t0 h) x(t0 ) dt h x(t0 h) x(t0 ) f ( x0 , t0 ) h (9) x(t) (10) wprowadzając oznaczenia: t n t0 n h xn x(t0 n h) x(t0+h) (11) otrzymujemy: xn 1 xn h f ( xn , tn ) x(t0) t t0 (12) t1=t0+h h 19/72 Metody jednokrokowe - metoda Eulera metoda Eulera polega na zastąpieniu krzywej całkowej x(t) łamaną o wierzchołkach: (ti , xi ), i 0,1,2,... (13) (ti 1 , xi 1 ), (ti , xi ) (14) składającą się z odcinków odcinki pomiędzy punktami: mają współczynnik nachylenia wyrażony zależnością: xi xi 1 f ( xi , ti ) h (15) w praktyce metoda Eulera jest rzadko stosowana, gdyż: x(t) jest bardzo wolno zbieżna otrzymanie dobrej dokładności obliczeń wymaga bardzo małego kroku h zwiększenie liczby kroków powoduje narastanie błędów zaokrągleń x(t0+h) x(t0) t t0 t1=t0+h h 20/72 Metody jednokrokowe - metoda Eulera Przykład 1: dx 2 t dt warunek początkowy: t0 0, równanie: wzór ogólny metody Eulera: xn 1 xn h f ( xn , tn ) rozwiązanie: x0 1 x1 x0 h f ( x0 , t0 ) x0 h t02 1,0 0,1 0,02 1,0 t1 t0 h 0,0 0,1 0,1 x2 x1 h f ( x1 , t1 ) x1 h t12 1,0 0,1 0,12 1,0001 t2 t1 h 0,1 0,1 0,2 x3 x2 h f ( x2 , t2 ) x2 h t22 1,0001 0,1 0,22 1,0005 t3 t2 h 0,2 0,1 0,3 krok: h 0,1 21/72 Metody jednokrokowe - metoda Eulera dx/dt = t2 - program w języku C (1/2): /* Name: t2_Euler.c Copyright: PWSIP Author: Jarosław Forenc ([email protected]) Date: 14-05-2007 Description: Rozwiązanie równania: dx/dt = t^2, x(0) = 1.0 - Metoda Eulera */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { double int FILE h, tp, tk, x0, t, x, x_new, t_print, delta_t; print; *plik = fopen("t2_Euler.dat","w+"); h = 1.0e-6; tp = 0.0; tk = 2.0; x0 = 1.0; print = 200; fprintf(plik,"%g /* krok całkowania */ /* początek przedziału obliczeń */ /* koniec przedziału obliczeń */ /* warunek początkowy */ /* liczba zapamiętywanych punktów */ %1.7f\n",tp,x0); 22/72 Metody jednokrokowe - metoda Eulera dx/dt = t2 - program w języku C (2/2): delta_t = (tk-tp)/print; t_print = delta_t; t = tp; x = x0; do { x_new = x + h * (t * t); x = x_new; t = t + h; if (fabs(t-t_print)<h*0.4) { fprintf(plik,"%g %1.7f\n",t,x); t_print = t_print + delta_t; } } while (t<=tk); fclose(plik); system("pause"); return 0; } dx 2 t dt 23/72 Metody jednokrokowe - metody Rungego-Kutty metody Rungego-Kutty powstają z rozwinięcia w szereg Taylora: h h 2 (1) h p ( p1) xn1 xn f ( xn , tn ) f ( xn , tn ) f ( xn , tn ) 1! 2! p! (16) zapisując rozwinięcie (16) w postaci: xn 1 xn h Tp ( xn , tn ; h) (17) h (1) h p 1 ( p 1) Tp ( xn , tn ; h) f ( xn , tn ) f ( xn , tn ) f ( xn , tn ) 2! p! (18) gdzie: zastępujemy Tp(xn,tn;h) inną funkcją Kp(xn,tn;h): dla której nie jest wymagana znajomość pochodnych cząstkowych f(x,t) która zapewni ten sam rząd wartości błędu odcięcia co odpowiedni algorytm Taylora 24/72 Metody jednokrokowe - metody Rungego-Kutty metody Rungego-Kutty określane są wzorem ogólnym: p xn 1 xn wi ki i 1 i 1 k1 h f ( xn , t n ), ki h f ( xn aij k j , t n ci h) dla i 1 j 1 gdzie: p - rząd metody Rungego-Kutty (p 1) wi, aij, ci - odpowiednie współczynniki liczbowe problem doboru współczynników liczbowych nie ma jednoznacznego rozwiązania, toteż istnieją różne metody Rungego-Kutty tego samego rzędu (19) 25/72 Metody jednokrokowe - metody Rungego-Kutty dla p = 1 otrzymujemy metodę Eulera określoną wzorem: xn 1 xn h f ( xn , tn ) (20) dla p = 2 otrzymujemy metodę drugiego rzędu (metodę Heuna, zmodyfikowany algorytm trapezów): k1 h f ( xn , tn ) k 2 h f ( xn k1 , tn h) (21) xn1 xn (k1 k 2 ) / 2 dla p = 3 otrzymujemy metodę trzeciego rzędu: k1 h f ( xn , tn ) k2 h f ( xn k1 / 2, tn h / 2) k3 h f ( xn k1 2k2 , tn h) xn 1 xn (k1 4k2 k3 ) / 6 (22) 26/72 Metody jednokrokowe - metody Rungego-Kutty dla p = 4 otrzymujemy najpopularniejszą i najczęściej stosowaną metodę Rungego-Kutty - metodę czwartego rzędu (RK4): k1 h f ( xn , t n ) k 2 h f ( xn k1 / 2, t n h / 2) k3 h f ( xn k 2 / 2, t n h / 2) k 4 h f ( xn k 3 , t n h ) xn1 xn (k1 2k 2 2k3 k 4 ) / 6 (23) metoda ta zapewnia dobrą dokładność obliczeń przy stosunkowo dużych wartościach kroku h wadą tej metody jest konieczność czterokrotnego obliczania wartości funkcji f(x,t) w czasie każdego kroku, dodatkowo wartości te nie są wykorzystywane w żadnych następnych obliczeniach wzór (23) jest klasycznym wzorem metody Rungego-Kutty czwartego rzędu oprócz niego można spotkać także inne wzory metody tego samego rzędu, np. wzór „trzech ósmych”, Gilla, Ralstona 27/72 Metody jednokrokowe - metody Rungego-Kutty dx/dt = t2 - fragmenty programów w języku C: /* Metoda Eulera */ /* Metoda RK4 */ do { do { x_new = x + h*(t*t); x = x_new; t = t + h; k1 k2 k3 k4 /* ... */ x_new = x + (k1+2*k2+2*k3+k4)/6; } while (t<=tk); = = = = h*(t*t); h*((t+h/2)*(t+h/2)); h*((t+h/2)*(t+h/2)); h*((t+h)*(t+h)); x = x_new; t = t + h; /* ... */ Metoda RK4: k1 h f ( xn , t n ) k 2 h f ( xn k1 / 2, t n h / 2) k3 h f ( xn k 2 / 2, t n h / 2) k 4 h f ( xn k 3 , t n h ) xn1 xn (k1 2k 2 2k3 k 4 ) / 6 } while (t<=tk); Metoda Eulera: xn 1 xn h f ( xn , tn ) 28/72 Metody jednokrokowe - metody Rungego-Kutty Szeregowy obwód RLC - fragment programu w języku C: do { k11 = h*(x2); k12 = h*(-1/(L*C)*x1-(R/L)*x2 + E/(L*C)); k21 = h*(x2+k12/2); k22 = h*(-1/(L*C)*(x1+k11/2)-(R/L)*(x2+k12/2) + E/(L*C)); k1 h f ( xn , t n ) k 2 h f ( xn k1 / 2, t n h / 2) k3 h f ( xn k 2 / 2, t n h / 2) k 4 h f ( xn k 3 , t n h ) xn1 xn (k1 2k 2 2k3 k 4 ) / 6 k31 = h*(x2+k22/2); k32 = h*(-1/(L*C)*(x1+k21/2)-(R/L)*(x2+k22/2) + E/(L*C)); k41 = h*(x2+k32); k42 = h*(-1/(L*C)*(x1+k31)-(R/L)*(x2+k32) + E/(L*C)); x1_new = x1 + (k11 + 2*k21 + 2*k31 + k41)/6; x2_new = x2 + (k12 + 2*k22 + 2*k32 + k42)/6; x1 = x1_new; x2 = x2_new; t = t + h; /* ... */ } while (t<=tk); x1 (t ) x2 (t ) 1 R E x ( t ) x ( t ) x ( t ) 2 1 2 LC L LC 29/72 Metody równoległe rozwiązywania układów ODE zastosowanie algorytmów równoległych w analizie zagadnień początkowych jest opłacalne, gdy: obliczanie funkcji prawej strony równania różniczkowego jest kosztowne, np. - gdy występuje konieczność rozwiązania dodatkowego zagadnienia liczba równań układu jest bardzo duża, np. - w przestrzennej dyskretyzacji równań różniczkowych cząstkowych - w analizie dużych układów elektrycznych przedział całkowania jest bardzo długi układ równań różniczkowych musi być wielokrotnie całkowany, np. - przy dopasowywaniu parametrów układu - w zadaniach optymalizacji otrzymanie dobrej dokładności obliczeń wymaga zastosowania bardzo małego kroku całkowania 30/72 Metody równoległe rozwiązywania układów ODE pierwsze badania dotyczące równoległych algorytmów rozwiązywania zagadnień początkowych prowadzone były m.in. przez C.W. Geara, który wprowadził klasyfikację algorytmów równoległych, wyróżniając dwie ich grupy: równoległość układu (zagadnienia) (ang. parallelism across the system - problem) lub równoległość przestrzeni (ang. parallelism across space) równoległość metody (ang. parallelism across the method) lub równoległość czasu (ang. parallelism across time) w późniejszych publikacjach innych autorów (m.in. K. Burrage, D. Petcu) podział ten został rozszerzony do trzech grup: równoległość układu (przestrzeni) (ang. parallelism across the system - space) - równoległość obliczania prawej strony równania różniczkowego - podzielenie układu równań różniczkowych na bloki składające się z jednego lub kilku równań, przypisanie bloków do procesorów i wykonanie równolegle obliczeń równoległość metody (ang. parallelism across the method) - przypisanie różnych części algorytmu metody numerycznej do różnych procesorów równoległość czasu (kroków) (ang. parallelism across time - steps) - możliwość jednoczesnego obliczania dużej liczby kroków całkowania 31/72 Metody równoległe rozwiązywania układów ODE Równoległość układu: równoległość układu (ang. parallelism across the system) jest typem algorytmów równoległych opartych na rozdzieleniu obliczania funkcji prawej strony równania różniczkowego na procesory układ równań różniczkowych dzielony jest na bloki równań przydzielane do rozwiązujących je procesorów liczba bloków jest zależna od liczby dostępnych procesorów oraz liczby równań tworzących oryginalny układ algorytmy tego typu najlepiej nadają się do stosowania w dużych systemach (ang. large-scale parallelism), składających się z dużej liczby równań informacje między procesorami wymieniane są w każdym kroku całkowania, zatem komunikacja między procesorami musi być bardzo szybka x1 f1 ( x1 , x2 ,, x6 , t ) x2 f 2 ( x1 , x2 ,, x6 , t ) Procesor 1 x3 f 3 ( x1 , x2 ,, x6 , t ) x4 f 4 ( x1 , x2 ,, x6 , t ) Procesor 2 x5 f 5 ( x1 , x2 ,, x6 , t ) x6 f 6 ( x1 , x2 ,, x6 , t ) Procesor 3 32/72 Metody równoległe rozwiązywania układów ODE Równoległość układu: układy równań przeznaczone do rozwiązywania tego typu algorytmami równoległymi można podzielić na dwie grupy: układy homogeniczne: wszystkie bloki mają podobną strukturę czas obliczeń w jednym kroku w każdym bloku jest taki sam, a więc obliczenia są bardzo efektywne układy o takiej strukturze powstają m.in. po dyskretyzacji równań różniczkowych cząstkowych układy heterogeniczne: układy o nieregularnej strukturze czas obliczeń w poszczególnych blokach różni się, a zatem dużym problemem staje się równomierne obciążenie procesorów, komunikacja między nimi i synchronizacja układy heterogeniczne najczęściej występują podczas modelowania układów VLSI 33/72 Metody równoległe rozwiązywania układów ODE Równoległość metody: w algorytmach realizujących równoległość metody (ang. parallelism across the method) następuje przypisanie różnych części algorytmu metody do różnych procesorów. Może to np. dotyczyć wielokrotnego obliczania funkcji prawej strony równania różniczkowego w jednym kroku całkowania. metody należące do tej grupy przeznaczone są dla małej skali równoległości (ang. small-scale parallelism), czyli gdy do obliczeń wykorzystywanych jest od 2 do 10 procesorów czasami metody tego typu stosowane są w celu zwiększenia dokładności rozwiązania otrzymywanego w tym samym czasie, co mniej dokładne metody sekwencyjne wymagają systemów równoległych zapewniających bardzo szybką komunikację między procesorami, gdyż odbywa się ona w każdym kroku całkowania algorytmy te umożliwiają wykorzystanie niewielkiej liczby procesorów, toteż i osiągane przyspieszenia obliczeń nie są duże 34/72 Metody równoległe rozwiązywania układów ODE Równoległość czasu (kroków): w metodach realizujących równoległość czasu (kroków) (ang. parallelism across time - steps) prawa strona równania różniczkowego rozwiązywana jest jednocześnie w wielu punktach liczba jednocześnie obliczanych punktów jest stopniem równoległości metody do ich najbardziej znanych przedstawicieli należą: metoda Picarda Waveform Relaxation Method (WR) metoda spekulacyjna (ang. speculative method) nie jest wymagana bardzo szybka komunikacja między procesorami, gdyż nie jest ona związana z każdym krokiem całkowania z powyższego względu ten typ algorytmów najbardziej nadaje się do zastosowania w klastrach, będących obecnie jednym z najczęściej stosowanych systemów równoległych 35/72 Definicja klastra Klaster (ang. cluster) jest typem równoległego lub rozproszonego systemu składającego się z komputerów PC lub stacji roboczych połączonych siecią, a używanego jako pojedynczy, zintegrowany zespół obliczeniowy Pojedynczy komputer przyłączony do całej struktury klastra i wykonujący przekazane jej zadania obliczeniowe nazywany jest węzłem klastra (ang. node) Węzeł sterujący Internet Firewall LAN Jako węzły klastra stosowane są: typowe komputery klasy PC stacje robocze maszyny SMP (Symmetric MultiProcessing) ... Węzeł 1 Węzeł 2 Węzeł 3 Węzeł n 36/72 Dlaczego obliczenia równoległe na klastrach? O dużej popularności klastrów zdecydowały m.in.: niski koszt zakupu pojedynczego komputera klasy PC lub stacji roboczej bardzo szybki wzrost mocy obliczeniowej pojedynczych komputerów oraz wzrost szybkości sieci komputerowych możliwość wykorzystania do budowy klastra już dostępnych komputerów prosta integracja i przystosowanie do istniejących sieci komputerowych duża ilość bezpłatnego oprogramowania: systemy operacyjne biblioteki komunikacyjne biblioteki numeryczne kompilatory programy narzędziowe 37/72 Typy klastrów Klastry do przetwarzania danych: służą do masowego przetwarzania danych jednego rodzaju, w szczególności danych naukowych wymagają specjalnie przygotowanych programów, tworzonych przy użyciu specjalizowanych bibliotek programistycznych (MPI, PVM) ważnym elementem środowiska programistycznego są systemy kolejkowania systemy kolejkowania pozwalają na uporządkowane uruchamianie oprogramowania użytkowników w celu: optymalnego wykorzystania sprzętu obsługi priorytetów różnych programów przydzielania limitów czasowych użytkownikom do najczęściej używanych systemów kolejkowania należą: GNQS - Generic Network Queue System PBS - Portable Batch System 38/72 Typy klastrów Klastry serwerowe: klastry serwerowe (ang. server cluster) przeznaczone są do utrzymywania: bardzo obciążonych usług sieciowych, np. serwerów WWW baz danych nieskomplikowanych zadań obliczeniowych głównym celem ich stosowania jest zrównoważone dystrybuowanie obciążeń pomiędzy poszczególne serwery będące węzłami klastra zazwyczaj nie wymagają zbyt wyrafinowanego oprogramowania 39/72 Typy klastrów Klastry wysokiej dostępności: klastry wysokiej dostępności HA (ang. High Availability) nie zwiększają wydajności serwisów, ale eliminują tzw. pojedynczy punkt awarii SPOF (ang. Single Point Of Failure) w przypadku uszkodzenia jednego z serwerów jego zadania są w sposób niewidoczny dla użytkowników przejmowane przez inny węzeł klastra oprogramowanie stosowane w tego typu systemach powinno zapewnić: wykrycie awarii przejęcie zadań uszkodzonego węzła w sieci przełączenie węzłów w tryb korzystania z sieci zapasowej (w przypadku uszkodzenia sieci podstawowej) możliwość dzielenia pamięci masowej w klastrze (rozproszone systemy plików) 40/72 Klasyfikacje klastrów Ze względu na przeznaczenie komputerów PC lub stacji roboczych tworzących klaster, wyróżniane są: klastry dedykowane - węzły tworzące klaster są specjalnie przeznaczone do tego systemu, często umieszczone są w jednej dużej obudowie i pozbawione dodatkowych urządzeń takich jak monitory, klawiatury, myszy klastry niededykowane - tworzone są przez komputery PC lub stacje robocze wykorzystywane normalnie do codziennej pracy, a obliczenia na nich wykonywane są w stanie bezczynności Ze względu na konfigurację węzłów, wyróżniamy: klastry homogeniczne - węzły tworzące klaster mają taką samą konfigurację sprzętową (typ procesora, ilość pamięci operacyjnej, płytę główną, dysk twardy) oraz pracują pod kontrolą tego samego systemu operacyjnego. Zazwyczaj klastry dedykowane są klastrami homogenicznymi klastry heterogeniczne - są to klastry, których węzły mają różną konfigurację sprzętową oraz mogą pracować pod kontrolą różnych systemów operacyjnych 41/72 Klasyfikacje klastrów Ze względu na architekturę węzłów klastry dzielą się na: klastry komputerów PC (NOWs - ang. Network of Workstations) klastry stacji roboczych (COWs - ang. Cluster of Workstations) klastry komputerów SMP (CLUMPs - ang. Cluster of SMPs) Ze względu na system operacyjny zainstalowany na węzłach klastra, wyróżniamy: klastry pracujące pod kontrolą systemu Linux: Beowulf i Mosix klastry pracujące pod kontrolą systemu Novel NetWare: NCS - NetWare Cluster Services klastry pracujące pod kontrolą systemu MS Windows NT: Illinois HPVM klastry pracujące pod kontrolą systemu SUN Solaris: Berkeley NOW klastry pracujące pod kontrolą systemu IBM AIX: IBM SP2 klastry pracujące pod kontrolą systemu HP UX: Illinois-PANDA klastry pracujące pod kontrolą systemów: Solaris MC, SCO UnixWare 42/72 TOP500 List - Liczba klastrów 406 400 410 410 417 360 364 361 373 304 291 296 208 149 93 '02.11 '03.06 '03.11 '04.06 '04.11 '05.06 '05.11 '06.06 '06.11 '07.06 '07.11 '08.06 '08.11 '09.06 '09.11 Źródło: http://www.top500.org 43/72 34th TOP500 List - Klastry (Rmax [TF]) 1759 - MPP - Cluster 1042 832 1 2 3 Źródło: http://www.top500.org 826 4 563 544 478 459 433 424 5 6 7 8 9 10 44/72 34th TOP500 List - Klastry (Rmax [TF]) 416 - MPP 350 - Cluster 275 11 12 13 Źródło: http://www.top500.org 275 266 14 15 205 204 16 17 191 181 174 18 19 20 45/72 Klaster KETIM2 Miejsce instalacji: Rok instalacji: Beowulf homogeniczny dedykowany Liczba węzłów: 2004-2006 Typ klastra: Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii 7 Sieć komputerowa: Gigabit Ethernet 46/72 Klaster KETIM2 Każdy węzeł klastra posiada następującą konfigurację sprzętową: płyta główna Intel ServerBoard Vero Beach SE7505VB2 ATX Socket 604 2 - do dwóch procesorów Intel Xeon zintegrowane karty sieciowe: Intel PRO/100+ i Intel PRO/1000 zintegrowana karta graficzna ATI Rage XL 8 MB procesor Intel Xeon 2,66 GHz 1 GB pamięci RAM (2 x ECC DDR266 512 MB) dysk twardy 80 GB ATA/100 obudowa Intel SC5200 Sieć komputerowa: 2 Allied Telesyn AT-9410GB Gigabit Switch interfejsy Gigabit Ethernet (Intel PRO/1000) stosowane są do komunikacji między węzłami podczas obliczeń interfejsy Fast Ethernet (Intel PRO/100+) służą do kontroli i sterowania klastrem 47/72 Klaster KETIM2 Wszystkie węzły oraz urządzenia sieciowe (switche) umieszczone są w szafie montażowej 19’’ Oprogramowanie: system operacyjny: Ubuntu Linux 7.04 system plików NFS (Network File System) komunikacja między węzłami: Open MPI v. 1.2.7 Praca na klastrze: bezpośrednio - wykorzystując monitor, klawiaturę i mysz podłączone do węzła-serwera zdalnie - poprzez sieć Internet (dostęp tylko z wybranych komputerów) 48/72 Klaster KETIM2 Budowa klastra (styczeń 2004) 49/72 Klaster KETIM2 Budowa klastra (styczeń 2004) 50/72 Klaster KETIM2 Budowa klastra (styczeń 2004) 51/72 Klaster KETIM2 Rozbudowa klastra (sierpień 2005) 52/72 Klaster Beowulf Podstawowe cechy: Beowulf (http://www.beowulf.org/) to wielokomputerowa architektura, która może zostać użyta do obliczeń równoległych do zbudowania takiego systemu mogą być użyte powszechnie dostępne elementy komputerowe, takie jak zwykłe komputery PC, standardowe karty i przełączniki Ethernet Beowulf korzysta ze zwykłego oprogramowania: system operacyjny: Linux biblioteki komunikacyjne: MPI i PVM zazwyczaj składa się z jednego węzła-serwera i jednego lub większej liczby węzłów klientów połączonych przez Ethernet lub inną sieć węzeł-serwer: kontroluje cały klaster i udostępnia pliki klientom pełni funkcję konsoli klastra jest bramą klastra do świata zewnętrznego umożliwia konfigurowanie i kontrolowanie pozostałych węzłów 53/72 Klaster Beowulf Podstawowe cechy: duże maszyny Beowulf mogą mieć więcej niż jeden węzeł-serwer oraz inne węzły przystosowane do wykonywania specyficznych zadań w większości przypadków węzły-klienci nie mają klawiatur czy monitorów, a dostęp do nich możliwy jest jedynie przez zdalne logowanie bądź opcjonalny terminal szeregowy w konfiguracji bezdyskowej klienci nie znają nawet swojego adresu IP lub nazwy, dopóki serwer im ich nie przydzieli 54/72 Klaster Beowulf W zależności od użytego sprzętu i zapotrzebowania na moc obliczeniową można wyodrębnić dwie klasy systemów Beowulf: Klasa I - maszyny w klastrze muszą być zbudowane z części powszechnie dostępnych (tzw. wymóg istnienia części w ogólnoświatowych katalogach); podstawowe cechy: łatwa dostępność sprzętu i tania konserwacja standardowe i łatwo dostępne sterowniki Linux uniezależnienie się od konkretnego dostawcy niższa wydajność od klasy II Klasa II - maszyny nie spełniające wymagań klasy I dotyczących ogólnodostępności części; podstawowe cechy: większe koszty niż systemy klasy I uzależnienie od konkretnego dostawcy przy korzystaniu z unikalnych komponentów istnieje ryzyko niedostępności sterowników pod systemem Linux system taki jest zazwyczaj wydajniejszy od przedstawicieli klasy I 55/72 Przykłady klastrów Beowulf Klastry Beowulf budowane są zazwyczaj ze zwykłych komputerów PC Odin II Beowulf Cluster Layout, University of Chicago, USA 56/72 Przykłady klastrów Beowulf Klastry Beowulf budowane są zazwyczaj ze zwykłych komputerów PC NASA 128-processor Beowulf cluster: A cluster built from 64 ordinary PC's 57/72 Przykłady klastrów Beowulf Early Aspen Systems Beowulf Cluster With RAID 58/72 Mosix i openMosix MOSIX - co to jest? MOSIX - Multi-computer Operating System for unIX system zarządzania klastra komputerowego dla Linuksa realizujący założenia Single System Image (SSI) powstał i jest rozwijany na Uniwersytecie Hebrajskim w Jerozolimie (Izrael) pod kierunkiem prof. Amnona Baraka pierwotnie był realizowany na bazie systemu BSD UNIX, obecnie jedyna platformą systemową jest Linux, a platformą sprzętową x86 główną ideą twórców Mosixa było zbudowanie oprogramowania pozwalającego na zbudowanie klastra, który z punktu widzenia użytkownika, jak i uruchamianych programów, będzie widoczny jako jeden „superkomputer” (SSI) 59/72 Mosix i openMosix Obecnie Mosix występuje w dwóch wersjach: Mosix rozwijany pod kierunkiem prof. Amnona Baraka free trial 32-bit copy for academics, researchers, students and non-profit org wersja komercyjna: 1000 USD za 10 węzłow + 50 USD za każdy kolejny węzeł http://www.mosix.org/ MOSIX version 1 for Linux-2.4 - umożliwia zarządzanie jednym klastrem MOSIX version 2 (MOSIX 2) for Linux-2.6 - umożliwia zarządzanie klastrem lub gridem złożonym z wielu klastrów dystrybucja zawiera patch na jądro systemu oraz zbiór programów użytkowych openMosix (The openMosix Project has officially closed as of March 1, 2008) zainicjowany przez Moshe Bara w styczniu 2002 roku jako odgałęzienie projektu MOSIX, w odpowiedzi na zmianę licencji MOSIX-a dostępny bezpłatnie z kodem źródłowym obecnie openMosix nie zawiera oryginalnego kodu MOSIX-a http://openmosix.sourceforge.net/ dystrybucja zawiera patch na jądro systemu oraz zbiór programów użytkowych 60/72 Mosix i openMosix Podstawowe informacje: Mosix może być uruchomiony w dowolnej sieci linuksowej o jednolitej architekturze Mosix nie narzuca wymogu sprzętu mającego pełnić funkcję węzłów - do budowy klastra mogą być wykorzystane zwykłe komputery żadna stacja nie jest wyróżniona, nie istnieje pojęcie węzła-serwera w odróżnieniu od klastra Beowulf, zadanie do wykonania dla klastra może być zlecone z dowolnego węzła zazwyczaj jeden z komputerów służy jako brama do sieci lokalnej i konsola użytkownika klaster Mosix jest niewidoczny (transparentny) dla uruchamianych procesów, dla programu istnieje tylko jeden superkomputer interfejs użytkownika nie zmienia się, gdy pracuje się lokalnie lub zdalnie Mosix udostępnia klastrowy system plików MFS (Mosix File System) 61/72 Mosix i openMosix Ogólna struktura klastra MOSIX źródło: K. Lal, T. Rak: „Linux a technologie klastrowe” 62/72 Mosix i openMosix Pracą Mosixa sterują dwa podstawowe algorytmy (moduły wewnętrzne, będące modyfikacjami jądra Linuxa): mechanizm migracji (przenoszenia) procesów z wywłaszczeniem PPM (ang. Preemptive Process Migration) algorytm ten zajmuje się równoważeniem obciążenia procesorów Mosix przenosi procesy na zewnątrz jakiejś stacji jeśli osiąga ona wyznaczony poziom obciążenia procesy są rozdzielane pomiędzy najmniej obciążone maszyny w sieci tak, aby obciążenie było najlepiej zrównoważone proces może migrować wielokrotnie zanim ukończy swoje działanie ponieważ Mosix jest modyfikacją jądra Linuksa więc migracji podlegają wszystkie procesy uruchomione przez system użytkownik nie wie jak jego procesy są przenoszone pomiędzy węzłami Mosix rozpoznaje procesy nie nadające się do migracji i uruchamia je lokalnie każdy węzeł jest właścicielem procesu, który został uruchomiony na nim lokalnie, a serwerem dla procesów, które się przemieściły z innych węzłów klastra 63/72 Mosix i openMosix algorytm odpowiadający za mechanizm adaptacyjnego (czyli reagującego na panujące w danej chwili warunki) współdzielenia zasobów MS (ang. Memory Sharing) algorytm ten zajmuje się unikaniem stronicowania pamięci jeśli pamięć RAM jakiegokolwiek węzła wyczerpie się i procesor rozpoczyna stronicowanie pamięci uruchamiając mechanizmy pamięci wirtualnej, to część procesów jest przenoszona na maszynę dysponującą wolną pamięcią, nawet jeśli miałoby to zaburzyć równowagę obciążeń 64/72 National Supercomputer HLRB-II: SGI Altix 4700 Nazwa: HLRB-II Miejsce instalacji: Leibniz Rechenzentrum, Garching (Technische Universität München) Producent: SGI Model: SGI Altix 4700 Rok instalacji: 2007 URL: http://www.lrz-muenchen.de/services/compute/hlrb Charakterystyka: liczba rdzeni: 9782 pamięć główna: 38912 GB system operacyjny: SUSE Linux Enterprise Server 10 sieć komputerowa: NUMAlink 4 TOP 500: Rmax = 56520 GFlops 06/2007 - 10 miejsce, 11/2009 - 82 miejsce 65/72 National Supercomputer HLRB-II: SGI Altix 4700 Technische Universität München, Garching 66/72 National Supercomputer HLRB-II: SGI Altix 4700 Technische Universität München, Garching 67/72 National Supercomputer HLRB-II: SGI Altix 4700 Technische Universität München, Garching 68/72 National Supercomputer HLRB-II: SGI Altix 4700 SGI Altix 4700 69/72 National Supercomputer HLRB-II: SGI Altix 4700 SGI Altix 4700 70/72 National Supercomputer HLRB-II: SGI Altix 4700 Rückkühlwerke Hö Höchstleistungsrechner (säulenfrei) (sä Zugangsbrü cke Zugangsbrücke Server/Netz Archiv/Backup Archiv/Backup Klima Klima Elektro Cube, 36 x 36 x 36 [m] 71/72 National Supercomputer HLRB-II: SGI Altix 4700 19 partycji / 9728 rdzeni Każda partycja zawiera 256 procesorów Itanium dual-core Intel Itanium2 Montecito Dual Core, 1.6 GHz 4 Flops / cykl / rdzeń 12.8 GFlops (6.4 GFlops / rdzeń) 13 partycji „high-bandwidth” blade zawiera 1 procesor (2 rdzenie) oraz 4 GB pamięci szyna 533 MHz (8.5 GB/sec) 6 partycji „high-density” blade zawiera 2 procesory (4 rdzenie) oraz 4 GB pamięci szyna 533 MHz (8.5 GB/sec) 72/72 National Supercomputer HLRB-II: SGI Altix 4700