Professional Documents
Culture Documents
Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
OBLICZENIA RÓWNOLEGŁE
Temat 6:
Narzędzia i środowiska
programowania równoległego
Prowadzący: dr inż. Zbigniew TARAPATA
pok.225, tel.: 83-73-38
e-mail: Zbigniew.Tarapata@wat.edu.pl
http:// tarapata.strefa
tarapata.strefa.pl
.pl//p_obliczenia_rownolegle/
p_obliczenia_rownolegle/
3
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
4
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Unified Parallel C.
5
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
#include <upc_relaxed.h>
#include <stdio.h>
void main(){
printf("Hello World from THREAD %d (of %d
THREADS)\n",MYTHREAD,THREADS);
}
6
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
#include <upc_relaxed.h>
#include <stdio.h>
void main(){
if(MYTHREAD==0){
printf("Starting execution at THREAD %d\n",MYTHREAD);
}
printf("Hello World from THREAD %d (of %d
THREADS)\n",MYTHREAD,THREADS);
}
7
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
upc_forall(i=0;i<N;i++;i) {
printf("THREAD %d (of %d THREADS) performing iteration
%d\n",MYTHREAD,THREADS,i);
}
8
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
1: #include <upc_relaxed.h>
2: #include <stdio.h>
3: #define N 10
4: shared [2] int arr[10];
5:
6: int main() {
7: int i=0;
8: upc_forall(i=0;i<N;i++;&arr[i]) {
9: printf("THREAD %d (of %d THREADS) performing
iteration %d\n",MYTHREAD,THREADS,i);
10: }
11: return 0;
12: }
Linijka:
4: shared [2] int arr[10];
9
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
10
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
11
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
12
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Bariery upc_barrier.
1: #include <upc_relaxed.h>
2: #include <stdio.h>
3:
4: shared int a=0;
5: int b;
6:
7: int computation(int temp) {
8: return temp+5;
9: }
10:
11: int main(){
12: int result=0, i=0;
13: do {
14: if(MYTHREAD==0) {
15: result=computation(a);
16: a=result*THREADS;
17: }
18: upc_barrier;
19: b=a;
20: printf("THREAD %d: b=%d\n",MYTHREAD,b);
21: i++;
22: } while(i<4);
23: return 0;
24: }
13
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Przykład:
prostokątów.
14
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
for(i=0;i<N;i++)
pi+=(float) f( (0.5+i)/(N) );
pi*=(float)(4.0/N);
printf("PI=%f\n",pi);
}
15
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
upc_lock_t *l;
shared float pi=0.0;
void main(void)
{
float local_pi=0.0;
int i;
l=upc_all_lock_alloc();
upc_forall(i=0;i<N;i++;i)
local_pi+=(float) f( (0.5+i)/(N) );
local_pi*=(float)(4.0/N);
upc_lock(l);
pi+=local_pi;
upc_unlock(l);
upc_barrier;
if(MYTHREAD==0) printf("PI=%f\n",pi);
if(MYTHREAD==0) upc_lock_free(l);
}
Przykład ten jest bardzo fajny, gdyż widać tutaj zarówno użycie
bariery upc_barrier jak i zabezpieczenia upc_lock . Przed
równoczesnym dostępem z więcej niż jednego procesora
zabezpieczona jest współdzielona zmienna pi.
16
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
OpenMP.
OpenMP jest to API pozwalające tworzyć kod wykonywany
równolegle w maszynach z pamięcią współdzieloną. Jest to zbiór
rozszerzeń do języków C, C++ i FORTRAN. Składa się ono z trzech
elementów:
• Dyrektyw preprocesora
• Funkcji bibliotecznych
• Zmiennych środowiskowych
Dzięki temu API programiści są w stanie tworzyć aplikacje,
których kod może być wykonywany przez wiele wątków równolegle.
Jak zobaczymy dalej, nie jest konieczna bezpośrednia obsługa wątków
a OpenMP jest niezależne od systemu, na którym kompilujemy kod.
OpenMP jest powszechnie przyjętym standardem i wynikiem wielu
lat badań nad tworzeniem programów wykonywanych równolegle.
Wersja standardu 1.0 ukazała się dla języka FORTRAN w 1997 roku,
a już w 1998 dostępna była dla C/C++. W Visual C++ 2005 do
czynienia mamy z wersją OpenMP 2.0, która ukazała się w 2002 roku.
17
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
18
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
void main()
{
double Table[1000];
for(int i=0;i<1000;i++)
DoSomething(Table[i]);
}
może zostać zrównoleglona w następujący sposób:
void main()
{
double Table[1000];
Wątki a OpenMP
Równoległość wykonywania kodu z wykorzystaniem opisywanego
standardu polega na wykorzystaniu wątków. OpenMP to standard,
który ma być niezależny od platformy, został on zatem
zaprojektowany tak, iż programista nie ma bezpośrednio do czynienia
z tworzeniem, synchronizacją i niszczeniem wątków
charakterystycznych dla danej platformy. Za pomocą pragm OpenMP
19
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
20
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
21
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Dzisiaj PVM nie jest już aktywnym projektem, ale nadal stosuje się
go w programowaniu równoległym.
Opis działania PVM
22
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
23
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
- zarządzanie zasobami,
- możliwość dodania/usunięcia węzła z komputera wirtualnego,
- zarządzanie procesami,
- dynamiczne uruchamianie/usuwanie procesów,
- komunikacja między procesami na zasadzie wymiany komunikatów
(ang. message passing),
- niezawieszające wysłanie informacji, zawieszające i niezawieszające
odebranie informacji, grupowe operacje komunikacyjne,
- możliwość dynamicznego tworzenia grup procesów (zadań) -
dowolne zadanie może przyłączyć się do grupy lub porzucić ją w
24
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
25
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
26
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Komunikacja punkt-punkt.
pvm_send
int retval = pvm_send(int tid ,int msgtag);
Parametry
pvm_recv
int retval = pvm_recv(int tid ,int msgtag);
Parametry
27
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Komunikacja grupowa
pvm_mcast
int retval = pvm_mcast( int *tids, int ntask, int msgtag );
Parametry
28
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Opis
29
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
30
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Zalety MPI
Wady MPI
31
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Przenośność a interoperacyjność.
32
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
33
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Uruchomienie.
34
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Obsługa.
35
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
36
Obliczenia równoległe dr inż. Zbigniew Tarapata
Temat nr 6: Narzędzia i środowiska programowania równoległego
Możliwości.
37