Využití paralelních výpočtů ve stavební mechanice Motivace Paralelní počítače Software Možnosti využití ve stavební mechanice Příklady Literatura a odkazy 1
Motivace Časová náročnost výpočtů Rozsáhlé úlohy metoda konečných prvků modely s velkým počtem stupňů volnosti nelineární, kontaktní úlohy metoda hraničních prvků metoda sítí Simulační metody posudku spolehlivosti velké počty opakovaných výpočtů v metodách především typu Monte Carlo 2
Paralelní počítače (1) Víceprocesorové/vícejádrové stolní počítače Běžně dostupné Lze využít i k vytvoření paralelního počítače s distribuovanou pamětí Paralelní superpočítače Sdílená operační pamět Distribuovaná operační pamět Kombinované 3
Paralelní počítače (2) Víceprocesorové a vícejádrové stolní počítače Pracovní stanice (UNIX, Window NT,...) Zejména v minulosti: IBM, HP, Sun Microsystems, SGI Dnes obvykle PC s 8-32 vícejádrovými procesory Osobní počítače Dnes 2-16 jádrové procesory Programování: Stejné postupy jako velké paralení počítače (MPI, OpenMP,...) Postupy vyžadující sdílenou pamět : vlákna, procesy 4
Paralelní počítače (3) Superpočítače: Cluster Propojení více počítačů uzlů (např. jednojádrových nebo vícejádrových PC) Uzly umístěny na jednom místě a vzájemně propojeny relativně rychlou sítí Superpočítače: Grid Jednotlivé počítače umístěny na různých místech (města, státy, kontinenty) Omezené možnosti komunikace vhodné jen pro specifické úlohy 5
Software (1) Počítače se sdílenou pamětí Vlákna odlišné v jednotlivých operačních systémech (POSIX standard UNIX, Linux, Mac OS X; vlákna v OS Windows,...) poměrně jednoduché programování, možnost přístupu ke sdílené paměti, nutno ošetřit kolize nad daty (semafory, zámky) OpenMP standard pro programování na počítačích se sdílenou pamětí pro C/C++, FORTRAN: http://openmp.org využívá přidaných deklarací v programu: vhodné pro úpravy existujících neparalelních programů 6
Software (2) Počítače s distribuovanou pamětí (clustery) MPI Message Passing Interface standard pro programování počítačů s distribuovanou pamětí http://www.mpi-forum.org je možné použít i na počítačích se sdílenou pamětí PVM Parallel Virtual Machines podobné MPI (jiné nástroje a programátorské rozhraní) dnes méně používané 7
Software (3) Grid nelze použít výše uvedených postupů (velice omezené možnosti komunikace mezi výpočetními uzly) vhodné pro specifické úlohy provádění diskrétních simulací Monte Carlo zpracovávání vzájemně nezávislých dat (např. záznamy date ze zemětřesení) neexistuje standardizované řešení, různé možnosti Condor: http://www.cs.wisc.edu/condor/ Sun/Oracle Grid Engine: http://gridengine.sunsource.net/ 8
Ukázka: Vlákna v UNIXu Ukázka programu v jazyce C: #include <pthreads.h> #include <stdio.h> void myfunction { printf( Vypis z vlakna\n ); } int main(int argc, char *argv[]) { int i ; int Thread_ID[10]; } for (i=0; i<10; i++) pthread_create(&thread_id[i],null,myfunction,null); for (i=0; i<10; i++) pthread_join(thread_id[i], NULL) ; return(0); 9
Ukázka: OpenMP Ukázka programu v jazyce C: #include <omp.h> #include <stdio.h> int main(int argc, char *argv[]) { #pragma omp parallel printf( Proces cislo %d, z %d\n, omp_get_thread_num(), omp_get_num_threads() ); return(0); } Poznámka: Ve skutečnosti překladač upraví uvedený program tak, aby používal vlákna (výsledek bude podobný předchozí ukázce). Jak vlákna, tak OpenMP lze použít jen na počítačich se sdílenou pamětí. 10
Ukázka: MPI Ukázka programu v jazyce C: #include <mpi.h> #include <stdio.h> int main(int argc, char *argv[]) { int nid, noprocs, i ; } MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &noprocs); MPI_Comm_rank(MPI_COMM_WORLD, &nid); for (i=0; i<noprocs; i++) printf( Proces cislo %d,nid); MPI_Finalize(); return(0); 11
Paralelní výpočty v mechanice Proč paralelizovat Viz Motivace (rozsáhlé a/nebo časově náročné úlohy) Jak paralelizovat 1. Rozdělení náročných částí stávajících algoritmů na více souběžně prováděných částí 2. Odlišné (účinnější) algoritmy Metody dekompozice domén Metoda subkonstrukcí (Schur complement method) Metody typu FETI 12
Paralelizace stávajících algoritmů Časově náročné části výpočtu MKP tvorba matic tuhostí a zatěžovacích vektorů konečných prvků aplikace konstitutivních vztahů výpočet výsledků na konečných prvcích řešení soustav lineárních rovnic Časově náročné části řešení soustav rovnic (iterační metody) násobení vektorů a matic 13
Paralelizace tvorby matic tuhosti v MKP Jednotlivé matice tuhosti jsou vzájemně nezávislé (nemusí platit pro fyzikálně nelineární a kontaktní úlohy) Je třeba ošetřit ukládání členů vypočtených matic do matice tuhosti konstrukce Proces 0 K matice Proces 1 Proces 2 Proces 3 Proces 4 14
Paralelizace výpočtů výsledků na konečných prvcích Jednotlivé vektory uzlových sil, napětí a deformací na prvcích atd. jsou vzájemně nezávislé Každý proces může nezávisle zpracovat část výsledků U struct U elem K elem U elem F elem 15
Paralelizace násobení matice a vektoru Nejčastější a nejnáročnější operace při použití iteračních metod (Metoda sdružených gradientů apod.) Matici je možné rozdělit na části (např. po řádcích): každý proces násobí jen M příslušných řádků a vytvoří M členů výsledného vektoru 16
Pokročilejší postupy Metody dekompozice domén rozdělení řešené oblasti (například stavební konstrukce) na více podoblastí (subdomén), které je možné řešit samostatně integrita výpočetního modelu se zajišt uje řešením vhodně formulovaného problému pro rozhraní oblastí Nejobvyklejší metody Metoda subkonstrukcí (Schur Complement Method) - viz dále Metoda FETI (Finite Element Tearing and Interconnecting) 17
Metoda subkonstrukcí (1) použití v MKP, metodě sítí, zpravidla: K u = F K... matice tuhosti u... vektor neznámých posunutí a pootočení K... vektor zatížení rozdělení konstrukce na samostatně (paralelně) řešitelné části řešení relativně malého problému na spojení jednotlivých částí vyžaduje vhodné číslování neznámých 18
Metoda subkonstrukcí (2) Základní myšlenka Rovnici upravíme na tvar: kde [ K1,1 K 1,2 K 2,1 K 2,2 K u = F ] ( u1 u 2 ) = ( F1 F 2 ), K 1,1, u 1, F 1 obsahuje části rovnic nezávislých subkonstrukcí K 2,2, u 2, F 2 obsahuje samostatně řešitelný problém rozhraní subkonstrukcí K 1,2, K 1,2 obsahují prvky matic tuhosti příslušné rozhraním oblastí 19
Metoda subkonstrukcí (3) Předchozí soustavu lze přepsat: u 1 = K 1 1,1, (F 1 K 1,2 u 2 ), odkud lze určit neznámé u 1 (pokud již známe u 2 ) a dále: (K 2,2 K 2,1 K 1 1,1 K 1,2) u 2 = F 2 K 2,1 K 1 1,1 F 1, což je problém na rozhraní oblastí, ze kterého lze vypočítat neznámé u 2 Matice (K 2,2 K 2,1 K 1 1,1 K 1,2) se označuje jako Schurův doplněk matice K 1,1 v matici K (používá se i název Metoda Schurova doplňku ). 20
Metoda subkonstrukcí (4) Aby bylo možné použít předcházející vztahy, je nutné, aby proměnné na rozhraní podoblastí byly číslovány až jako poslední: 2 6 8 4 2 6 6 8 8 4 1 5 7 3 1 5 5 7 7 3 Další detaily: J. Kruis, Domain Decomposition Methods for Distributed Computing, Saxe-Coburg Publications, Stirlingshire, UK, 2006. 21
Paralelizace Monte Carlo (1) Vstupní data mají náhodný charakter Sleduje se pravděpodobnost (počet výskytů v celkovém počtu výpočtů) s jakou dojde k překročením zadané podmínky porušení, např.: překročení stanoveného mezního napětí nebo jiné silové (případně deformační) veličiny dosažení podmínky pro vznik trhlin Opakovaně se generují realizace náhodných vstupních veličin a provádí se výpočet (simulační krok) a kontrola podmínky porušení Pro běžně požadovanou řešení (ve stavební praxi) je třeba provést kolem 1000000 výpočtů 22
Paralelizace Monte Carlo (2) Výhody metody Monte Carlo jednotlivé simulace na sobě vzájemně nezávisí statistické korelace mezi veličinami (jsou-li v metodě použity) je možné zpracovat předem Problémy a nevýhody je třeba paralelní generátor náhodných čísel, např. SPRNG: http://sprng.cs.fsu.edu/ může být nutné průběžné vyhodnocování výsledků (pro vyhodnocování statistických veličin) 23
Paralelizace Monte Carlo (3) rozdělení počtu prováděných výpočtů na části (každý z M procesů bude provádět N/M z celkového počtu N výpočtů) možno použít jak na počítači se sdílenou pamětí, tak na počítači s distribuovanou pamětí (jednotlivé procesy spolu téměř nemusí komunikovat) nutnost komunikace pouze: počáteční zaslání dat a rozdělení úlohy předávání vygenerovaných náhodných veličin (často lze připravit předem) shomažd ování výsledků výpočtů (sečtení počtu vypočítaných překročení podmínky porušení v jednotlivých procesech) 24
Paralelizace Monte Carlo (4) Příklad implementace: program Monte pro paralelní provádění využívá MPI pro výpočty volá MKP program ufem nebo jiný kompatibilní program ve formě dynamické knihovny http://fast10.vsb.cz/brozovsky/articles/utils/ 25
Software pro paralelní výpočty v mechanice Komerční ANSYS: http://www.ansys.com standardně využívá 2 procesory, pro pokročilejší možnosti nutná doplňková licence Volně dostupné ufem: http://fast10.vsb.cz/brozovsky/ufem.html (omezené možnosti paralelního provádění) OOFEM: http://www.oofem.org (velmi pokročilé možnosti: metoda FETI apod.) 26
Příklad 1: Spolehlivostní analýza stavební konstrukce (1) Válcová skořepina zatížená vodním tlakem Použita simulační metoda Monte Carlo: 1000000 simulací r = 10 m p 27
Příklad 1: Spolehlivostní analýza stavební konstrukce (2) Závislost trvání výpočtu na počtu procesorů (Monte/MPI) 16 1 000 000 simulations 14 12 Time [s] 10 8 6 4 0 1 2 3 4 5 Processes [-] 28
Příklad 2: Výpočet MKP (1) Software ufem Lineární statika ve 3D, 35937 neznámých 29
Příklad 2: Výpočet MKP (2) Závislost trvání výpočtu na počtu procesorů (ufem/vlákna) 46 Arc 3D 44 42 40 38 Time [s] 36 34 32 30 28 26 24 0 1 2 3 4 5 Processes [-] 30
Příklad 3: Výpočet MKP (1) Software ufem Lineární statika ve 2D, 121200 neznámých 31
Příklad 3: Výpočet MKP (2) Závislost trvání výpočtu na počtu procesorů (ufem/vlákna) 32
Materiály pro další studium http://www.fast.vsb.cz/brozovsky http://www.oofem.org/en/documentation/manual.html http://www.ddm.org/ http://en.wikipedia.org/wiki/domain decomposition methods http://www.cs.rutgers.edu/ venugopa/parallel summer2012/ge.html 33
Literatura Okrouhlík et al, Numerical methods in computational mechanics, http://www.it.cas.cz/files/u1784/num methods in CM cor 2012 01 23.pdf B.H.V Topping, A.I. Khan, Parallel Finite Element Computations, Saxe- Coburg Publications, Edinburgh, UK, 1996. J. Kruis, Domain Decomposition Methods for Distributed Computing, Saxe-Coburg Publications, Stirlingshire, UK, 2006. M.J. Quinn, Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003. http://www.comp.leeds.ac.uk/pkj http://sprng.cs.fsu.edu/ 34