1.6 Mașină virtuală paralelă (PVM)
Bazele mediului de calcul al grupului Beowulf sunt mașinile virale PVM paralele. PVM (Virtual Machine Paralelă) este un pachet software care vă permite să utilizați un set de computere eterogene conectate la rețeaua locală care operează sub sistemul de operare Unix ca un singur calculator paralel mare. Astfel, problema calculilor mari poate fi rezolvată foarte eficient utilizând puterea combinată și memoria unui număr mare de computere. Pachetul software PVM este ușor de transferat pe orice platformă. Codul sursă, distribuit gratuit de către netlib, a fost compilat pe computere, de la laptop la CRAY.
O mașină virtuală paralelă poate fi definită ca parte a mijloacelor unui complex computațional real (procesoare, memorie, periferice etc.) concepute pentru a efectua o varietate de sarcini implicate în obținerea unui rezultat comun de calcul. În general, numărul de sarcini poate depăși numărul de procesoare incluse în PVM. În plus, compoziția PVM poate include computere destul de eterogene care sunt incompatibile cu sistemele de comandă și formatele de date. Cu alte cuvinte, Parallel Virtual Machine poate fi atât PC-uri individuale și rețele locale, care include supercalculatoare cu arhitectura paralela, calculatoare mainframe, stații de lucru grafice și toate de aceeași low-power PC. Este important doar ca PVM inclus în mijloacele de calcul să aibă informații în software-ul PVM utilizat. Datorită acestui software, utilizatorul poate presupune că comunică cu un computer, în care este posibilă efectuarea unui număr de sarcini în paralel.
PVM permite utilizatorilor să utilizeze hardware-ul existent pentru a rezolva sarcini mult mai complexe, cu costuri suplimentare minime. Sute de grupuri de cercetare din întreaga lume utilizează PVM pentru a rezolva probleme științifice, tehnice și medicale importante și, de asemenea, utilizează PVM ca un instrument educațional pentru predarea programării paralele. În prezent, PVM a devenit standardul de facto pentru calculul distribuit.
Scopul principal al utilizării PVM este creșterea vitezei de calcul prin execuția lor paralelă. Funcționarea PVM se bazează pe mecanismele de schimb de informații între sarcinile efectuate în mediul său. În acest sens, este foarte convenabil să se implementeze PVM în cadrul complexului de calcul multiprocesor, alocând mai multe procesoare mașinii virtuale și RAM-ului general sau individual (în funcție de condiții). Utilizarea PVM este posibilă atât pe computerele multiprocesor (SMP), cât și pe sistemele informatice construite pe tehnologia cluster. Atunci când se utilizează PVM, de regulă, problemele de schimb rapid de informații între sarcini sunt mult simplificate, precum și problemele de reconciliere a formatelor de reprezentare a datelor între sarcinile efectuate pe diferite procesoare
Programarea eficientă pentru PVM începe cu faptul că algoritmul de calcul trebuie adaptat la compoziția PVM și la caracteristicile sale. Aceasta este o sarcină foarte creativă, care în multe cazuri trebuie rezolvată de către programator. Pe lângă sarcina de calcul paralelizare, apare și sarcina de a gestiona procesul de calcul, coordonarea acțiunilor de sarcini care participă la acest proces. Uneori, pentru management este necesar să se creeze o sarcină specială, care însăși nu participă la calcule, furnizează munca coordonată a altor sarcini - calculatoare.
Anterior, a menționat în treacăt că în calcul paralel este necesară pentru a programa acțiuni specifice de coordonare a sarcinilor, cum ar fi procesele care rulează sarcini pe procesoarele de cluster, gestiona schimbul de date între sarcini, și așa mai departe. De asemenea, trebuie definite în mod clar „zona de activitate“ pentru fiecare sarcină.
Cea mai simplă și populară modalitate de a organiza un cont paralel este după cum urmează. În primul rând, se începe o sarcină (master), care în echipa de sarcini va juca funcțiile coordonatorului de lucru. Această sarcină efectuează câteva acțiuni pregătitoare, de exemplu inițializarea condițiilor inițiale, apoi lansează sarcinile rămase (sclavi), care pot corespunde fie aceluiași fișier executabil sau executabil diferit. O astfel de variantă de calcule, de preferință, în paralel, la complicații de calcul logica de gestionare a procesului, precum și algoritmi implementate în diferite sarcini diferă semnificativ sau are o cantitate mare de operațiuni (de exemplu, de intrare - ieșire) care servește procesului de calcul în ansamblu.
1.6.1 Interacțiunea sarcinilor în PVM
În sistemul PVM, fiecare sarcină care rulează pe un anumit procesor este identificată de un întreg, numit identificatorul de sarcină (TID) și este similar în sens cu identificatorul procesului din sistemul de operare Unix. Sistemul PVM acceptă automat unicitatea unor astfel de identificatori: copii ale aceluiași executabil executabil în paralel pe procesoare N PVM creează sarcini N cu TID-uri diferite.
În conformitate cu standardul adoptat în PVM pentru interacțiunea sarcinilor se consideră că într-o singură PVM orice sarcină poate transmite mesaje către orice altă sarcină, în plus, dimensiunile și numărul acestor mesaje nu sunt, în principiu, limitate. Această presupunere simplifică foarte mult implementarea PVM pe sisteme de calcul specifice, deoarece în timp ce controlul asupra depășirii dispozitivelor tampon și a rețelelor rămâne sub controlul sistemelor de operare și o atenție suplimentară este luată de la programator.
Pentru a spori eficiența schimbului de informații inter-tasking, sunt utilizați mai mulți algoritmi. În special, se poate utiliza o transmisie blocat algoritm cu care funcția „Trimite mesajul“ se întoarce (adică, se termină), numai după o confirmare pozitivă sau negativă primite de la destinatarul mesajului. Un astfel de algoritm de transmisie cu DSN așteptare preferată în cazurile în care un mesaj lung este transmis în mai multe porțiuni, precum și schimbul de comenzi, secvența care dorlzhna fi fixat strict în timp.
Când se utilizează algoritmi deblocați pentru trimiterea și recepționarea mesajelor, timpul de întrerupere al procesoarelor este redus, datorită așteptării reacției "interlocutor". Mai ales efectul mare pe care-l dă pe o petrecere de recepție la un moment necunoscut de sosire a mesajului. Puteți organiza activitatea procesorului de primire astfel încât acesta să aștepte ca mesajul să efectueze lucrarea curentă, numai din timp în timp, dacă evaluează tamponul de primire.
Esențial este faptul că atunci când un mesaj este transmis de la o sarcină la alta, mesajul coincide întotdeauna cu ordinea de transmisie. Mai mult, dacă mai multe mesaje sunt scrise în memoria tampon de primire a sarcinii primite înainte de a apela funcția "primi mesaj", funcția "primi mesaj" va trimite o referință la primul mesaj recepționat.
Memoria pentru tablourile tampon pe partea de expediere și de primire este alocată dinamic, prin urmare volumul maxim al mesajului este limitat numai de cantitatea de memorie disponibilă. În cazul în care una dintre sarcinile care rulează în PVM, nu se poate obține memoria necesară pentru a comunica cu alte sarcini, acesta oferă utilizatorului un mesaj de eroare corespunzător ( „nu se poate obține de memorie“), dar celelalte sarcini ale evenimentului nu este notificat și poate, de exemplu, continuă să să-i trimită mesajele.
Informații despre lucrare "Bazele programării paralele pe un cluster și dezvoltarea unui curs electiv" Administrarea în sisteme informatice și administrarea mașinilor virtuale "»