This is an old revision of the document!
În acest laborator vom explora utilizarea MPI în cadrul unei topologii de noduri. Vom învăța să stabilim topologia unei rețele de noduri (folosind algoritmul sondă-ecou / undă-ecou și algoritmul arbore), să alegem un lider (folosind heart-beat) și să determinăm numărul de noduri din topologie folosind un algoritm epidemic.
În cazul unui sistem distribuit, elementul cheie este comunicarea între procese. Aceasta dictează performanța sistemului, toleranța la defecte și logica fluxului de transfer de informații între nodurile din cadrul sistemului distribuit.
Din punct de vedere al arhitecturii, nodurile pot fi organizate în mai multe moduri într-un cluster:
În cadrul acestui laborator vom explora organizarea unui sistem sub forma de graf generic. Topologia de mai jos va fi folosită pentru exemplificări în cadrul laboratorului și în cadrul exercițiilor.
Există trei moduri prin care o topologie poate fi stabilită în cadrul unui cluster. Nodurile pot cunoaște starea întregului cluster de la bun început, pot cunoaște doar vecinii sau nu pot ști nimic despre starea sistemului.
Pentru a stabili topologia, clusterul poate opera în două moduri:
Problema care se ridică în cazul utilizării unui lider care să creeze matricea de topologie, este ca nodurile nu știu calea către lider, ci doar cine este acest lider. Arborele de acoperire rezolvă această problemă. Pe baza arborelui de acoperire, nodurile trimit informația pe care o dețin către lider, trecând prin nodurile intermediare care sunt reprezentate de părinții lor în arbore. Nodurile intermediare adăugă informația primită la informația proprie și o trimit mai departe. În final, liderul are toată informația sistemului și poate crea matricea de topologie. Matricea este trimisă, apoi, fiecărui nod în parte.
În cadrul acestui laborator vom explora stabilirea topologiei prin alegerea liderului.
Un algoritm undă este un tip de algoritm distribuit folosit pentru propagarea informațiilor în cadrul unei rețele distribuite de noduri.
Un algoritm undă este caracterizat de următoarele trăsături:
Clusterele de noduri pot sa fie ierarhizate sau nu. In cadrul clusterelor bazate pe noduri autonome, nu exista un lider bine stabilit, ci contracte clare de comunicare intre noduri. Pe de alta parte, in clusterele care au lider, unul sau mai multe noduri indeplinesc functii elevate. Printre functiile elevate se numara si stabilirea si distribuirea topologiei catre celelalte noduri.
Liderul reprezinta un nod sau un grup de noduri ales pe baza unei euristici. Euristica poate tine cont de resursele nodului respectiv, de numarul sau natura proceselor care ruleaza pe el sau pur si simplu de lucruri simple, precum eticheta sa.
In cadrul acestui laborator vom explora alegerea liderului bazat pe rank-ul cel mai mare al unui nod. Alegerea liderului se va face pe baza unui algoritm de tipul heartbeat.
Functionarea unui algoritm heartbeat se aseamana cu bataile inimii:
In cadrul alegerii liderului, algoritmul heartbeat va fi aplicat in felul urmator:
Algoritmul se repeta de un numar suficient de ori ca sa se asigure convergenta informatiei.
Dupa ce liderul a fost ales, acesta va initia construirea arborelui de acoperire.
Arborele de acoperire se reprezinta, cel mai usor, printr-un vector de tati. Constuirea acestui arbore se realizeaza printr-un algoritm de tip unda - ecou.
Algoritmul unda are doua parti:
La final, liderul va detine vectorul de tati final, care reprezinta arborele de acoperire. Arborele de acoperire este apoi distribuit intregului sistem
Dupa ce liderul a fost ales si topologia a fost distribuita catre toate nodurile, este util ca informatia sa fie validata. Validarea poate implica procese foarte complexe, insa pentru acest laborator vom folosi o validare bazata pe numarul de noduri prezente in cluster.
Calcularea numarului de noduri se poate realiza folosind un algoritm de tipul epidemic.
Functionalitatea unui algoritm de tipul epidemic se aseamana cu raspandirea unei boli in care exista un pacient 0:
Pentru calcularea numarului de noduri, pacientul 0 va fi nodul lider. Acesta va detine o valoare de inceput, 1. Toate celelalte noduri detin valoarea 0. Nodul lider va realiza media aritmetica dintre valoarea sa si valoarea vecinilor sai. Informatia va fi sincronizata in ambele parti. Celalte noduri vor executa aceeasi operatie cu vecinii lor.
Algoritmul se repeta pana cand se atinge convergenta solutiei. La final, toate nodurile vor detine o aceeasi valoare subunitara. Impartirea lui 1 la aceasta valoare va rezulta in numarul de noduri al clusterului.
Pornind de la scheletul de laborator, va trebui să realizați următoarele sarcini: