informativno predavanje o klaster ra čunarima nataša babačev / igor jeremić matemati čki...

72
Informativno predavanje o Informativno predavanje o klaster ra klaster ra čunarima čunarima Nataša Babačev / Igor Jeremić Nataša Babačev / Igor Jeremić matemati matemati čki fakultet čki fakultet Message Passing Interface Rešavanje linearnih sistema jednačina velikih dimenzija Rešavanje Poissonove PDJ

Upload: garan

Post on 02-Feb-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet. Message Passing Interface Rešavanje linearnih sistema jednačina velikih dimenzija Rešavanje Poi s sonove PDJ. Klaster računar (multicomputer). Kako ubrzati zahtevne proračune. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 44: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet

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

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

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

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

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
Page 50: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet
Page 51: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 68: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet
Page 69: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet
Page 70: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet
Page 71: Informativno predavanje o klaster ra čunarima Nataša Babačev / Igor Jeremić matemati čki fakultet

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

LiNUX insideLiNUX inside