ProActive Parallel Suite
Transkrypt
ProActive Parallel Suite
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
ProActive Parallel Suite
Grzegorz Chimosz
Wydziaª Matematyki, Informatyki i Mechaniki UW
8 stycznia 2009
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Spis tre±ci
1
Wprowadzenie
Programowanie wspóªbie»ne i rozproszone
Architektura
2
Podstawowe poj¦cia i pomysªy
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
3
Przykªad i podsumowanie
Przykªad
Bibliograa
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Programowanie wspóªbie»ne i rozproszone
Architektura
Programowanie wspóªbie»ne i rozproszone
Popularno±¢ architektur wielordzeniowych, wieloprocesorowych
i rozproszonych
... i trudno±¢ wykorzystania ich potencjaªu
Du»a cz¦±¢ kodu zarz¡dza dodatkowymi strukturami danych i
sprawdza, czy nie pojawiªy si¦ przy tym bª¦dy
Programowanie rozproszone jeszcze wi¦cej problemów
ProActive Parallel Suite przybywa z odsiecz¡!
I jeszcze trzeba to uruchomi¢!
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Programowanie wspóªbie»ne i rozproszone
Architektura
ProActive Parallel Suite
ProActive Parallel Suite to otwarty javowy middleware do oblicze«
równolegªych i rozproszonych.
Wspomaga:
programowanie i projektowanie
wrapping (C/C++, Fortran, MPI)
uruchamianie i monitorowanie
Wspiera:
gotowe modele wspóªbie»no±ci
P2P
przesyªanie plików
równowa»enie obci¡»enia
i zapewnia odporno±¢ na bª¦dy (wykonania)
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Programowanie wspóªbie»ne i rozproszone
Architektura
O projekcie
Zaanga»owani w projekt:
www.objectweb.org
INRIA www.inria.fr
CRNS www.cnrs.fr
Uniwersytet Nicejski http://portail.unice.fr
ActiveEon http://www.activeeon.com
ObjectWeb Strona domowa projektu:
proactive.inria.fr
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Programowanie wspóªbie»ne i rozproszone
Architektura
Wspierane technologie
Systemy operacyjne
Linux, Windows, Solaris, MacOS, SGI Irix
Maszyny wirtualne Javy
Sun, SGI, BEA, JRockit
Protokoªy sieciowe
ssh, rsh, sshGSI, rcp, scp, Unicore, Globus Gram
Chmury obliczeniowe
Amazon EC2
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Programowanie wspóªbie»ne i rozproszone
Architektura
Architektura ProActive Parallel Suite
ródªo: [1]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Programowanie wspóªbie»ne i rozproszone
Architektura
Architektura ProActive Parallel Suite
ródªo: [2]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Obiekty aktywne (ang.
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
active objects)
Obiekt aktywny skªada si¦ z:
dokªadnie jednego w¡tku
kolejki »¡da«
potencjalnie wielu obiektów pasywnych
po±rednika (ang.
proxy)
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Obiekty aktywne wªasno±ci
Wªasno±ci obiektów aktywnych:
brak wspóªdzielenia obiektów pasywnych gª¦bokie kopie przy
wywoªaniu metod, co mo»e prowadzi¢ do utraty spójno±ci
obiekty aktywne je»eli s¡ parametrami wywoªania s¡
przekazywane przez referencje
asynchroniczne »¡dania
tworzenie odroczonych obiektów i oczekiwanie z konieczno±ci
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Obiekty aktywne sposoby tworzenia
Utworzenie nowej instancji
1
2
A a = ( A ) ProActive .
newActive ( A . class . getName () , params , node ) ;
Klasa
1
class pA extends A implements RunActive { ... }
Uaktywnienie istniej¡cego obiektu
1 A a = new A ( obj , 7) ;
2 /* ... */
3 a = ( A ) ProActive . turnActive
G. Chimosz
(a , node ) ;
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Oczekiwanie z konieczno±ci (ang.
wait by necessity)
Wywoªanie metody skªada si¦ z dwóch etapów:
1
»¡danie (nazwa, argumenty)
powoduje utworzenie odroczonego obiektu (ang. future object)
po obliczeniu wywoªywany obiekt ode±le wynik
2
odpowied¹ (wynik wywoªanej metody)
wywoªuj¡cy mo»e kontynuowa¢ swoj¡ prac¦, nawet je»eli wynik
nie jest dost¦pny asynchroniczno±¢
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Oczekiwanie z konieczno±ci (ang.
wait by necessity)
Wywoªanie metody skªada si¦ z dwóch etapów:
1
»¡danie (nazwa, argumenty)
powoduje utworzenie odroczonego obiektu (ang. future object)
po obliczeniu wywoªywany obiekt ode±le wynik
2
odpowied¹ (wynik wywoªanej metody)
wywoªuj¡cy mo»e kontynuowa¢ swoj¡ prac¦, nawet je»eli wynik
nie jest dost¦pny asynchroniczno±¢
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Aktywne obiekty w praktyce
Przykªad
1
A ag = newActive ( A . class . getName () , [...] ,
VirtualNode ) ;
V v1 = ag . foo ( param ) ;
V v2 = ag . bar ( param ) ;
2
3
4 /* ... */
5 v1 . bar () ; / / W a i t - By - N e c e s s i t y
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Przezroczysto±¢ mechanizmu wykonania
Polimorzm
obiektów aktywnych i zwykªych u»ywa si¦ dokªadnie tak samo
polimorczne s¡ te» obiekty odroczone
Oczekiwanie z konieczno±ci
zapewnia zupeªnie przezroczyst¡ synchronizacj¦
obiekty odroczone s¡ zupeªnie przezroczyste
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Gotowe schematy przetwarzania
Kolejkuj¡ce dane
seq
Rozpraszaj¡ce zadania
farm
pipe
if
while
for
Rozpraszaj¡ce dane
divide and conquer
map
fork
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Schemat
farm
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Ró»ne dane s¡ przetwarzane równolegle
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Schemat
pipe
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Reprezentuje obliczenia podzielone na etapy
Etapy s¡ obliczane równolegle
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Schemat
map
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
Dzieli dane na mniejsze cz¦±ci, do ka»dej przykªada funkcj¦ i
scala wynik
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Schemat
divide and conquer
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
U»ycie schematu na przykªadzie
BLAST
ródªo: [3]
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
U»ycie schematu na przykªadzie
BLAST
Schemat dla BLAST
1
2
3
4
5
6
7
Pipe blastPipe = new Pipe (
new Fork (
new Seq ( new ExecuteFormatDB () ) ,
new Seq ( new ExecuteFormatQ () ) ) ,
new Pipe (
new Seq ( new ExecuteBlast () ) ,
new Seq ( new CleanBlast () )) ) ) ;
Schemat
1
2
3
dziel i zwyci¦»aj dla BLAST
Skeleton root = new DaC (
new DivideDB () , new DivideCondition () ,
blastPipe , new ConquerResults () ) ;
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
U»ycie schematu na przykªadzie
BLAST
Dziel
1
2
3
4
5
6
public class DivideCondition implements Condition {
public boolean evalCondition ( Blast param ) {
File file = param . getDatabaseFile () ;
return file . length () > param . getMaxDBSize () ;
}
}
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
U»ycie schematu na przykªadzie
BLAST
I zwyci¦»aj
1
2
3
4
5
6
7
8
9
10
11
12
public class DivideDB implements Divide {
public Vector divide ( Blast param ) {
Vector < BlastParameters > children = new Vector <
BlastParameters >() ;
Vector < File > files = divideDBFile ( param ) ;
for ( File newDBFile : files ) {
Blast newParam = new Blast ( param );
param . setDBName ( newDBFile ) ;
children . add ( newParam ) ;
}
return children ;
}
}
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
U»ycie schematu na przykªadzie
BLAST
Przygotowanie do oblicze«
1
2
3
4
5
Skeleton root = / * . . . * / ;
ResourceManager manager =
new ProActiveManager (" descriptor . xml " , "vn name ") ;
Calcium calcium = new Calcium ( manager ) ;
Stream stream = calcium . getStream ( root ) ;
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Poj¦cia
Mechanizm wykonania
Gotowe schematy przetwarzania
U»ycie schematu na przykªadzie
BLAST
Zaªadowanie danych
1
2
3
stream . input ( new Blast ("db - file " ," query - file1 ") ) ;
stream . input ( new Blast ("db - file " ," query - file2 ") ) ;
stream . input ( new Blast ("db - file " ," query - file3 ") ) ;
Odczytanie wyniku
1
2
3
Blast res1 = stream . getResult () ;
Blast res2 = stream . getResult () ;
Blast res3 = stream . getResult () ;
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Przykªad
Bibliograa
Przykªad
ProActive w dziaªaniu.
G. Chimosz
ProActive
Wprowadzenie
Podstawowe poj¦cia i pomysªy
Przykªad i podsumowanie
Przykªad
Bibliograa
Bibliograa
ProActive in 5 minutes.
http://proactive.inria.fr/index.php?page=
proactive_in_five_min], 2008.
[online:
ProActive features.
http://proactive.inria.fr/userfiles/image/
ProActive_Features_Full.png], 2008.
[online:
Denis Caromel.
ProActive Tutorial.
http:
//proactive.inria.fr/userfiles/file/presentation/
Tutorial-ProActive450slides-December-21-2007.pdf],
[online:
2007.
G. Chimosz
ProActive