Obliczenia równoległe i rozproszone w środowisku MATLAB

Transkrypt

Obliczenia równoległe i rozproszone w środowisku MATLAB
®
Obliczenia równoległe i rozproszone w
środowisku MATLAB
Miłosz Augustyński
ONT Kraków
®
®
®
Agenda
Wprowadzenie – potrzeba obliczeń rozproszonych
Jak tworzyć „szybki” kod w MATLAB?
Przyspieszanie obliczeń z wykorzystaniem Parallel
Computing Toolbox – przykłady
Skalowanie problemu – uruchamianie obliczeń na klastrze
(MATLAB Distributed Computing Server)
Obliczenia z wykorzystaniem GPU
MATLAB Coder – konwersja m-kodu do C
2
®
®
Potrzeba obliczeń rozproszonych
Problem
Wiele problemów obliczeniowych
charakteryzuje się bardzo dużą
złożonością oraz/lub wymaga pracy
nad dużymi zestawami danych
długi czas obliczeń
niewystarczające zasoby sprzętowe
(pamięć)
np. symulacja MonteCarlo,
optymalizacja portfolio,
sekwencjonowanie DNA
3
®
®
Potrzeba obliczeń rozproszonych cd.
Problem
Długi czas
wykonywania
obliczeń
Duże zbiory
danych
=>
oczekiwanie
Redukcja
Rozwiązanie
Uruchomienie
podobnych zadań
(tasks) na
niezależnych
procesorach
równolegle
Rozdzielenie
danych na osobne
komputery
(procesory), które
pracują
równolegle
4
®
®
Processes
Zadania równoległe
Time
Time
5
®
®
Rozproszone dane
11 26 41
11 26 41
12 27 42
12 27 42
13 28 43
13 28 43
14 29 44
14 29 44
15 30 45
15 30 45
16 31 46
16 31 46
17 32 47
17 32 47
17 33 48
17 33 48
19 34 49
19 34 49
20 35 50
20 35 50
21 36 51
21 36 51
22 37 52
22 37 52
6
®
®
Tworzenie szybkiego kodu
Alokacja Pamięci
Ograniczenie stosowania pętli na rzecz operacji
macierzowych
Analiza kodu w MATAB profiler
7
®
®
Sposoby wykorzystania MATLABa do
realizacji obliczeń równoległych
Worker
Worker
Worker
TOOLBOXES
Worker
Worker
Worker
BLOCKSETS
Worker
Worker
8
®
®
Sposoby wykorzystania MATLABa do
realizacji obliczeń równoległych
Możliwość kontroli
Stopień trudności
Minimalna
żaden
Średnia
umiarkowany
Zaawansowana
wysoki
9
®
®
Wbudowane w moduły wsparcie dla
obliczeń równoległych i rozproszonych
Worker
Worker
Worker
TOOLBOXES
Worker
Worker
BLOCKSETS
Worker
Worker
10
®
®
Wbudowane w moduły wsparcie dla
obliczeń równoległych i rozproszonych
Optimization Toolbox 5.0
Solve standard and large-scale optimization problems
Constrained nonlinear solvers: fmincon, fgoalattain, fminimax
Global Optimization Toolbox 3.0
Solve multiple maxima, multiple minima, and nonsmooth optimization problems
Genetic Algorithm, Pattern Search, MultiStart
Simulink Design Optimization 1.1
Estimate and optimize Simulink model parameters
Automates running Simulink optimization problems in parallel environment
Model-Based Calibration Toolbox 4.0
Calibrate complex powertrain systems
Speed up model calibration and table optimization
Others
11
®
®
Programming Parallel Applications
Stopień
trudności
żaden
Moduły posiadające wbudowane wsparcie do
obliczeń równoległych
▪ Optimization Toolbox
▪ Global Optimization
Toolbox
▪ SystemTest
▪ Statistics Toolbox
▪ Simulink Design Optimization
…
umiarkowany
wysoki
12
®
®
Platforma sprzętowa wykorzystana
podczas prezentacji
Procesor 4-rdzeniowy AMD Phenom II X4 840
GPU NVIDIA GeForce GTX 560 Ti
Pamięć operacyjna 4GB
13
®
®
Przykład 1
Minimalizacja czasochłonnej optymalizacji FMINCON
demoParallelOptim1.m
Serial FMINCON optimization takes 27.2204 seconds.
Parallel FMINCON optimization takes 17.0095
seconds.
14
®
®
Przykład 2: Optymalizacja ustawienia wież
Ustalenie optymalnego rozstawu
nadajników
Maksymalne pokrycie
Minimalny nakładanie
15
®
®
Podsumowanie
Wykorzystanie wbudowanego w
Parallel Computing Toolbox
wsparcia dla
Optimization Toolbox
Skorzystanie z określonego zbioru
workerów
Optymalizacja z użyciem fmincon
16
®
®
Zestawienie wyników
PhoneTowerScript.m
Serial time 25.006119 seconds
Parallel time 11.298466 seconds
17
®
®
Programowanie równoległe
Stopień
trudności
żaden
umiarkowany
Moduły posiadające wbudowane wsparcie do
obliczeń równoległych
Proste funkcje do wykorzystania w skryptach
MATLABa:
parfor, batch
wysoki
18
®
®
Task Parallel Applications
Worker
TOOLBOXES
Worker
BLOCKSETS
Worker
Worker
Task 1
Task 2
Task 3
Time
Task 4
Time
19
®
®
Przykład 3
Rozwiązanie równania
różniczkowego 2-go
stopnia, dla różnych
parametrów
}5
m &x& + b{ x& + k{ x = 0
1, 2 ,...
1, 2 ,...
ONTparamSweep.m
normal
Elapsed time is
20.470524 seconds.
parallel
Elapsed time is
11.325069 seconds.
20
®
®
Zestawienie wyników
ONTparamSweep.m
Serial time 18.240401 seconds
Parallel time 4.691656 seconds
21
®
®
Mechanizm pętli parfor
1 2
1 23 34 4 55 66 7 88 9 910 10
Worker
a(i) = i;
a = zeros(10, 1)
parfor i = 1:10
a(i) = i;
end
a
Worker
a(i) = i;
Worker
a(i) = i;
Worker
a(i) = i;
22
®
®
Sposoby pracy z Parallel Computing
Toolbox
Interaktywna praca
Idealne do prototypowania
Uruchamianie obliczeń w tle (Scheduling)
Umożliwia wykonanie pracy lokalnie lub na kastrze obliczeniowym
Umożliwia dostęp do większych zasobów
Nie „zamraża” Matlaba
23
®
®
Scheduling Work
Work
TOOLBOXES
Result
BLOCKSETS
Worker
Scheduler
Worker
Worker
Worker
24
®
®
Przykład 4: Schedule Processing
1.2
1
lokalnych workerów
0.8
Displacement (x)
Przekazanie pracy do grupy
0.6
0.4
m = 5, b = 2, k = 2
0.2
0
„Odebranie” wyników po
-0.4
zakończeniu analizy
0
5
10
15
20
2.5
2
1.5
1
0.5
0
5
2
Damping (b)
batchODE.m
25
Time (s)
Peak Displacement (x)
Wyświetlenie wyników w MATLAB
m = 5, b = 5, k = 5
-0.2
4
3
4
2
6
1
Stiffness (k)
25
®
®
Task-Parallel Workflows
parfor
Wiele niezależnych interacji
Łatwość mieszania „zwykłego” i „równoległego” kodu
Praca
Interaktywna - matlabpool
„W tle” - batch
jobs/tasks
Niezależne zadania (niekoniecznie iteracje) dla każdego workera.
Dostosowywanie sposobu współpracy workerów.
Workflow Always scheduled
26
®
®
Programowanie równoległe
Stopień
trudności
żaden
umiarkowany
Moduły posiadające wbudowane wsparcie do
obliczeń równoległych
Proste funkcje do wykorzystania w skryptach
MATLABa:
parfor, batch
Zaawansowana konfiguracja:
wysoki
job/tasks
27
®
®
Przykład 5
• Rozwiązanie równania różniczkowego 2-go stopnia z
wykorzystaniem różnych solverów
m&x& + bx& + kx = 0
ode45, ode23 …
28
®
®
MATLAB wspiera obliczenia równoległe i
rozproszone dla sytuacji…
Task-Parallel
Długotrwałe obliczenia
Data-Parallel
Duże zbiory danych
Wiele niezależnych interacji
11 26 41
12 27 42
13 28 43
parfor i = 1 : n
14 29 44
% do something with i
15 30 45
16 31 46
end
17 32 47
17 33 48
19 34 49
Zadania do realizacji
20 35 50
21 36 51
Task 1
Task 2
Task 3
Task 4
22 37 52
29
®
®
Duże zbiory danych – rozdzielenie danych
pomiędzy poszczególnych workerów
11 26 41
12 27 42
13 28 43
14 29 44
15 30 45
16 31 46
TOOLBOXES
17 32 47
17 33 48
BLOCKSETS
19 34 49
20 35 50
21 36 51
22 37 52
Remotely Manipulate Array
from Desktop
Distributed Array
Lives on the Cluster
30
®
®
Enhanced MATLAB Math Functions That
Operate on Distributed Arrays
31
®
®
Skalowanie problemu do klastra
obliczeniowego
Worker
Worker
Worker
TOOLBOXES
Worker
Worker
BLOCKSETS
Worker
Scheduler
Worker
32
®
®
Parallel Computing with MATLAB
Parallel Computing
Toolbox
MATLAB Distributed
Computing Server
MATLAB Workers
User’s Desktop
Compute Cluster
33
®
®
Support for Schedulers
Wsparcie bezpośrednie
TORQUE
Otwarte API dla pozostałych
34
®
®
Obsługa GPU
Worker
Worker
Worker
TOOLBOXES
Worker
Worker
BLOCKSETS
Worker
Worker
35
®
®
Nowe możliwości zwiększenia wydajności
obliczeń
Wykorzystanie wielu rdzeni (CPUs)
Core 1
Core 2
Core 3
Core 4
Wykorzystanie GPUs
Device Memory
Cache
36
®
®
Możliwości pracy z GPUs
Łatwość użycia
2) Wywoływanie własnych m-funkcji
uruchamianych na GPU
Stopień kontroli
1) Wykorzystanie wbudowanych funkcji
MATLABA
3) Uruchamianie w MATLAB
niskopoziomowych funkcji CUDA
37
®
®
Zestawienie wyników
GPUfft.m
CPU time 2.1965 seconds
GPU time 0.4630 seconds
38
®
®
Zwiększenie wydajności obliczeniowej
dzięki Parallel Computing Toolbox
Metoda
Przykład
MATLAB
Workers
Execution Target
matlabpool
Parfor
Wymagane
CPU
tasks
createTask
Wymaganie
CPU
-
NVIDIA GPU
(Compute Capability
1.3)
Obliczenia GPU
GPUArray
39
®
®
Licencjonowanie
Worker
Worker
Worker
TOOLBOXES
Worker
Worker
BLOCKSETS
Worker
Worker
40
®
®
Parallel Computing Toolbox
Licencjonowanie - jak w przypadku innych modułów MATLABa
Licencje: indywidualne, sieciowe
Wymagany MATLAB
Do 8 workerów bez MDCS (wieloprocesorowe komputery)
MATLAB Distributed
Computing Server
Worker
MATLAB
Simulink
Toolboxes
Task
Job
Parallel
Computing
Toolbox
Worker
Scheduler
Result
Result
Worker
Blocksets
41
®
®
Parallel Computing Toolbox
Podsumowanie
Trzy funkcje
Obliczenia równoległe na maszynie lokalnej (do 8 procesorów)
Obliczenia z wykorzystaniem karty grafiki (NVIDIA CUDA)
Połączenie z klastrem obliczeniowym
Możliwość pobrania wersji trial oprogramowania
Użytkownicy – za pośrednictwem strony www.mathworks.com
Za pośrednictwem firmy ONT (www.ont.com.pl)
42
®
®
MATLAB Distributed Computing Server
Osobna licencja na workery
Wymagany jeden worker dla każdej maszyny w klastrze
sprzedawane w pakietach po 8, 16, 32, 64, 96, 128, itp.
scheduler nie jest objęty managerem licencji
Zezwala na instalację wszystkich modułów
Licencjonowanie dynamiczne
MDCS pozwala na dostęp do modułów
z licencji użytkownika (maszyna klienta)
MDCS nie pobiera klucza z licencji
użytkownika
MATLAB
Simulink
Toolboxes
Parallel
Computing
Toolbox
Blocksets
43
®
®
MATLAB Coder v2.0
Nowy produkt, Sprawdzona technologia
• Embedded MATLAB Block w
2004 Simulink
• polecenie emlc w RTW
2007 • Generacja kodu C z MATLAB
2011
• MATLAB Coder
44
®
®
Do czego można wykorzystać Matlab
Coder?
Przyspieszenie kodu MATLABa
Integracja kodu C z innym oprogramowaniem
Prototypowanie aplikacji niezależnych
45
®
®
Zestawienie wyników
test_coder.m
Czas wykonywania test1.m: 4.3393
Czas wykonywania test1_mex.mexw64: 0.7442
Uwaga, pliki .mexw64 zostały wygenerowane na
platformie 64 bit
46
®
®
Szkolenia
MLBE – Wprowadzenie do programu MATLAB (2 dni)
MLPC – Obliczenia równoległe i rozproszone w
MATLABie (2 dni)
Table of Contents
TOC - 1
Table of Contents
Parallel Computing with MATLAB®
© 2010 MathWorks, Inc.
47
®
®
www.ont.com.pl
48

Podobne dokumenty