Základní komunikační operace

Podobné dokumenty
Ú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

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

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

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

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Profilová část maturitní zkoušky 2017/2018

Paralelní programování

cv3.tex. Vzorec pro úplnou pravděpodobnost

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Analýza aplikačních protokolů

Management procesu II Mgr. Josef Horálek

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

Profilová část maturitní zkoušky 2013/2014

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

Zabezpečení dat při přenosu

IB109 Návrh a implementace paralelních systémů. Kolektivní komunikační primitava. RNDr. Jiří Barnat, Ph.D.

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

Řízení IO přenosů DMA řadičem

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Metody připojování periferií

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

ROZŠÍŘENÉ FAXOVÉ FUNKCE

Komunikační protokol

SPINEL. Komunikační protokol. Obecný popis. Verze 1.0

Vrstva přístupu k médiu (MAC) a/b/g/n

Pokročilé architektury počítačů

VzorTest-1. Prohlídka náhledu

Common Object Request Broker Architecture

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

7. přednáška Systémová analýza a modelování. Přiřazovací problém

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Úvod do teorie grafů

AD4xxx s protokolem Drak3

1 Nejkratší cesta grafem

Komunikační protokol

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

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

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

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

Dynamické programování

Connection Manager - Uživatelská příručka

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

PARALELNÍ PROCESY A PROGRAMOVÁNÍ

Disková pole (RAID) 1

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Základy počítačových sítí Model počítačové sítě, protokoly

Šablony, kontejnery a iterátory

Protokol S-BUS pro MORSE Popis protokolu

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

PDV /2018 Detekce selhání

Odpřednesenou látku naleznete v kapitole 3.3 skript Diskrétní matematika.

Technická specifikace SMS Platby

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

C# konzole Podíl dvou čísel, podmínka IF

PŘÍKAZ K ZADÁNÍ SEPA PLATBY V APLIKACI MULTICASH KB

Asociativní sítě (paměti) Asociace známého vstupního vzoru s daným výstupním vzorem. Typická funkce 1 / 44

Algoritmizace a programování

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

SPINEL. Komunikační protokol. Popis pro implementaci. Verze 1.0

Úvod do programování. Lekce 1

[1] samoopravné kódy: terminologie, princip

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Paralelní algoritmy --- Parallel Algorithms

PŘÍSTUPOVÉ METODY KE KOMUNIKAČNÍMU KANÁLU

PRT3 tiskový modulu manuál pro EVO ústředny

Počítačové sítě Teoretická průprava II. Ing. František Kovařík

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Uživatelský manuál. KNXgw232

Centrum pošty informace pro integrované aplikace

Internet. Počítačová síť, adresy, domény a připojení. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Systém řízení sběrnice

Routování směrovač. směrovač

Vzájemné vyloučení procesů

Distribuované systémy a výpočty

Práce se soubory. Základy programování 2 Tomáš Kühr

Komunikační sítě paralelních architektur

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

CCNA 2/10 Další funkce TCP/IP Aleš Mareček Jaroslav Matějíček 1

Metody připojování periferií

1.1. Spuštění ArchiCADu Práce s projektem Pracovní plocha 19

Wie232. Převodník rozhraní Wiegand z bezkontaktních čteček na RS června 2011 w w w. p a p o u c h. c o m

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

Umělé neuronové sítě

AUDIS. strategický nástroj vzájemné komunikace mezi managementem společnosti, odbornými pracovníky i zástupci zaměstnanc. stnanců

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Počítač jako elektronické, Číslicové zařízení

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Lineární algebra nad obecným Z m, lineární kódy

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

Vstupně - výstupní moduly

5. Umělé neuronové sítě. Neuronové sítě

ÚLOHY S POLYGONEM. Polygon řetězec úseček, poslední bod je totožný s prvním. 6 bodů: X1, Y1 až X6,Y6 Y1=X6, Y1=Y6 STANOVENÍ PLOCHY JEDNOHO POLYGONU

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

Příklad: Řešte soustavu lineárních algebraických rovnic 10x 1 + 5x 2 +70x 3 + 5x 4 + 5x 5 = 275 2x 1 + 7x 2 + 6x 3 + 9x 4 + 6x 5 = 100 8x 1 + 9x 2 +

Transkript:

Základní komunikační operace Úvod 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 One-to-all broadcast/all-to-one reduction All-to-all broadcast/all-to-all reduction All-reduce a Prefix-sum Scatter/Gather All-to-all personalized communication Circular shift

Základní komunikační operace mezi procesy jde o komunikační vzory, které se v paralelním programování vyskytují velice často komunikující procesy mohou běžet na jednom nebo i na více výpočetních uzlech jejich speciální implemetace má následující výhody zjednodušuje práci programátora mohou využívat hardwarovou podporu dané paralelní architektury udržují aktivní sít ové spojení komunikační sítě tím vlastně několik malých zpráv "shlukuje do jedné" k většině těchto operací existují i operace duální, které "běží v opačném směru"

Operace send a recieve Jde o základní operace pro odeslání a přijetí jedné zprávy. send( void *sendbuf, int nelems, int dest) sendbuf - ukazatel na pole dat, jež mají být odeslána nelems - počet prvků pole dest - ID procesu/uzlu, kterému mají být data zaslána receive( void *recvbuf, int nelems, int source) recvbuf - ukazatel na pole, do nějž mají být přijatá data uložena nelems - počet prvků, které budou přijaty source - ID procesu/uzlu, od kterého mají být data načtena

Operace send a recieve Příklad: P 1 P 2 a=100; send(&a,1,1); receive( &a,1,0); a=0; printf("%d",a); Jaký výsledek vypíše proces P 2?

Operace send a recieve Příklad: P 1 P 2 a=100; send(&a,1,1); receive( &a,1,0); a=0; printf("%d",a); Jaký výsledek vypíše proces P 2? Výsledek je 100 nebo 0.

Operace send a recieve sít ové rozhraní může využívat DMA a pracovat nezávisle na CPU pokud má P 2 zpoždění ve zpracování kódu, mohou být data z P 1 odeslána až po provedení příkazu a=0; na P 1 tím pádem bude procesu P 2 odesláno číslo 0

Blokující a neblokující posílání zpráv Existují dva způsoby posílání zpráv: blokující funkce send nevrátí řízení programu, dokud to není sémanticky bezpečné neblokující komunikační funkce vrací řízení programu dříve, než je to sémanticky bezpečné

Blokující posílání zpráv Blokující posílání zpráv je možné provést dvěma způsoby: bez bufferu s bufferem

Blokující posílání zpráv bez bufferu odesílatel pošle požadavek k příjemci odesílatel potvrdí ve chvíli, kdy ve zpracování kódu dospěje k místu pro příjetí zprávy následně dojde k přenosu dat

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) čas

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) send SEND REQUEST čas

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) send SEND REQUEST čas SEND OK receive

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) send SEND REQUEST IDLE čas SEND OK TRANSFER receive

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) čas

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) čas send SEND REQUEST

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) čas send SEND REQUEST SEND OK receive

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) čas send SEND REQUEST SEND OK TRANSFER receive

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) čas

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) receive čas

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) receive čas send SEND REQUEST

Blokující posílání zpráv bez bufferu P 1 (send) P 2 (receive) receive IDLE čas send SEND REQUEST SEND OK TRANSFER

Blokující posílání zpráv bez bufferu Možnost deadlocku: P 1 P 2 send(&a,1,2); send( &a,1,1); receive(&b,1,2); receive( &b,1,1 ); oba procesy posílají send request a oba pak čekají na potvrzení send ok

Blokující posílání zpráv s bufferem snažíme se odstranit nutnost čekání na SEND OK při volání funkce send se data kopírují do pomocného bufferu program pak může okamžitě pokračovat přenos dat může proběhnout bez účasti CPU na straně příjemce se data také kopírují do pomocného bufferu někdy je buffer jen na jedné straně

Blokující posílání zpráv s bufferem čekání odesílajícího procesu se podařilo zredukovat přibyla ale režie nutná při kopírování dat z/do bufferů pokud jsou procesy často synchronizovány, může být komunikace bez bufferů efektivnější pokud se buffery zaplní, dochází k čekání také příjem je vždy blokující nesmí se pokračovat dál, dokud nejsou data zkopírována z bufferu příjemce

Blokující posílání zpráv s bufferem Možnost deadlocku: P 1 P 2 receive(&b,1,2); receive( &b,1,1 ); send(&a,1,2); send( &a,1,1); oba procesy čekají na příjem zprávy

Neblokující posílání zpráv komunikační funkce vrací řízení programu dříve, než je to sémanticky bezpečné programátor musí sám ohlídat, zda již byla data přenesena mezi tím ale může zpracovávat jiný kód, který napracuje s posílanými daty existují funkce, které řeknou, zda již komunikace úspěšně proběhla i neblokující komunikace může používat buffery

One-to-all broadcast/all-to-one reduction One-to-all broadcast jeden proces má identická data o velikosti m a rozešle je všem ostatním používá se např. při rozesílání konfigurančích parametrů

One-to-all broadcast/all-to-one reduction All-to-one reduction každý proces má data o velikosti m a obecně jsou různá (různé hodnoty) data jsou poslána jednomu procesu a současně sloučena dohromady pomocí nějaké asociativní operace do velikosti m Příklad: Máme 100 reálných čísel umístěných na 100 procesech (každý proces má jedno reálné číslo). Výsledkem redukce je součet všech čísel a výsledek má proces číslo 0.

One-to-all broadcast/all-to-one reduction M 1 2 3 p 1 2 3 p Před Po

One-to-all broadcast/all-to-one reduction M 1 2 3 p 1 2 3 p Před One-to-all broadcast Po

One-to-all broadcast/all-to-one reduction M M M M M 1 2 3 p 1 2 3 p Před Po

One-to-all broadcast/all-to-one reduction M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Po Před

One-to-all broadcast/all-to-one reduction M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Po All-to-one reduction Před

One-to-all broadcast/all-to-one reduction p i=1 M i 1 2 3 p 1 2 3 p Po Před

One-to-all broadcast/all-to-one reduction - příklad vstupní vektor P 1 P 2 P 3 P 4 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 P 14 P 15 P 16 P 1 P 2 P 3 P 4 výstupní vektor

One-to-all broadcast/all-to-one reduction - příklad vstupní vektor P 1 P 2 P 3 P 4 One-to-all broadcast P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 P 14 P 15 P 16 P 1 P 2 P 3 P 4 výstupní vektor

One-to-all broadcast/all-to-one reduction - příklad vstupní vektor P 1 P 2 P 3 P 4 Výpočet P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 P 14 P 15 P 16 P 1 P 2 P 3 P 4 výstupní vektor

One-to-all broadcast/all-to-one reduction - příklad vstupní vektor P 1 P 2 P 3 P 4 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 P 14 P 15 P 16 All-to-one reduction P 1 P 2 P 3 P 4 výstupní vektor

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu kruh 8 7 6 5 One-to-all broadcast 1 2 3 4

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu kruh 8 7 6 5 One-to-all broadcast 1 2 3 4

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu kruh 8 7 6 5 One-to-all broadcast 1 2 3 4

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu kruh 8 7 6 5 One-to-all broadcast 1 2 3 4

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu kruh 8 7 6 5 One-to-all broadcast 1 2 3 4

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu kruh 8 7 6 5 One-to-all broadcast 1 2 3 4

One-to-all broadcast/all-to-one reduction Realizace v případě sítě typu lineární řetězec je stejná jako u kruhu. poslední spoj nebyl potřeba Realizace v případě ortogonální sítě: nejprve se provede one-to-all broadcast podél jedné souřadnice, následně podél další

All-to-all broadcast/all-to-all reduction Všech p procesů provádí současně one-to-all broadcast nebo all-to-one reduction s různými daty.

All-to-all broadcast/all-to-all reduction M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Před Po

All-to-all broadcast/all-to-all reduction M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Před All-to-all broadcast Po

All-to-all broadcast/all-to-all reduction M p M p M p M p.... M 3 M 3 M 3 M 3 M 2 M 2 M 2 M 2 M 1 M 2 M 3 M p M 1 M 1 M 1 M 1 1 2 3 p 1 2 3 p Před Po

All-to-all broadcast/all-to-all reduction M p,1 M p,2 M p,3 M p,4.... M 3,1 M 3,2 M 3,3 M 3,p M 2,1 M 2,2 M 2,3 M 2,p M 1,1 M 1,2 M 1,3 M 1,p 1 2 3 p 1 2 3 p Po Před

All-to-all broadcast/all-to-all reduction M p,1 M p,2 M p,3 M p,4.... M 3,1 M 3,2 M 3,3 M 3,p M 2,1 M 2,2 M 2,3 M 2,p M 1,1 M 1,2 M 1,3 M 1,p 1 2 3 p 1 2 3 p Po All-to-all reduction Před

All-to-all broadcast/all-to-all reduction M p,1 M p,2 M p,3 M p,4.... M 3,1 M 3,2 M 3,3 M 3,p p i=1 M 1,i p i=1 M 2,i p i=1 M 3,i p i=1 M p,i M 2,1 M 2,2 M 2,3 M 2,p M 1,1 M 1,2 M 1,3 M 1,p 1 2 3 p 1 2 3 p Po Před

All-to-all broadcast/all-to-all reduction Realizace all-to-all broadcast v případě sítě typu kruh: v každém kroku každý uzel pošle svoje data sousedovi vpravo a přijme data od souseda vlevo v následujícím kroku posílá data, která v předchozím kroku přijal vše se opakuje p 1-krát V případě ortogonálních sítí se opět postupuje podél jednotlivých souřadnic.

All-to-all broadcast/all-to-all reduction Realizace all-to-all reduction v případě sítě typu kruh: v první kroku pošle uzel i data M j,i pro j = 1, p a j i svému sousedovi vpravo a příjme data M j,i 1 pro j = 1, p a j i 1 od svého souseda vlevo v druhém kroku pošle uzel i data M j,i 1 pro j = 1, p a j i j i 1, svému sousedovi vpravo a příjme data M j,i 2 pro j = 1, p a j i 1 j i 2 od svého souseda vlevo vše se ještě opakuje p 2-krát za současného provádění redukční operace

All-reduce a Prefix-sum All-reduce na počátku má každý proces různá data M i o velikosti m na konci mají všechny procesy stejný "součet"dat p i=1 M i All-reduce lze provést jako All-to-one reduction + One-to-all broadcast p All-to-all broadcast, kde se ale provede součet i=1 M i pro m = 1 lze All-reduce použít jako bariéru 1 redukci nelze dokončit, dokud k ní nepřispěje každý proces svým podílem 1 Bariéra je místo v programu, které nesmí žádný proces překročit, dokud ho nedosáhnou všechny ostatní procesy. Má význam synchronizace procesů.

All-reduce a Prefix-sum Prefix-sum jde o modifikaci all-reduce pro data M 1, M p chceme najít S k = k i=1 M i pro k = 1, p postup je stejný jako u all-reduce, ale každý proces k si "přičítá"jen data od procesů s ID < k některá komunikace je tu tady zbytečná, ale celkovou složitost této operace to neovlivní

Scatter/Gather Scatter jeden proces má na počátku p různých zpráv M 1, M p proces i má na konci zprávu M i někdy se tato zpráva nazývá one-to-all personalized communicatio Gather je to duální operace ke scatter na počátku má každý proces i zprávu M i na konci má jeden proces všechny zprávy p i=1 M i

Scatter/Gather M p. M 3 M 2 M 1 1 2 3 p 1 2 3 p Před Po

Scatter/Gather M p. M 3 M 2 M 1 1 2 3 p 1 2 3 p Před Scatter Po

Scatter/Gather M p. M 3 M 2 M 1 M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Před Po

Scatter/Gather M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Po Před

Scatter/Gather M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Po Gather Před

Scatter/Gather M p. M 3 M 2 M 1 M 1 M 2 M 3 M p 1 2 3 p 1 2 3 p Po Před

Scatter/gather Realizace scatter v případě sítě typu kruh: je stejná jako u one-to-all broadcast ale s jinými objemy dat

Scatter/gather 8 7 6 5 Scatter 1 2 3 4

Scatter/gather 8 7 6 5 Scatter M 1, M 8 1 2 3 4

Scatter/gather M 5, M 8 8 7 6 5 M 1, M 4 Scatter 1 2 3 4

Scatter/gather M 7, M 8 M 5, M 6 8 7 6 5 Scatter M 1, M 2 M 3, M 4 1 2 3 4

Scatter/gather M 8 M 7 M 6 M 5 8 7 6 5 Scatter M 1 M 2 M 3 M 4 1 2 3 4

Scatter/gather M 8 M 7 M 6 M 5 8 7 6 5 Scatter M 1 M 2 M 3 M 4 1 2 3 4

All-to-all personalized communication All-to-all personalized communication každý proces i má data M i,j, která pošle procesu j.

All-to-all personalized communication M p,1 M p,2 M p,3 M p,p.... M 3,1 M 3,2 M 3,3 M 3,p M 2,1 M 2,2 M 2,3 M 2,p M 1,1 M 1,2 M 1,3 M 1,p 1 2 3 p 1 2 3 p Před Po

All-to-all personalized communication M p,1 M p,2 M p,3 M p,p.... M 3,1 M 3,2 M 3,3 M 3,p M 2,1 M 2,2 M 2,3 M 2,p M 1,1 M 1,2 M 1,3 M 1,p 1 2 3 p 1 2 3 p Před All-to-all personalized communication Po

All-to-all personalized communication M p,1 M p,2 M p,3 M p,p M 1,p M 2,p M 3,p M p,p........ M 3,1 M 3,2 M 3,3 M 3,p M 2,1 M 2,2 M 2,3 M 2,p M 1,3 M 2,3 M 3,3 M p,3 M 1,2 M 2,2 M 3,2 M p,2 M 1,1 M 1,2 M 1,3 M 1,p M 1,1 M 2,1 M 3,1 M p,1 1 2 3 p 1 2 3 p Před Po

All-to-all personalized communication jde vlastně o maticovou transpozici stejná analogie jako mezi scatter a one-to-all broadcast platí i mezi all-to-all personalized communication a all-to-all broadcast z toho plyne i realizace all-to-all personalized communication na síti typu kruh nebo na ortogonálních sítích

Circular shift Circular shift patří mezi tzv. permutační komunikační operace každý proces pošle jednu zprávu o velikosti m slov některému jinému uzlu Příklad: Circular q-shift proces i pošle svá data procesu (i + q) mod p