Uploaded by jaroslaw.forenc

AR-Wyk-08

advertisement
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:
x1  f1 ( x1 , x2 ,  , xN , t )
x2  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)
x1  
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:
 x1 (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 x2  r1 x2  k1 x1  k 2 ( x1  x3 )  0
m2 x4  r2 x4  k 2 ( x3  x1 )  f (t )

po prostych przekształceniach otrzymujemy układ 4 równań:
x1  x2
x2  
k1  k 2
r
k
x1  1 x2  2 x3
m1
m1
m1
x3  x4
k
k
r
1
x4  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 ( p1)
xn1  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 ( p1)
xn1  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)
xn1  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 )
xn1  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 )
xn1  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 )
xn1  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);
 x1 (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
x1  f1 ( x1 , x2 ,, x6 , t )
x2  f 2 ( x1 , x2 ,, x6 , t )
Procesor 1
x3  f 3 ( x1 , x2 ,, x6 , t )
x4  f 4 ( x1 , x2 ,, x6 , t )
Procesor 2
x5  f 5 ( x1 , x2 ,, x6 , t )
x6  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
Download