Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

Podobné dokumenty
1 Rozdělení paralelních úloh z hlediska jejich

Programování založené na posílání zpráv

Úvod do OpenMP. Jiří Fürst

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Úvod do MPI. Úvod do MPI Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv

Základní komunikační operace

Martin Lísal. Úvod do MPI

Pokročilé architektury počítačů

Aplikace metody BDDC

Motivace. Software. Literatura a odkazy

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Paralelní programování

Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování

Matematika v programovacích

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

Paralelní a distribuované výpočty (B4B36PDV)

OPS Paralelní systémy, seznam pojmů, klasifikace

Identifikátor materiálu: ICT-3-14

Transformace digitalizovaného obrazu

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

8 Třídy, objekty, metody, předávání argumentů metod

Paralelní a distribuované výpočty (B4B36PDV)

IUJCE 07/08 Přednáška č. 6

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Procesy a vlákna (Processes and Threads)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Algoritmizace a programování

Implementace numerických metod v jazyce C a Python

Paralelní programování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Paralelní a distribuované výpočty (B4B36PDV)

Paralelní programování

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Paralelní programování

Paralelizace neuronových sítí Parallelization of Neural Networks

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

Programování v jazyce C a C++

1. Zpracování událostí na pozadí aplikace

Operační systémy. Cvičení 3: Programování v C pod Unixem

Představení a vývoj architektur vektorových procesorů

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Algoritmizace a programování

Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch

Model je umělý objekt, který reflektuje a reprodukuje základní vlastnosti, vztahy (strukturu) a funkce konkrétního objektu nebo

DTP Základy programování Úvod do předmětu

C2115 Praktický úvod do superpočítání

Paralelní programování

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Tvorba počítačových clusterů pomocí Linuxu. Vedoucí práce: Mgr. Jiří Pech, Ph.D. Katedra informatiky

Architektury paralelních počítačů I.

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. Jiří Barnat

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Pokročilé architektury počítačů

Programování v jazyce C a C++

Základy algoritmizace a programování

Distribuované algoritmy - přehled. Přednášky z Distribuovaných systémů Ing. Jiří Ledvina, CSc.

Úvod do programovacích jazyků (Java)

Paralelní a distribuované výpočty (B4B36PDV)

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

4. Úvod do paralelismu, metody paralelizace

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

Základy programování (IZP)

1 Nejkratší cesta grafem

Základy programování (IZP)

Úvod do GPGPU J. Sloup, I. Šimeček

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Základy programování (IZP)

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

PB161 Programování v jazyce C++ Přednáška 7

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Výuková laboratorní sestava seminář pro učitele

PB161 Programování v jazyce C++ Přednáška 7

Algoritmizace a programování

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

2 Datové typy v jazyce C

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Funkce, intuitivní chápání složitosti

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

PROTOKOL RDS. Dotaz na stav stanice " STAV CNC Informace o stavu CNC a radiové stanice FORMÁT JEDNOTLIVÝCH ZPRÁV

Pohled do nitra mikroprocesoru Josef Horálek

Vyčtení / zapsání hodnot z/do OMC8000 pomocí protokolu UDP

6. Transportní vrstva

PROGRAMOVÁNÍ V C++ CVIČENÍ

Instalace a konfigurace web serveru. WA1 Martin Klíma

Paralelní LU rozklad

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Základy programování (IZP)

Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček

Programovací jazyk Pascal

Úvod do B4B36PDV. Organizace předmětu a seznámení se s paralelizací. B4B36PDV Paralelní a distribuované výpočty

Transkript:

Úvod do paralelního programování 2 MPI Jakub Šístek Ústav technické matematiky FS 9.1.2007 ( Ústav technické matematiky FS ) 9.1.2007 1 / 35

Osnova 1 Opakování 2 Představení Message Passing Interface (MPI) 3 Náležitosti MPI programu 4 point to point komunikace 5 globální (kolektivní) komunikace ( Ústav technické matematiky FS ) 9.1.2007 2 / 35

Osnova 1 Opakování 2 Představení Message Passing Interface (MPI) 3 Náležitosti MPI programu 4 point to point komunikace 5 globální (kolektivní) komunikace ( Ústav technické matematiky FS ) 9.1.2007 3 / 35

Paralelizace Příklad - paralelizace skalárního součinu dvou vektorů rozsekání vektorů na menší kusy paralelní výpočet dílčích skalárních součinů sečtení dílčích výsledků ( Ústav technické matematiky FS ) 9.1.2007 4 / 35

Základní modely paralelního počítače sdílená pamět (shared memory) distribuovaná pamět (distributed memory) hybridní uspořádání dnes nejčastější ( Ústav technické matematiky FS ) 9.1.2007 5 / 35

Filosofie paralelizace rozvětvení výpočtu v jeho kritických bodech (násobebí matic, eliminace,... ) na více procesorů počítače se sdílenou pamětí knihovna funkcí OpenMP spuštění stejného programu na více procesorech sdílení dat zajištěno přes posílání zpráv s daty mezi procesory počítače s distribuovanou pamětí knihovna Message Passing Interface (MPI) ( Ústav technické matematiky FS ) 9.1.2007 6 / 35

paralelní knihovny OpenMP jednoduchost malé zásahy do sériového programu podmíněný překlad pro vytvoření sériové/paralelní verze vyžaduje počítač se sdílenou pamětí značné omezení MPI od počátku vývoje paralelní program náročnější na představivost univerzálnější nezávislost na architektuře ( Ústav technické matematiky FS ) 9.1.2007 7 / 35

Osnova 1 Opakování 2 Představení Message Passing Interface (MPI) 3 Náležitosti MPI programu 4 point to point komunikace 5 globální (kolektivní) komunikace ( Ústav technické matematiky FS ) 9.1.2007 8 / 35

proč se učit MPI? knihovna MPI je nejdůležitější kus programu ve světě paralelního programování všechny největší superpočítače na světě jsou programovány pomocí MPI psaní paralelních programů pomocí MPI je zábava! ( Ústav technické matematiky FS ) 9.1.2007 9 / 35

běžný sekvenční program pamet M proces procesor P ( Ústav technické matematiky FS ) 9.1.2007 10 / 35

role MPI 0 1 2 3 Message Passing Interface komunikacni sit ( Ústav technické matematiky FS ) 9.1.2007 11 / 35

charakteristiky MPI každý proces má své vlastní proměnné procesy komunikují pomocí volání speciálních připravených (standardních) funkcí MPI je první standard v komunikaci paralelních počítačů MPI se na uživatele (programátora) tváří všude stejně, ale jeho chování závisí na počítači přenositelnost & rychlost program je obvykle v běžném programovacím jazyce - C nebo Fortran na každém procesoru běží stejný program samostatně Single Program Multiple Data stejný program, různá data procesory si posílají zprávy s daty ( Ústav technické matematiky FS ) 9.1.2007 12 / 35

jak může každý dělat něco jiného? procesory jsou odlišeny pouze svým pořadovým číslem Př.: proces č.0 přičte číslo 5 do proměnné i, proces č.1 ne if (moje_cislo == 0) i = i + 5; moje cislo: 0 moje cislo: 1 i = 10 i = 10 i = i + 5 i = 15 i = 10 ( Ústav technické matematiky FS ) 9.1.2007 13 / 35

zprávy zprávy jsou balíčky (pakety) dat vyměňované mezi procesy systém pro výměnu zpráv potřebuje následující informace posílající proces(y) umístění dat v odesílajícím procesu (adresa) datový typ (integer, float, double,... ) počet prvků (1 jednoduchá proměnná, délka pole) přijímající proces(y) umístění dat v přijímajícím procesu velikost zásobníku pro příjem zpráv ( Ústav technické matematiky FS ) 9.1.2007 14 / 35

obecná pravidla MPI je jako poštovní společnost proces musí zaregistrovat zprávu do MPI poštovní schránka zpráva musí mít identifikaci kam má být doručena poštovní adresa příjemce zprávy musí být schopen zprávy přijímat poštovní schránka u domu ( Ústav technické matematiky FS ) 9.1.2007 15 / 35

dva základní typy komunikace v MPI point to point komunikace komunikace jednoho s jedním nejjednodušší forma posílání zpráv více druhů podle potřeb (odesílatel čeká/nečeká na doručení své zprávy,... ) globální (kolektivní) komunikace synchronizace procesorů komunikace všech se všemi komunikace jeden všem/všichni na jednoho více druhů podle potřeb ( Ústav technické matematiky FS ) 9.1.2007 16 / 35

Osnova 1 Opakování 2 Představení Message Passing Interface (MPI) 3 Náležitosti MPI programu 4 point to point komunikace 5 globální (kolektivní) komunikace ( Ústav technické matematiky FS ) 9.1.2007 17 / 35

náležitosti MPI programu hlavičkový soubor #include <mpi.h> volání funkcí error = MPI Xxxxxxx(parametr,...) případně MPI Xxxxxxx(parametr,...) inicializace MPI error = MPI Init(NULL,NULL) ukončení MPI poslední funkce error = MPI Finalize() ( Ústav technické matematiky FS ) 9.1.2007 18 / 35

co to je komunikátor? komunikační prostředí, které obsahuje komunikující procesory (všechny nebo část) MPI COMM WORLD základní komunikátor zaveden při inicializaci MPI obsahuje všechny procesory, na kterých je program spuštěn pro časté použití je praktické přiřadit nějaké proměnné comm = MPI COMM WORLD ( Ústav technické matematiky FS ) 9.1.2007 19 / 35

co to je komunikátor? MPI_COMM_WORLD 1 3 0 2 6 4 5 ( Ústav technické matematiky FS ) 9.1.2007 20 / 35

jak se orientovat v komunikátoru? identifikace číslo počítání procesů od 0 (0, 1,...,velikost-1) MPI Comm rank(comm, &moje cislo) počet procesů v komunikátoru velikost počítání procesů od 0 (0, 1,... ) MPI Comm size(comm, &velikost) ( Ústav technické matematiky FS ) 9.1.2007 21 / 35

Minimální program v MPI #include <stdio.h> #include "mpi.h" main() { /* komunikator, pocet procesoru a cislo procesoru */ int comm, size, rank; comm = MPI_COMM_WORLD; /* cislo pro komunikator */ MPI_Init(NULL,NULL); /* inicializace MPI */ MPI_Comm_size(comm, &size); /* pocet procesoru */ MPI_Comm_rank(comm, &rank); /* cislo procesoru */ printf("myid = %d: Hello world! \n",rank); /* tisk */ MPI_Finalize(); /* konec MPI */ } ( Ústav technické matematiky FS ) 9.1.2007 22 / 35

Osnova 1 Opakování 2 Představení Message Passing Interface (MPI) 3 Náležitosti MPI programu 4 point to point komunikace 5 globální (kolektivní) komunikace ( Ústav technické matematiky FS ) 9.1.2007 23 / 35

základní poslání zprávy error = MPI Send(x,lx,MPI DOUBLE, 0, 0, comm) kde x adresa kde začíná pole pro poslání lx počet prvků pole, které chceme poslat MPI DOUBLE typ posílané proměnné 0 proces, kterému data posíláme adresát 0 tag neboli značka další identifikace zprávy comm číslo komunikátoru ( Ústav technické matematiky FS ) 9.1.2007 24 / 35

přijetí zprávy error = MPI Recv(x,lx,MPI DOUBLE, 1, 0, comm, &status) kde x adresa kde začíná pole pro uložení lx počet prvků pole, které chceme uložit MPI DOUBLE typ přijímané proměnné 1 proces, od kterého data přijímáme odesílatel 0 tag neboli značka další identifikace zprávy comm číslo komunikátoru status pomocné proměnné ( Ústav technické matematiky FS ) 9.1.2007 25 / 35

co je třeba pro úspěch poslání zprávy odesílatel musí uvést existujícího příjemce příjemce musí specifikovat platného odesílatele předpokládaný odesílatel odesílá a předpokládaný příjemce přijímá odesílatel a příjemce musí být ve stejném komunikátoru shodují se tagy typy dat se shodují příjemce specifikoval dostatek místa pro přijetí dat ( Ústav technické matematiky FS ) 9.1.2007 26 / 35

další možnosti příjmu zprávy příjemce může uvolnit shodu odesílatel MPI ANY SOURCE libovolný odesílatel tag MPI ANY TAG libovolný tag ( Ústav technické matematiky FS ) 9.1.2007 27 / 35

měření času cas1 = MPI Wtime(). cas2 = MPI Wtime() doba = cas2 - cas1 čas je měřen v sekundách ( Ústav technické matematiky FS ) 9.1.2007 28 / 35

nestandardní situace pokud jeden proces posílá data a adresát je přijíma OK pokud jeden proces posílá data, ale adresát nic nepřijíma program končí chybou pokud jeden proces přijímá data, ale odesílatel nic neposílá program končí chybou oba posílají a nikdo nepřijímá program stojí deadlock oba přijímají a nikdo neposílá program stojí deadlock ( Ústav technické matematiky FS ) 9.1.2007 29 / 35

a na co se můžeme spolehnout? zprávy mezi dvěma procesy se nikdy nepředběhnou podmínka MPI ( Ústav technické matematiky FS ) 9.1.2007 30 / 35

Osnova 1 Opakování 2 Představení Message Passing Interface (MPI) 3 Náležitosti MPI programu 4 point to point komunikace 5 globální (kolektivní) komunikace ( Ústav technické matematiky FS ) 9.1.2007 31 / 35

úloha funkce volány všemi procesory v komunikátoru použití pro skupinu procesorů synchronizace, celková suma po paralelním výpočtu (skalární součin,... ) ( Ústav technické matematiky FS ) 9.1.2007 32 / 35

výběr funkcí synchronizace zabrzdění běhu procesů v komunikátoru tak, aby se dostaly na stejnou úroveň (měření času,... ) MPI Barrier(comm) kopie z jednoho procesu na všechny MPI Bcast(x,lx,MPI DOUBLE,0,comm) kde x adresa kde začíná pole pro poslání lx počet prvků pole, které chceme poslat MPI DOUBLE typ posílané proměnné 0 proces, ze kterého se bude kopírovat hodnota comm číslo komunikátoru ( Ústav technické matematiky FS ) 9.1.2007 33 / 35

sečtení hodnoty ze všech procesů MPI Reduce(xold,xnew,lx,MPI DOUBLE,MPI SUM,0,comm) kde xold adresa kde začíná pole pro poslání xnew adresa kde začíná pole pro uložení na procesu root lx počet prvků pole, které chceme poslat MPI DOUBLE typ posílané proměnné MPI SUM typ operace sečtení 0 proces, ze kterého se bude kopírovat hodnota root comm číslo komunikátoru ( Ústav technické matematiky FS ) 9.1.2007 34 / 35

sečtení hodnoty ze všech procesů a uložení na všechny MPI Allreduce(xold,xnew,lx,MPI DOUBLE,MPI SUM,comm) kde xold adresa kde začíná pole pro poslání xnew adresa kde začíná pole pro uložení lx počet prvků pole, které chceme poslat MPI DOUBLE typ posílané proměnné MPI SUM typ operace sečtení comm číslo komunikátoru není nikdo root ( Ústav technické matematiky FS ) 9.1.2007 35 / 35