PPSD

Documente similare
Paradigme de Programare

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Microsoft Word - 2 ES RO.doc

Microsoft PowerPoint - SD5-RO.ppt

tehnologii web

Microsoft PowerPoint - TDRC_II-10-TCP.ppt

Declararea variabilelor

Paradigme de programare

Microsoft PowerPoint - ARI_R_c9-10_IP_part2 [Compatibility Mode]

Proiectarea Sistemelor Software Complexe

Informatică aplicată TEST GRILA TEST GRILĂ - REZOLVAT 1.Structura de principiu a unui sistem de calcul contine urmatoarele componente principale: A. u

Limbaje de Programare Curs 8 – Fisiere

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

E_d_Informatica_sp_MI_2015_bar_02_LRO

Slide 1

Diapositive 1

Comanda si supravegherea centralelor termice de putere

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Platformăde e-learning și curriculăe-content pentru învățământul superior tehnic Sisteme de operare 13. Planificarea proceselor

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Gestionarea I/E

Cuprins

Analiză statică Analiza fluxului de date 23 octombrie 2014

E_d_Informatica_sp_SN_2014_bar_10_LRO

Sisteme de calcul în timp real

kapenekas.doc

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Lucrarea 10

Slide 1

PROGRAMARE ORIENTATA PE OBIECTE

Top

Microsoft Word - CarteC.doc

Carrier Pidgeon Protocol

1

Slide 1

Ingineria Sistemelor de Programare

Proiect didactic

Subiectul 1

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Microsoft PowerPoint - SD7-RO.ppt

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Prin intermediul serviciul de Internet Banking BT24 oferit de Banca Transilvania, se pot achita gratuit facturi emise de urmatorii furnizori, in contu

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Modulul 1 M1-2.3 Protocoale şi servicii în reţea În acest capitol ne propunem să abordăm următoarele: Protocoalele şi aplicaţiile folosite în reţelele

TM200 Live Tour guide Sistem audio mobil Sistemul de comunicare audio Tour guide este util in cel putin 3 situatii si vine cu avantaje clare: 1) Cand

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Unitatea: Școala Gimnazială Disciplina: Informatică și TIC Programa școlară aprobată cu OMEN nr.3393 din Profesor: prof. Clasa: a V-a A, B

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Microsoft Word - Laboratorul 3.doc

FIŞA DISCIPLINEI ANEXA nr. 3 la metodologie 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Politehnica din Bucureşti 1.2 F

Analiză de flux de date 29 octombrie 2012

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIŞA DISCIPLINEI (CO

Lucrarea nr. 2 Aplicaţii de tip client Mihai IVANOVICI 6 martie 2006 Scopul acestei lucrări este de a vă familiariza cu modulul Python socket şi cu mo

A TANTÁRGY ADATLAPJA

Slide 1

LUMINIŢA SCRIPCARIU

Microsoft Word - selgros dep .doc

PowerPoint Presentation

Object Oriented Programming

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

MINISTERUL ADMINISTRATIEI SI INTERNELOR Ex

Microsoft Word - lab-fr_3

Microsoft Word - c6.doc

PowerPoint-Präsentation

Biomedical Wi-Fi data transmissons

Laborator 10 - Paradigme de Programare Corutine - suport nativ pentru paralelism în Kotlin Înainte de a trece la realizarea unei aplicații utilizând c

FIŞA DISCIPLINEI ARHITECTURA SISTEMELOR DE CALCUL 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea POLITEHNICA din Bucureşti

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

INFORMATICĂ ŞI MARKETING

Ghid de Referință Explicații sumare ale operațiunilor de rutină HL-L2312D HL-L2357DW HL-L2352DW HL-L2372DN HL-L2375DW Brother recomandă să păstrați ac

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Programarea şi utilizarea calculatoarelor

Curs 10

Ingineria Sistemelor de Programare

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Curs de formare Informatică și TIC pentru clasa a V-a Portofoliu pentru evaluarea finală Tema: ELEMENTE DE INTERFAŢĂ ALE UNUI SISTEM DE OPERARE (DESKT

Guardian2012_RO3

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Example Title with Registration Microsoft® and Trademark SQL ServerTM

Limbaje de Programare Curs 5 – Siruri de caractere

Microsoft Word - Pagina garda I DGA 03.doc

..MINISTERUL EDUCAŢIEI NAȚIONALE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1. Date despre program 1.1. I

INTREBARI FRECVENTE SI MANUAL DE UTILIZARE hub.sendsms.ro

Lab6LCD

Kein Folientitel

Microsoft Word - CarteC.doc

Tablouri (continuare)

SSC-Introducere-2

Ghid Web connect DCP-J4120DW MFC-J4420DW MFC-J4620DW MFC-J5320DW MFC-J5620DW MFC-J5720DW

DJV-COM 19 Octombrie 2011 Accesul la datele sistemei de la distanță a contului de energie a Compania DJV-COM Dacă aveţi instalată sistema de administr

PowerPoint Presentation

Microsoft Word - O problema cu bits.doc

GHID PENTRU RESETAREA PAROLEI Informații Generale Din dorința de a facilita procesul de autentificare, chiar dacă nu mai cunoașteti datele necesare, a

MergedFile

E1.1LGAL FIȘA DE VERIFICARE A CONFORMITĂȚII PROIECTULUI Fișa de verificare a conformității proiectului MĂSURA M6/DI6B Investiţii în infrastructura de

Transcriere:

Modele paralele SPMD Modelul SPMD Comunicarea prin mesaje Message Passing Interface

Modelul SPMD Modelul SPMD (Single Program Multiple Data) Acesta este un model adecvat calculatoarelor MIMD In cele ce urmeaza tratam doar cazul MIMD cu memorie distribuita Paradigma SPMD (Single Program Multiple Data): toate procesoarele executa acelasi program, dar fiecare utilizeaza un set propriu de date; Important de retinut: Executia instructiunilor nu este sincrona, fiecare procesor executa instructiunile in ritmul sau propriu; Nu toate procesoarele executa aceleasi instructiuni; programele incarcate in memoriile diferitelor procesoare sunt identice dar pot exista diferente la executie. Adresa unui procesor Un program se executa pe p procesoare ale unui calculator paralel; Valoarea lui p este mai mica decat numarul total de procesoare al calculatorului; Procesoarele sunt numerotate de la 0 la p-1; Numerotarea nu este statica, se face in momentul lansarii in executie; Pocesoarele pot sa isi afle propria adresa printr-o primitiva a sistemului de operare sau de biblioteca Procesoarele pot executa instructiuni diferite in functie de adresa lor In descrierea algoritmilor, adresa procesorului care executa programul e utilizata ca o variabila.

Diferentierea la executie Notam id adresa proprie a unui procesor Exemplu simplu de program (1) id adresa proprie (2) daca id = 3 atunci 1. a 1 (3) altfel 1.a 0 Modelul SPMD Doar procesorul P 3 executa instructiunea: a 1 Toate celelalte executa: a 0 Variabila a este in memoria locala a fiecarui procesor. Variabile si indici O variabila a unui program SPMD este multiplicata; fiecare procesor contine un exemplar; Un procesor nu poate modifica variabilele din memoria altui procesor; In exemplul de mai sus, se poate interpreta variabilaa cu un vector cu p elemente. Se vor folosi numai indici globali de programare

Comunicatie prin mesaje Modele de comunicatie prin mesaje Acesta este un model exclusiv pentru calculatoare MIMD cu memorie distribuita Deoarece fiecare procesor are propria sa memorie proprie, singura modalitate de comunicare intre procesoare este transmiterea de mesaje; Operatia de baza este atunci cand un procesor sursa P s transmite un mesaj M continand date din memoria sa M s unui procesor destinatie P d, care stocheaza datele in memoria sa M d. Primitive de baza Sunt suficiente doar doua rutine pentru a descrie orice operatie de comunicatie Procesorul sursa transmite prin rutina send Procesorul destinatie receptioneaza prin rutina recv Sintaxa este: send(date, dest); recv(date, sursa); Date este o variabila locala, indicand locul in care se afla datele transmise sau unde se memoreaza datele receptionate; lungimea datelor rezulta din context; Se presupune implicit ca datele ocupa o zona continua de memorie;

Comunicatie prin mesaje Primitive de baza Al doilea parametru identifica vecinul cu care se comunica Vecinul se noteaza prin adresa (la fel ca im MPI) Alternativ, se precizeaza directia in care se gaseste vecinul (daca se precizeaza o topologie a retelei de comunicatie): Pe inel, gilasau tor: stanga, dreapta, sus, jos, vest, est, nord, sud; In cazul hipercublui: dimensiunea pe care se comunica, un numar intre 0 si d-1; Corectitudinea comunicatiei Orice operatie de transmitere a unui procesor este insotita de una de receptie a unui vecin al sau; Primitivele send si recv trebuie sa apara in perechi, pe ansamblul procesoarelor; Exemplu: (presupunem ca un procesor P k trebuie sa transmita vecinilor pe un inel P k-1 si P k+1. Algoritmul va avea forma: (1) daca id = k atunci (1) send (M, dreapta); (2) send (M, stanga); (2) altfel daca id = (k-1) mod p atunci recv (M, dreapta); (3) altfel daca id = (k+1) mod p atunci recv (M, stanga);

Comunicatie prin mesaje Terminarea locala a comunicatiei Presupunem ca procesorul P s transmite un mesaj procesorului P d Momentele in care P s apeleaza primitiva send, iar P a recv sunt in general diferite Transmiterea efectiva a mesajului se face doar dupa ce ambele procesoare au apelat primitivele respective; Exista doua posibilitati pentru procesorul care a apelat primul primitiva sa de comunicatie, din momentul apelului si pana cand celalalt procesor apeleaza primitiva pereche: Comunicatia blocanta: asteapta (fara a face nimic); Comunicatie non-blocanta: procesorul poate executa in acest caz si alte operatii;

Comunicatie prin mesaje Comunicatia blocanta Al doilea procesor il asteapta pe primul; Pe durata asteptarii, acest procesor nu efectueaza alte operatii; Comunicatia se numeste blocanta si sincrona (procesoarele vor termina simultan)

Comunicatie prin mesaje Comunicatia blocanta prin buffere Se utilizeaza un buffer; primitiva send muta mesajul din zona sa originala intr-o zona tampon (un buffer); dupa aceasta, executia send se termina, zona de memorie a mesajului poate fi refolosita; Procesorul sursa ramane blocat doar pe durata copierii mesajului in buffer; Terminarea rutinei send nu este conditionata de apelul recv la destinatie; La terminarea executiei recv, mesajul este receptionat in zona de memorie alocata acestui scop;

Comunicatie prin mesaje Comunicatie non-blocanta Primitivele send si recv se termina imediat dupa apel, fara ca zona de memorie a mesajului sa fie libera la send sau sa contina mesajul la recv; Primitivele au doar rolul de a initia comunicatia, transferul efectiv fiind realizat mai tarziu la un nivel inferior; Dupa terminarea executiei send sau recv, procesorul poate executa si alte operatii, in paralel sau concurent cu comunicatia; Si in modul non-blocant comunicatia se poate realiza sincron sau prin buffer;

Standardul MPI Message Passing Interface (MPI) este un standard descriind primitive de comunicatie in contextul unui model de programare SPMD Este implementat pe toate calculatoarele MIMD si pe multe alte arhitecturi, inclusiv retele de calculatoare; Pentru Windows: OpenMPI MPICH2 WMPI Pentru Linux, Unix: MPI Avantaje: Portabilitate; Comunicatia este implementata eficient pe fiecare calculator; Se pot testa si depana programe in medii putin costisitoare (din punct de vedere al resurselor de calcul necesare, de ex. desktop computer sau o retea mica) rulandu-le pe supercalculatoare in momentul in care sunt aproape sigur functionale; Rutinele MPI se executa in cadrul unui grup de procesoare, numit comunicator; Initial, exista doar comunicatorul MPI_COMM_WORLD continand toate procesoarele pe care se executa programul;

Standardul MPI In cadrul unui comunicator sunt p procesoare, numerotate de la 0 la p-1. Un procesor poate afla numarul de procesoare din comunicator si adresa proprie (numita rank in MPI) prin: int MPI_Comm_size(MPI_Comm com, int *p); int MPI_Comm_rank(MPI_Comm com, int *my_id); MPI_Comm este tipul predefinit pentru comunicatoare; com este comunicatorul in care se afla procesorul; In variabilele p si my_id rutinele returneaza valorile numarului de procesoare, respectiv a adresei procesorului apelant; Toate rutinele MPI intorc un intreg care caracterizeaza succesul executiei; Structura unui program MPI Un program MPI are forma obisnuita a unui program secvential; Rutinele MPI_Init si MPI_Finalize se apeleaza inaintea si respectiv dupa orice alte rutine MPI; MPI_Init primeste argumentele argc si argv, acestea avand sau nu o semnificatie in functie de implementarea MPI Programatorul este liber sa foloseasca rutinele MPI potrivite cu algoritmul pe care il implementeaza.

Standardul MPI Rutine de comunicatie MPI Oricare doua procesoare isi pot transmite mesaje (topologia virtuala este graful complet conectat); Principalele rutine de comunicatiei sunt: MPI_Send (void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) MPI_Recv (void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) Prin MPI_Send un procesor trimite procesorului dest mesajul aflat in memoria locala la adresa buf, de lungime count si avand tipul datatype. Mesajului ii este asociata o eticheta (tag) care il personalizeaza; Transmisia mesajului se face in cadrul comunicatorului com, care trebuie sa contina si procesorul sursa, si cel destinatie; MPI_Recv receptioneaza un mesaj de lungime cel mult count, trunchiind eventual mesajul transmis; tipul de date poate diferi de la sursa la destinatie; variabila status da informatii suplimentare dupa receptie, de ex. lungimea efectiva a mesajului.

Standardul MPI Moduri de comunicatie MPI prevede rutine de comunicatie pentru toate tipurile de comunicatie descrise anterior: blocanta sau non-blocanta, prin buffer sau sincron; Modul de implementare a rutinelor de baza (standard) MPI_Send, MPI_Recv nu este precizat; Pentru comunicatia non-blocanta: MPI_Wait asteapta terminarea transmisiei sau receptiei; MPI_Test verifica daca transmisia sau receptia s-au terminat sau nu;

Standardul MPI MPI Hello World! 1 procesor 2 procesoare 4 procesoare

Standardul MPI Alte functii MPI Comunicatie globala: operatii de comunicatie implicand toate procesoarele dintr-un grup (comunicator): sincronizare, difuzare, distributie; Alte operatii globale: calculul maximului unor valori distribuite tuturor procesoarelor unui grup, calculul sumei; Topologii virtuale. Pentru cresterea performantelor unui program MPI pe un anumit calculator, programatorul poate descrie o topologie virtuala care sa corespunda topologiei reale a calculatorului. Procese: se pot creea dinamic, deci se pot imbina paralelismul si concurenta