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