Download - Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet
![Page 1: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/1.jpg)
Informativno predavanje o Informativno predavanje o klaster raklaster računarimačunarima
Nataša Babačev / Igor JeremićNataša Babačev / Igor Jeremićmatematimatematički fakultetčki fakultet
•Message Passing Interface
•Rešavanje linearnih sistema jednačina velikih dimenzija
•Rešavanje Poissonove PDJ
![Page 2: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/2.jpg)
Klaster računar (multicomputer)Klaster računar (multicomputer)
![Page 3: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/3.jpg)
Kako ubrzati zahtevne proračuneKako ubrzati zahtevne proračune
Korišćenjem boljeg hardware-a Optimizacijom algoritama Korišćenjem distribuiranih računarskih sistema
![Page 4: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/4.jpg)
Murov zakonMurov zakon
Broj tranzistora na čipu udvostručava se svakih 18-24 meseca, površina čipa se ne može mnogo povećati, i napredak tehnologije zavisi od minijaturizacije, uskoro ćebiti dostignute fizičke granice minijaturizacije!!!
![Page 5: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/5.jpg)
Murov zakonMurov zakonRešenje problema!
Promena tehnologijeKvantni računariBiohemijski i DNK zasnovani nanoračunariMehanički nanoračunari
Paralelizacija već postojećih računarskih sistema(može se iskoristiti i na računarima novih tehnologija)
![Page 6: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/6.jpg)
Klaster računarKlaster računarKlaster računar predstavlja grupu povezanih autonomnih računara koji rade zajedno kao jedan paralelni računar
Labavo vezan višeprocesorski sistem Svaki računar u mreži može imati više procesoraRačunari mogu deliti isti disk prostor (NFS)Distribuirana MemorijaOS: LiNUX + software Beowulf (oba su besplatna)Skalabilnost celog sistemaOtkazivanjem nekog čvora ne dolazi do pada sistema
![Page 7: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/7.jpg)
Klaster u odnosu na druge sistemeKlaster u odnosu na druge sisteme
mainframemainframe
![Page 8: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/8.jpg)
Klaster u odnosu na druge sistemeKlaster u odnosu na druge sisteme
Vector supercomputerVector supercomputer
![Page 9: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/9.jpg)
Klaster u odnosu na druge sistemeKlaster u odnosu na druge sisteme
mini computermini computer
![Page 10: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/10.jpg)
Klaster u odnosu na druge sistemeKlaster u odnosu na druge sisteme
workstationworkstation
![Page 11: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/11.jpg)
Klaster u odnosu na druge sistemeKlaster u odnosu na druge sisteme
PCPC
![Page 12: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/12.jpg)
Klaster u odnosu na druge sistemeKlaster u odnosu na druge sisteme
KlasterKlaster (multicomputer) (multicomputer)
![Page 13: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/13.jpg)
KLASTER
Otkazom jednog ili više čvorova sistem neće pasti
Čvorovi su PC računari koji su dosta jeftini
Nadogradnja i održavanje sistema je jeftinije
OS i osnovni software su besplatni
Rasformiranjem klastera dobijaju se računari koji se mogu koristiti u druge svrhe
Čvorovi se mogu koristiti i kao radne stanice dok su deo klaster računara
Mogu se iskoristiti vec postojeci racunarski resursi
MAINFRAME
Koncentrisano usko grlo Skup za nabavku i održavanje Tržište delova je usko, (sve se
nabavlja od proizvođača)
Klaster v.s. MainframeKlaster v.s. Mainframe
![Page 14: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/14.jpg)
Klaster računarKlaster računar
Dva najčešća razloga za korišćenje klaster računara su
•Poboljšanje performansi, paralelno izračunavanje
•Povećanje sigurnosti sistema (dva simetrična računara rade isti posao, u slučaju otkaza jednog računara sistem neće pasti)
![Page 15: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/15.jpg)
Mrežna komunikacijaMrežna komunikacija
М M M
P P P
...
Message Passing ModelMessage Passing Model
![Page 16: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/16.jpg)
MPI (Message Passing Interface)MPI (Message Passing Interface)
MPI predstavlja specifikaciju standarda biblioteke za rutina za razmenu poruka između čvorova klaster računaraMPI standard je definisan od strane “MPI Forum-a” http://www.mpi-forum.org/Razvijeno je više implementacija MPI standardaPodržani jezici su C, C++ i FORTRANMPICH je besplatna implementacija MPI standarda
![Page 17: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/17.jpg)
MPI standardMPI standard
Podržan je MIMD model paralelnog izračunavanja, takođe podržan je i SPMD modelOmogućava portabilnost kodaEfikasna implementacija na različitim arhitekturamaFunkcionalnost biblioteke Podrška za heterogene paralelne arhitekture
•Ne bavi se:•Učitavanjem procesa u procesore•Zamenom procesa tokom izvršavanja•Debagovanjem•Paralelnim upisom i ispisom podataka
![Page 18: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/18.jpg)
Struktura MPI programa (C++)Struktura MPI programa (C++)#include <iostream>#include <mpi.h>using namespace std;
int main(int argc, char **argv) {
MPI::Init(argc, argv); // inicijalizacija
int mojID = MPI::COMM_WORLD.Get_rank(); int brojProcesa = MPI::COMM_WORLD.Get_size();
if (mojID==0) { … // master process } else { … // slave process }
MPI::Finalize();}
![Page 19: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/19.jpg)
Prevođenje i pokretanje programaPrevođenje i pokretanje programa> cat hello.c#include <iostream>#include <mpi.h>using namespace std;
int main(int argc, char **argv) { MPI::Init(argc, argv); int mojID = MPI::COMM_WORLD.Get_rank(); int brojProcesa = MPI::COMM_WORLD.Get_size(); cout << "Pozdrav od procesa " << mojID << " od ukupno " << brojProcesa << " procesa" << endl; MPI::Finalize();}
> mpiCC hello.c –o hello
mpirun -machinefile mf -np 4 ./hello
Pozdrav od procesa 0 od ukupno 4 procesaPozdrav od procesa 1 od ukupno 4 procesaPozdrav od procesa 2 od ukupno 4 procesaPozdrav od procesa 3 od ukupno 4 procesa
![Page 20: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/20.jpg)
Osnovni parametri Osnovni parametri mpirunmpirun skripta skripta
-np X (X – broj čvorova na kome će se program paralelno pokrenuti, taj broj ne mora biti jednak broju računara u mreži ili ukupnom broju procesora)
-machinefile file (file – ime fajla u kome se nalazi spisak računara – čvorova klastera, ukoliko neki od tih čvorova imaju više procesora, potrebno je navesti i broj procesora za dati računar)
> cat mfn01n02n03n04n05n06n07n08
![Page 21: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/21.jpg)
Osnovne funkcijeOsnovne funkcije• MPI::Init(argc, argv) inicijalizuje proces koji će razmenjivati poruke sa drugim procesima, poziva se iz main() f-je i argumenti su mu argumenti main() f-je.
• MPI::Finalize() poziva se na kraju života procesa
• MPI::COMM_WORLD.Get_rank(); vraća identifikacioni broj procesa
• MPI::COMM_WORLD.Get_size(); vraća ukupan broj procesa koji učestvuju u izračunavanju (ovaj broj je fiksan, i zadaje se pri pokretanju programa kao parametar skripte mpirun)
![Page 22: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/22.jpg)
Međuprocesna komunikacijaMeđuprocesna komunikacija
• Direktna komunikacija između procesa (Point-to-point)• Sinhrona i Asinhrona komunikacija• Blocking & Nonblocking komunikacija• Kolektivna komunikacija• Sinhronizacija• Kolektivne operacije
![Page 23: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/23.jpg)
Point-to-point:Point-to-point: MPI_Send() MPI_Send()
• MPI::COMM_WORLD.Send (void *podatak, int dužina, MPI_Datatype tip, int dest, int tag)
• podatak – pokazivač na memorijsku lokaciju na kojoj se nalaze podaci za slanje• dužina – dužina podatka koji se šalje (dužina kao broj elemenata niza podatak a ne u bajtovima)• MPI_Datatype – tip podatka koji se šalje• dest – rang odredišnog procesa (primaoca)• tag – dodatni identifikator podatka
![Page 24: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/24.jpg)
Point-to-point:Point-to-point: MPI_Recv() MPI_Recv()
• MPI::COMM_WORLD.Recv (void *podatak, int dužina, MPI_Datatype tip, int src, int tag)
• podatak – pokazivač na memorijsku lokaciju na kojoj se nalaze podaci za slanje• dužina – dužina podatka koji se šalje (dužina kao broj elemenata niza podatak a ne u bajtovima)• MPI_Datatype – tip podatka koji se šalje• src – rang pošiljaoca• tag – dodatni identifikator podatka
![Page 25: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/25.jpg)
sinhrona / asinhrona komunikacijasinhrona / asinhrona komunikacija
Redosled pristizanja porukaodgovara redosledu slanja
Pristizanje poruka ne morabiti sinhronizovano sa slanjem
![Page 26: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/26.jpg)
blocking / non-blockingblocking / non-blocking
• BlockingFunkcija je blokirana dok poruka ne bude odaslata ili primljena
• Non-blockingFunkcija po slanju prepušta programu dalje izvršavanje, ne vodeći računa o tome da li je slanje poruke završeno
![Page 27: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/27.jpg)
Kolektivna komKolektivna komunikacijaunikacija
• Svi procesi u komunikatoru pozivaju funkciju
• Procesi nastavljaju rad tek kad svi izađu iz funkcije
• Nema oznake komunikacije (tag)• Tri tipa kolektivne komunikacije
![Page 28: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/28.jpg)
Broadcast, Scatter, Broadcast, Scatter, GatherGather
A
A B C D
A
A
A
A
A
B
C
D
Broadcast
Scatter
Gather
![Page 29: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/29.jpg)
Kolektivne operacijeKolektivne operacije
MPI::COMM_WORLD.Reduce (sendbuf,recvbuf,count,datatype,op,root)
• Računa rezultat podataka iz grupe procesa• Rezultat upisuje u recvbuf koji prima samo
proces root• Operacije (op):
• Globalni maksimum, minimum• Zbir, proizvod• Logičke operacije• Korisnički definisane (user-defined)
![Page 30: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/30.jpg)
A
B
C
D
ABCD
Reduce
Kolektivne operacije Kolektivne operacije Reduce()Reduce()
![Page 31: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/31.jpg)
MPI MPI (Tipovi podataka)(Tipovi podataka)
MPI Datatype C datatype
MPI_CHAR signed char
MPI_SHORT signed short int
MPI_INT signed int
MPI_LONG signed long int
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short int
MPI_UNSIGNED_INT unsigned int
MPI_UNSIGNED_LONG unsigned long int
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
MPI_BYTE
MPI_PACKED
![Page 32: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/32.jpg)
Analiza pre kodiranjaAnaliza pre kodiranjaPre pisanja paralelnog programa potrebno je:Pre pisanja paralelnog programa potrebno je:
•U potpunosti razumeti sekvencijalno rešenje problema•Izvršiti analizu različitih algoritamskih strategija•Uporediti model deljene memorije (npr. pthreads, open-MP,...) ili model distribuirane memorije (MPI)•Uporediti razne tipove komunikacija
![Page 33: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/33.jpg)
Svarog.etf.bg.ac.yuSvarog.etf.bg.ac.yu
Svarog je Klaster računar ETF-a na kome će biti demonstrirani primeri MPI programa
Računar se sastoji od 8 čvorova (DELL PowerEdge SC500 (Pentium III, 512KB Cache, 1GHz, 512MB SDRAM, 20GB HDD)
+ MASTER NODE ( DELL PowerEdge 2500 (Pentium III, 256KB cache, 1GHz, 1GB SDRAM, 54GB HDD)...
(Myricom Switch) + gomila kablova!
![Page 34: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/34.jpg)
Svarog.etf.bg.ac.yuSvarog.etf.bg.ac.yu
![Page 35: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/35.jpg)
Svarog.etf.bg.ac.yuSvarog.etf.bg.ac.yu
![Page 36: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/36.jpg)
Distribuirana matricaDistribuirana matricaclass distrGustaMatrica : public gustaMatrica {…. public:…. void MPI_Send(unsigned destination) const; void MPI_Recv(unsigned source); void MPI_Bcast(unsigned rank);….};
![Page 37: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/37.jpg)
Direktna metoda – KramerDirektna metoda – Kramer•Složenost O(n3) – primer je nerealan!•Nije primenljiva za velike sisteme •Dobar primer za kolektivnu komunikaciju
Ideja algoritma:
•Master proces učitava ili generiše sistem jednačina•Broadcast metodom šalje matricu sistema i slobodan vektor svim nodovima•Slave procesi primaju matricu sistema i slobodan vektor i čekaju komande•Master javlja slave procesima koje determinante da računaju•Master i sam računa neke od determinanti•Slave vraćaju izračunate rezultate•Master skuplja rezultate i tumači ih (deli dobijene rezultate sa determinantom sistema)
![Page 38: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/38.jpg)
Kramer – main()Kramer – main()int main(int argc, char **argv) { try { MPI::Init(argc,argv); int rank,size;
rank=MPI::COMM_WORLD.Get_rank(); size=MPI::COMM_WORLD.Get_size(); if (rank==0) master(size,size_n); else slave(rank);
MPI::Finalize(); } catch( int err ) { cerr << "ERROR!! " << err << endl; }}
![Page 39: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/39.jpg)
Kramer – master()Kramer – master()
bool master(unsigned np,unsigned n) {
BROADCAST // posalji matricu sistema i slobodan vektor
processor=1 for (int i=-1;i<int(n);i++) { // -1 oznacava racunanje det sistema
SEND // slave procesu (procesor) redni broj kolone koja // se menja slobodnim vektorom
processor++ // promena slave() procesa if (processor==np) { // kada se svi slave() procesi zaposle master() proces moze // izracunati jednu iteraciju i++; // preskace se iteracija (jer je racuna master) if (i==n) // ukoliko su sve det izracunate izadji iz petlje break; …
1/21/2
![Page 40: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/40.jpg)
Kramer – master()Kramer – master()…. A.izvadiKolonu(i,tmp); // zamena kolone i racunanje determ. A.zameniKolonu(i,b); determinante[iter]=determinanta(A); jednacine[iter]=i; iter++; A.zameniKolonu(i,tmp); processor=1; } } ….
// MASTER SALJE SVIM SLAVE PROCESIMA SIGNAL TERMINATE … // MASTER PRIKUPLJA PODATKE OD SLAVE PROCESA … // DELJENJEM SA DETERMINANTOM SISTEMA DOBIJA RESENJA // SISTEMA } } ….} // master()
2/22/2
![Page 41: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/41.jpg)
Kramer – slave()Kramer – slave()void slave(unsigned rank) {
BROADCAST METODOM PRIMA PODATKE OD MASTER PROCESA
while ( true ) {
// u beskonacnoj petlji prima komande od master procesa // o koloni koju treba da obradi
RECIVE
if (jednacina==TERMINATE) // slucaj kada se prekida slave() break;
if (jednacina==-1) { // slucaj racunanja det. sistema … } else {
1/21/2
![Page 42: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/42.jpg)
Kramer – slave()Kramer – slave()… // zamenjuje zadatu kolonu u matrici sistema i racuna // determinantu tako modifikovane matrice …
} // else
} // while()
// Vraca rezultate MASTER procesu
MPI::COMM_WORLD.Send( &iter, 1, MPI::UNSIGNED, 0, 0); MPI::COMM_WORLD.Send( determinante, iter, MPI_T, 0, 0); MPI::COMM_WORLD.Send( jednacine, iter, MPI::UNSIGNED, 0, 0); } // slave()
2/22/2
![Page 43: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/43.jpg)
![Page 44: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/44.jpg)
Jakobijev iterativni metodJakobijev iterativni metod•Dovoljan uslov konvergencije ove metode je dijagonalna dominantnost matrice sistema
Ideja algoritma:
•Master proces učitava ili generiše sistem jednačina•Master priprema svoj deo matrice za iterativni postupak•Master šalje komandu slave procesima da izračunaju normu svog dela distribuirane matrice•Master računa normu svog dela matrice•Master prima odgovore, poredi rezultate i računa konačnu normu matrice, na osnovu koje dobija kriterijum zaustavljanja•Master u for petlji šalje komande slave procesima da rade iteracije nad svojim delom matrice, i sam radi iteraciju nad svojim delom matrice•Master skuplja rezultate i poredi uzastopne iteracije•Slave analizira komande Master-a i izvršava ih
![Page 45: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/45.jpg)
JacobiJacobi – master() – master()bool master(unsigned np, unsigned size_n, unsigned size_m) {
UCITAVA ILI GENERISE MATRICU, DELI JE NA POTREBAN BROJ DELOVA
SALJE DELOVE MATRICE SLAVE() PROCESA
PRIPREMA SVOJ DEO MATRICE ZA ITERATIVNI POSTUPAK
SALJE KOMANDU SLAVE() PROCESIMA DA RACUNAJU NORMU SVOG DELA MATRICE
SAM RACUNA NORMU SVOG DELA MATRICE
POREDI IZRACUNATE NORME I ODREDJUJE KRITERIJUM ZAUSTAVLJANJA…
1/21/2
![Page 46: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/46.jpg)
JacobiJacobi – master() – master()… ITERIRA DO MAXITER (ILI DOK NIJE ISPUNJEN KRITERIJUM ZAUSTAVLJANJA)
for (iter=0; iter<MAXITER; iter++ ) {
SALJE KOMANDU SLAVE PROCESIMA DA RACUNAJU ITERACIJU sendCommand(CMD_ITERACIJA, np);
ČUVA PODATKE PRETHODNE ITERACIJE
SKUPLJA IZRAČUNATE PODATKE
PROVERAVA DA LI JE ISPUNJEN KRITERIJUM ZAUSTAVLJANJA I UKOLIKO JE POTREBNO IZLAZI IZ ITERATIVNE PETLJE
} // for iter
ŠALJE KOMANDU TERMINATE SVIM SLAVE() PROCESIMA sendCommand(CMD_TERMINATE_PROCESS,np);} // master() 2/22/2
![Page 47: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/47.jpg)
JacobiJacobi – slave() – slave()void slave(unsigned rank) {
RECV – PRIMA SVOJ DEO MATRICE
PRIPREMA SVOJ DEO MATRICE ZA JAKOBIJEV POSTUPAK
PETLJA SE VRTI SVE DOK SLAVE() NE PRIMI KOMANDU TERMINATE while ( !terminate ) { RECV - PRIMA KOMANDU
switch (COMMAND) { // ANALIZA KOMANDE case CMD_ITERACIJA: IZVRŠI ITERACIJU
case CMD_NORMA_REDOVA: IZRAČUNAJ NORMU…
1/21/2
![Page 48: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/48.jpg)
JacobiJacobi – slave() – slave()
2/22/2
… case CMD_PRINT: ŠTAMPAJ DEO MATRICE case CMD_TERMINATE_PROCESS: PREKINI PROCES ČEKANJA NOVIH KOMANDI terminate=true;
} // switch } // while}
![Page 49: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/49.jpg)
![Page 50: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/50.jpg)
![Page 51: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/51.jpg)
Prethodna merenja izvršena su na računaru geowulf.engr.ucdavis.edu sa čvorovima sledećih karakteristika:7 x (Intel Pentium II, 400 Mhz, 512 KB cache, 794 mips / 128 Mb RAM).
![Page 52: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/52.jpg)
Jacobi – posix threadsJacobi – posix threadsDruga implementacija Jacobi-jeve iterativne metode urađena je za paralelne sisteme sa čvrsto vezanim procesorima korišćenjem pthread biblioteke
Princip korišćen u ovoj implementaciji je efikasniji ali je ograničen na sisteme sa čvrsto vezanim procesorima, koji podatke razmenjuju putem deljene memorije
![Page 53: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/53.jpg)
Jacobi – pthreadsJacobi – pthreads•Program kreira dve vrste niti koje rade po istom principu (prvi set niti priprema sistem jednačina za Jacobi-jev postupak, dok drugi set niti vrši iteracije)•Iteracija se deli na potreban broj niti, ta podela nije stroga niti kontrolisana•Svaka iteracija inicijalizuje potreban broj niti•Svaka od niti obrađuje prvu slobodnu jednačinu iz sistema (prvi slobodan red za obradu) sve dok svi redovi ne budu procesirani, čime se završava iteracija
![Page 54: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/54.jpg)
Jacobi – pthreads – iteracija()Jacobi – pthreads – iteracija()
11/2/2
void iteracija(unsigned num_of_threads) {
INICIJALIZACIJA NITI KOJE VRŠE ITERACIJU! DETACHSTATE SE POSTAVLJA NA JOINABLE
pthread_attr_init (&attr); pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_JOINABLE); pthread_mutex_init (&mutex_red, NULL);
....
POPUNJAVANJE VEKTORA KOJI SE PROSLEDJUJE KAO ARGUMENT
RED ZA OBRADU SE INICIJALIZUJE NA 0 redZaObradu = 0; // pocinje se od 0-tog reda brojRedova = A.visina(); // za ukupno A.visina() reda
...
![Page 55: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/55.jpg)
Jacobi – pthreads – iteracija()Jacobi – pthreads – iteracija()
22/2/2
... INSTANCIRA SE POTREBAN BROJ NITI for (t = 0; t < num_of_threads; t++) { args[t].nitID = t; if ((rc=pthread_create(&niti[t],&attr,thrJacobiObradi,(void *)&args[t]))) { cerr << "pthread_create() greska broj: " << rc << endl; throw PTHREAD_GRESKA; } }... SKUPLJAJU SE NITI (JOINABLE) ČEKA SE DA SVE NITI ZAVRŠE SVOJ POSAO
for (t = 0; t < num_of_threads; t++) { if ((rc = pthread_join (niti[t], (void **) &status))) { cerr << "pthread_join() greska broj: " << rc << endl; throw PTHREAD_GRESKA; } }}
![Page 56: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/56.jpg)
Jacobi – pthreads – nitJacobi – pthreads – nit
11/2/2
void * thrJacobiObradi(void *voidargs) {
ULAZAK U BESKONACNU PETLJU U KOJOJ SE ITERATIVNIM POSTUPKOM OBRADJUJU REDOVI JEDNAČINE KOJI SU NA REDU ZA OBRADU
while( true ) {
pthread_mutex_lock(&mutex_red); // !!! KRITIČNA SEKCIJA !!! t=redZaObradu; // RED ZA OBRADU SE redZaObradu++; // OGRAĐUJE MUTEX pthread_mutex_unlock(&mutex_red); // PROMENLJIVOM
UKOLIKO SU SVI REDOVI OBRAĐENI PROCES SE PREKIDA
VRŠI SE ITERACIJA ZA TEKUĆI RED...
![Page 57: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/57.jpg)
Jacobi – pthreads – nitJacobi – pthreads – nit
22/2/2
...
ITERACIJA PO SIRINI MATRICE A
for (unsigned i=0;i<n;i++) { sum+=y[offset+i]*A.get(i,t); // na sumu se dodaje stara vrednost za x } sum+=b.get(k,t); // na kraju se na sumu dodaje vrednost iz b x->set(k,t,sum); // na x se postavlja novoizracunata vrednost...
} // while
ZAVRŠETAK RADA NITI pthread_exit (NULL);}
![Page 58: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/58.jpg)
Jacobi – pthreads - rezultatiJacobi – pthreads - rezultati
Merenje je izvršeno na računaru sokocalo.engr.ucdavis.edu
sa procesorima navedenih karakteristika:2 x (AMD Athlon MP 2400+, 2 Ghz, 256 KB cache, 3948 mips).2Gb RAM
![Page 59: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/59.jpg)
PPoioisson-ova PDJsson-ova PDJ
),(),(),(
),(2
2
2
2
yxfx
yxu
x
yxuyxu
cyxu ),(
![Page 60: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/60.jpg)
PoPoiisson-ova PDJsson-ova PDJ
Diskretizacija domena metodom konačnih razlika
Sistem linearnih jednačina sa petodijagonalnom matricom
Ne koristi se to što je matrica retkaRešavanje iterativnim metodama
Jacobi, Gauss-Seidel
![Page 61: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/61.jpg)
Paralelizacija rešenjaDekompozicija domenaSvaki proces rešava poddomenKomunikacija između susednih
procesa
PoPoiisson-ova PDJsson-ova PDJ
![Page 62: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/62.jpg)
PoPoiisson-ova PDJsson-ova PDJ
unutrašnja vrednostgranična vrednostvirtualna granična vrednost
![Page 63: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/63.jpg)
iniciraj n procesainiciraj poddomene i granične uslovewhile it<itmax and glob_tacnost(it)>eps do jedna iteracija GS ili Jakobi razmeni granicne vrednosti sa susedima izračunaj tacnost(it) za svaki poddomen prosledi tacnost glavnom procesu if proc_id = main_proc_id then izračunaj glob_tacnost(it) end if prosledi svima glob_tacnost(it)end while
PoPoiisson-ova PDJsson-ova PDJ
![Page 64: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/64.jpg)
cluster@homecluster@home•Downloadovati i instalirati MPI bibilioteke
mpich download! http://www-unix.mcs.anl.gov/mpi/mpich/download.html
> cat ~/.rhostslocalhost username
> cat /etc/inetd | grep rshdshell stream tcp nowait root /usr/sbin/tcpd in.rshd -Lshell stream tcp nowait root /usr/sbin/tcpd in.rshd –aL
> cat mf0.0.0.0
pokrenuti inetd (kao root korisnik)
> rsh 0.0.0.0 pwd/home/jwork
> mpirun -machinefile mf -np 4 ./helloPozdrav od procesa 0 od ukupno 4 procesaPozdrav od procesa 1 od ukupno 4 procesaPozdrav od procesa 2 od ukupno 4 procesaPozdrav od procesa 3 od ukupno 4 procesa
![Page 65: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/65.jpg)
PrimenePrimene
Intenzivna numerička izračunavanja Baze podataka
Pretraživanje interneta (npr. google) Računarska grafika
renderovanje specijalnih efekata u filmovima Ekonomija: simulacije tržišta kapitala Meterologija Komunikacije: planiranje avio-saobraćaja Tehničke discipline (građevinarstvo, mašinstvo, ...) Mehanika Biologija Astronomija, Astrofizika ...
![Page 66: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/66.jpg)
projekti:projekti: seti@home seti@home
seti@home je veliki klaster (sačinjen od nekoliko milionaračunara širom celog sveta) koji analizira signale dobijene odArecibo radio teleskopa, razvijen je na U.C. Berkeley
![Page 67: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/67.jpg)
![Page 68: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/68.jpg)
![Page 69: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/69.jpg)
![Page 70: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/70.jpg)
![Page 71: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/71.jpg)
WebWeb http://www.mpi-forum.org/ http://www-unix.mcs.anl.gov/mpi/mpich/ http://setiathome2.ssl.berkeley.edu/ http://www.stanford.edu/group/pandegroup/folding/ http://www.stanford.edu/group/pandegroup/genome/ http://www.mosix.org/ http://www.beowulf.org/
http://www.jwork.net/mpi http://www.matf.bg.ac.yu/~dradun/mpi http://www.informatika.com/svarog-beowulf.htm
[email protected]@jwork.net
![Page 72: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet](https://reader033.vdocuments.pub/reader033/viewer/2022050909/56815939550346895dc67521/html5/thumbnails/72.jpg)
LiNUX insideLiNUX inside