Professional Documents
Culture Documents
Predavanje 1
- Raznorodnost (heterogeneity)
- Kašnjenje/prikrivenost (latency)
- Udaljena memorija nasuprot lokalnoj memoriji
- Sinkronizacija – istovremeno (concurrent) međudjelovanje normalno
- Djelomični kvarovi/pogreške – aplikacije se trebaju prilagoditi parcijalnim
ispadima/kvarovima dijelova sustava
- Potrebe za otvorenošću (openness) – Otvoreni standardi: ključna sučelja u
programskoj podršci i komunikacijskim protokolima trebaju biti standardizirana
- Sigurnost (security)- odbijanje napada na razini usluga; mobilni kodovi
- Nadogradivost/proširivost (scalability)
- Transparetnost (transparency)
- Proizvoljne pogreške
o Stop pogreška – proces staje i ostaje zaustavljen. Ostali procesi mogu otkriti
to stanje.
o Ispad (chrash) – proces staje i ostaje zaustavljen. Ostali procesi ne mogu
otkriti to stanje pogreške.
o Propust (omission) – Poruka ubačena u spremnik odlaznih poruka nikad ne
stiže na drugu stranu, odnosno spremnik dolaznih poruka.
o Send-omission – proces zavsršava send ali poruka nije stavljena u odlazni
spremnik poruka.
o Receive-omission – Poruka je stavljena u spremnik procesovih dolaznih
poruka ali je proces ne prima.
o Proizvoljna – Proces/kanal proizvoljno se ponaša: može slati/prenositi
proizvoljne poruke u proizvoljnom vremenu, nadzirati propuste; proces
može stati ili poduzeti neispravan korak.
- Vremenske pogreške
Aplikacija koja se sastoji od skupa procesa koji su raspodjeljeni po mreži računala i rade
zajedno kao postrojenje za rješavanje zajedničkog problema.
Višeračunalni sustavi
U P2P paradigmi, procesi koji sudjeluju igraju jednake uloge, s jednakim mogućnostima
i odgovornostima (izraz 'peer' - ravnopravan). Svaki sudionik može uputiti zahtjev
drugom i primiti odziv.
16. Ukratko objasnite i usporedite point-to-point i publish/subscribe modele poruka
Remote Procedure Call (RPC) model omogućava takvu apstraktnost. U tom modelu, IPC
odvija se kao procedura, ili funkcija, poziv, koji su bliski programerima aplikacija.
RPC zahtjeva dva nezavisna procesa, koji mogu ostati na odvojenim strojevima. Ako
proces, A želi poslati zahtjev prema drugom procesoru, B, izdaje poziv procedure prema
B, a uz poziv prosljeđuje listu s vrijednostima argumenata. Kao u kod LPC (Local Procedure
Calls) poziv udaljene procedure okida preddefinirani zahvat u proceduri omogućenoj od
procesa B. Nakon završetka procedure, proces B vraća vrijednost procesu A.
RPC omogućava programerima izgradnju mrežnih aplikacija koristeći programska načela
slična LPC, dajući potrebnu apstraktnost IPC i sinkronizaciji događaja.
Aplikacija izdaje zahtjeve prema object request broker (ORB), koji ih usmjerava prema
odgovarajućem objektu koji omogućava traženu uslugu.
Bliska je RMI modelu u pristupu udaljenim objektima, ali object request broker radi kao
posrednički sloj koji aplikaciji dozvoljava mogući višestruki pristup udaljenim ili lokalnim
objektima.
Broker zatjeva također može raditi kaoposrednik prema raznorodnim objektima,
omogućavajući međudjelovanje među objektima koristeći razne Apije ili se pokrećući na
raznim platformama.
Ova paradigma osnova je Object Management Group's CORBA (Common Object Request
Broker Architecture) arhitekture.
Davatelj usluge smješta objekte kao djelove prostora objekta, a tražitelji koji su pretplaćeni
na proistorm pripadaju tim entitetima.
Kao dodatak apstarkcijama koje omogućavaju druge paradigme, ova paradigma omogućava
virtualni prostor ili sobu za sastanke između davanja i zahtjevanja mrežnih resursa ili
objekata. Ta apstrakcija sakriva sve detalje vezane za specificiranje resursa i objekata, kao
što su RMI, ORB ili mrežne usluge. Ovu mogućnost ima JavaSpaces.
Predavanje 3
Prednosti :
- Niti obično dijele adresni prostor – izmjene okoline za niti na jednom procesu je
'jeftina'
- Višenitni proces može se izvoditi transparetno na jednom procesoru ili na
višeprocesorskom susutavu
- Niti koje surađuju mogu biti prirodni strukturni mehanizam nekih aplikacija
- Implementiranje niti treba omogućiti samo obuhvaćenoj niti blokiranja sustavskog
poziva
Nedostaci:
Predavanja 4
TCP omogućava pouzdan poredani prijenos bajta ('pipe' između klijenta i poslužitelja)
UDP omogućava nepouzdani prijenos grupa bajta ('datagrams') između klijenta i poslužitelja
Tri uzorka
Request-reply
Publish-subscribe
Pipeline
Predavanja 5
36. Ukratko objasnite cemu služe i kako se koriste raspodijeljene hash tablice
Svaka domena ima pridruženi direktorijski čvor. Domena gornje razine predstavlja
cijelu mrežu. Svaka domena podijeljena je u višestruke manje domene, dok se čvorna
domena kreira (npr. LAN).
Svaki entitet ima zaspis u svakom nasljedniku u stablu domene (sve do korjena). Entitet
ima višestruke adrese, pa tako i višestruke pokazivače u različitim čvorovima domena.
Traženje položaja u hijerahijski organiziranim lokacijskim uslugama zahtjeva
pretraživanje prema gore u stablu sve dok se ne dosegne zapis tog entiteta. Kad se prođe,
pokazivači se slijede dolje do položaja entiteta.
Ubacivanjem druge kopije entiteta E rezultira pretraživanjem prema gore s ciljem
pronalaska prvog referenciranog na E. Kad je pronađen, taj čvor se osvježava, sa svim
čvorovima prema dolje u stablu. Brisanja se slično mogu obavljati, udaljavanjem od
čvora prema korjenu stabla.
S obzirom da entitet može biti mobilan, potrebno je imati način pronalaska trenutnog na
temelju starog položaja. Proslijeđivanje pokazivača stvara povezanu listu koristeći
(klijentsku i poslužiteljsku krajnju točku) informacije. Ako se entitet miče s položaja A na
položaj B, on u A ostavlja referencu na novu adresu.
Domaća (home) lokacija uvijek zadržava trag trenutne lokacije entiteta. Ako entitet nije na
kućnoj lokaciji, poruka je preusmjerena na trenutnu lokaciju i trenutna lokacija poslana je
klijentu za sljedeće poruke. [Mobile IP]
Predavanja 6
Potrebno je odrediti način pridruživanja vremena C(a) (za događaj a), pri čemu je a
b tada C(a)<C(b). Uz to, vrijeme sata C može se samo pomaknuti unaprijed.
43. Usporedite prema bitnim pokazateljima tri algoritma međusobnog isključivanja.
Centralizirani algoritam:
Ako npr. proces 1 pita koordinatora za dozvolu pristupa kritičnom odsječku, on mu je
daje. I ako tada proces 2 pita za dozvolu pristupa istom kritičnom odsječku, koordinator
mu ne odgovara. Tek kada proces 1 izađe iz kritičnog odsječka, govori koordinatoru,
koji tada odgovara procesu 2.
Ricart/Agrawala:
Ako dva procesa, npr. 0 i 2, žele pristup istom kritičnom odsječku u istom trenutku,
proces koji ima najmanju vremensku oznaku pobjeđuje(u ovom slučaju to je 0). Kada 0
odradi, on šalje OK drugom procesu(2), pa 2 može ući u kritični odsječak.
Token Rings:
Algoritam radi prosljeđivanje oznaka po prstenu. Kada proces ima oznaku, on odlučuje
treba li pristup resursima u to vrijeme. Ako treba, zadržava oznaku dok to ne obavi, a
onda ga prosljeđuje. Problemi ako se oznaka izgubi – teško za utvrditi.
Predavanja 7
- Sintaksno:
o Udaljeni objekt deklariran je s remote interface, ekstenzijom Java interface-
a
o Remote interface implementirano je object server-om
o Object client pristupa objektu pozivajući udaljene metode pridružene
objektu sintaksom omogućenom za RMI
- API za Java RMI
o Remote Interface (Java Remote class)
o SW na strani poslužitelja (omogućava metode sučelja na raspodjeljeni
objekt)
▪ The Remote Interface Implementation
▪ Stub and Skeleton Generations (Java SDK: RMI compiler mic)
▪ The Object Server (klasa čiji kod instancira i isporučuje objekt
implementiranja udaljenog sučelja)
o SW na strani klijenta
Predavanje 8
o Zajednička memorija
▪ Svi procesori/zadaci dijele isti memorijski spremnik, gdje je čitanje
i pisanje asikrono (razlika od računalnog modela!)
▪ Moguća uporaba (pseudo-) nedeterminističkih algoritama
▪ Potrebni eksplicitni mehanizmi zaštite memorije (semafori i sl.)
▪ Jednostavnije programiranje – manja razlika od slijednog modela
algoritma
o Sustav zadataka i kanala
▪ Sustav zadataka i kanala (tasks and channels) prikazuje se
usmjerenim grafom u kojemu se čvorovi zadaci (koji se mogu
izvoditi paralelno i neovisno jedan o drugome) a veze su kanali
kojima zadaci komuniciraju
▪ Broj zadataka može se mijenjati tokom izvođenja
▪ Poopćenje modela komunikacije porukama
Potencijalno ubrzanje definirano je onim udjelom (P, P=[0,1]) slijednog programa koji
59. navedite osnovne značcajke nakupina računala te ukratko opišite barem 3 vrste
od njih.
64. Navedite datoteke zaglavlja koje moraju biti uključene u programskom kodu
koji koristi MPI biblioteku, te u programskom kodu koji koristi Open MP
biblioteku.
OpenMP - #include <omp.h>
65. Napišite i ukratko objasnite dvije osnovne funkcije koje se moraju nalaziti u
svakom MPI programu u kojem će se koristiti MPI pozivi
int MPI_Finalize ()
prva funkcija mora biti prije svake MPI komunikacije, dok se druga nalazi na kraju
- MPI_CHAR; MPI_SHORT;
- MPI_INT;
- MPI:LONG;
- MPI_UNSIGNED – sve varijante MPI_FLOAT;
- MPI_DOUBLE...
Parametri su:
• Buf je početna adresa podataka u memoriji koji se šalju, odnosno primaju.
• Count je broj jedinica podataka (duljina niza).
• Datatype je odgovarajući MPI tip podataka.
• Dest i source određuju indeks (rank) procesa pošiljatelja i primatelja.
• Tag je oznaka vrste poruke, comm je oznaka komunikatora unutar koga se
komunikacija odvija.
• Umjesto status varijable u ove funkcije dodan je parametar request pomoću
kojeg se ispituje završetak funkcije.
MPI_Isend - završava kada se izlazni međuspremnik može ponovno iskoristiti.
MPI_Irecv - završava kada se ulazni međuspremnik može koristiti (podaci upisani).
69. Navedite i ukrtko objasnite osnovne tipove kolektivne međuprocesne
komunikacije
Int MPI_Scatter (void * sendbuf, int sendcnt, MPI_Datatype sendtype, void * recvbuf, int
recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm);
Int MPI_Gather (void * sendbuf, int sendcnt, MPI_Datatype sendtype, void * recvbuf, int
recvcnt, MPI_Datatype recvtype, int root, MPI_COMM comm);
Funkcija Scatter raspodijeljuje po jedan dio niza (pohranjen u sendbuf na procesu root)
svakom od procesa (na adresu recvbuf). Vrsta podataka i broj elemenata određeni su sa
sendtype i sendcnt, recvtype i recvcnt su obično jednaki. Funkcija Gather prikuplja određeni
dio niza od svih procesa (pohranjen u sendbuf na svim procesima) i sprema ih u recvbuf na
root.
Funkcija šalje isti podatak svim procesima u definiranom komunikatoru; izvršni proces
označen je parametrom root (indeks procesa).
Parametar buffer se kod procesa root čita dok se kod ostalih u njega upisuju podaci.
Count je broj jedinica podataka (duljina niza).
Datatype je odgovarajući MPI tip podataka.
comm je oznaka komunikatora unutar koga se komunikacija odvija.
Za sve procese koji pozivaju funkciju vrijedi da niti jedan neće nastaviti sa radom dok je svi
procesi ne pozovu. Obično se sinhronizacija među porukama ppostiže upotrebom oznaka i
komunikatora, no ako je potrebno može se upotrijebiti i navedena funkcija.
Funkcija reduce skuplja podatke od svih procesora (s adrese sendbuf, duljine count) ali
ujedno nad njima provodi neku operaciju (definiranu s op parametrom) i rezultat sprema
na adresu recvbuf na procesu root.
73. Kojom Mpi funkcijom ćete dohvatiti broj procesa na kojima je program pokrenut
i rang procesa na kojem se izvršava kod?
Predavanje 9.
75. navedite osnovne elemente Open MP programske okoline.
Funkcija omp_get_num_procs
• Vraca broj fizicki raspoloživih procesora za paralelni program int
omp_get_num_procs (void)
Funkcija omp_set_num_threads
• Koristi vrijednost parametra za postavljanje broja niti aktivnih u paralelnim
dijelovima (sections) koda
• Može se pozivati u više tocaka programa void omp_set_num_threads (int t)
private clause
• clause: opcijska, dodatna komponenta pragma (klauzula)
• private, shared, default, firstprivate, lastprivate, reduction
• private clause: govori prevoditelju da jednu ili više varijabli
ucini privatnima u odnosu na druge niti
private ( <variable list> )
• Primjer
#pragma omp parallel for private(j)
for (i = 0; i < BLOCK_SIZE(id,p,n); i++)
for (j = 0; j < n; j++)
a[i][j] = MIN(a[i][j],a[i][k]+tmp);
firstprivate clause
• Kreira inicijalne vrijednosti varijabli (nadzire master nit u petlji)
• Varijable inicijalizirane jednom po niti, a ne po ponavljanju petlje
lastprivate clause
• Slijedno zadnja iteracija u petlji
• lastprivate clause: koristi se za kopiranje natrag u master nit
critical pragma
Sinkronizacija: critical, atomic, ordered, barrier, nowait.
• Kriticni odsjecak: dio koda koji u nekom vremenu može izvesti samo nit
• Oznacavamo ga dodavanjem pragma prije bloka C koda
#pragma omp critical
79. Objasnite mogućnost redukcije (reduce)u Open MP i pokažite primjer
korištenja.
Komadici (chunks)
•Komadic je neprekidan raspon ponavljanja
• Povecanje velicine komadica smanjuje opterecenje i može povecati tzv. cache hit
rate
• Smanjenje velicine komadica omogućuje bolje uravnoteženje opterećenja
Opcije
• schedule(static): blokira alociranje neprekidnih iteracija za svaku petlju
• schedule(static,C): umetnuto alociranje komadica duljine C na niti
• schedule(dynamic): dinamičko one-at-a-time alociranje iteracija nitima
• schedule(dynamic,C): dinamičko alociranje C iteracija odjednom prema nitima
•schedule(guided,C): dinamičko alociranje komadica zadacima koristeći vođeno
samoraspoređivanje. Početni komadici su veći, kasnije manji, a konačno minimalno
velicineC.
• schedule(guided): vođeno samoraspoređivanje s minimalnom veličinom komadica 1
• schedule(runtime): raspored izabran tijekom izvođenja na temelju vrijednosti
OMP_SCHEDULE; Unix primjer: setenv OMP_SCHEDULE “static,1”
81. objasnite i na primjeru pokažite uporabu smjernica parallel, for, single, mowait
i sections.
parallel pragma
• parallel pragma prethodi bloku koda koji izvode sve niti
• Pri tome je izvođenje replicirano među svim nitima
• Upotreba parallel Pragma
#pragma omp parallel private(task_ptr)
{
task_ptr = get_next_task (&job_ptr);
while (task_ptr != NULL) {
complete_task (task_ptr);
task_ptr = get_next_task (&job_ptr);
}
}
For pragma
• parallel pragma instruira svaku nit da izvodi cijeli kod unutar bloka
• Ako for petlju dijelimo među nitima, koristimo for pragma
#pragma omp for
#pragma omp parallel private(i,j)
for (i = 0; i < m; i++) {
low = a[i];
high = b[i];
if (low > high) {
printf ("Exiting (%d)\n", i);
break;}
#pragma omp for
for (j = low; j < high; j++)
c[j] = (c[j] - a[i])/b[i];
}
single pragma
• Pretpostavimo da samo jednom želimo vidjeti izlaz
• single pragma nalaže prevoditelju da samo jedna nit treba izvoditi blok koda koji
prethodi pragmi
• Sintaksa:
#pragma omp single
#pragma omp parallel private(i,j)
for (i = 0; i < m; i++) {
low = a[i];
high = b[i];
if (low > high) {
#pragma omp single
printf ("Exiting (%d)\n", i);
break;
}
#pragma omp for
for (j = low; j < high; j++)
c[j] = (c[j] - a[i])/b[i];
}
nowait clause
• Prevoditelj stavlja sinkronizaciju barijerom na kraju svakog paralelnog izraza
• U primjeru je to nužno: ako nit napušta petlju i mijenja low ili high, to može utjecati
na drugu petlju
• Ako su to privatne varijable, u redu je ako je petlja pomakne naprijed i smanji
vrijeme izvođenja.
#pragma omp parallel private(i,j,low,high)
for (i = 0; i < m; i++) {
low = a[i];
high = b[i];
if (low > high) {
#pragma omp single
printf ("Exiting (%d)\n", i);
break;
}
#pragma omp for nowait
for (j = low; j < high; j++)
c[j] = (c[j] - a[i])/b[i];
}
section pragma
• Dodjeljuje uzastopne, ali nezavisne blokove koda razlicitim nitima
• Prethodi svakom bloku koda unutar obuhvacenog kojem prethodi parallel sections
pragma
• Može biti sprijecen za prvu paralelnu sekciju poslije paralelnih sekcija pragma
(parallel sections pragma)
• Sintaksa:
#pragma omp section
87. Navedite primjere spleta računala u primjeni i ukratko ih opišite (moguć osvrt
na CRO NGI i HR-ZOO).
91. Opišite što je Grid Service Broker(GSB) i navedite njegove glavne mogućnosti
Predavanje 11
93. Navedite dva glavna tipa web usluga, te ukratko objasnite njihovu izvedbu i
međusobne razlike.
Dva glavna tipa Web usluga:
HTTP metode:
Operacija Opis
Dva dijela poruke u omotnici: body (aktualna poruka) i header (proizvoljno). SOAP
bindings: HTTP, SMPT, te konverzijski i RPC stilovi.
View – komponente koje prikazuju korisničko sučelje aplikacije, odnosno interpetira informacije
Controller – putem View omogućuju međudjelovanje s korisnikom, odnosno rad s modelom i prikaz
promjena na korisničkom sučelju aplikacije. Prihvata ulaz i pretvara ga u naredbe za model/view.
WCF – Windows Communication Foundation
CPU:
DVFS – primarna tehnologija štednje energije na CPU
- smanjenje struje, napona, frekvencije kad je korisnost ispod odre_enog praga
- frekvencija ↓ - pouzdanost ↑
- napon napajanja2 ↓ ako frekvencija ↓ -> učinkovitost energije3 ↑ (frekvencija ↓ ->
brzina ↓ )
Memorija:
CLTT (Closed Loop Thermal Throttling), OLTT (Open Loop Throughput Throttling)
- frekvencija ↓ -> propusnost memorije ↓
- 35% smanjenje ukupne potrošnje energije od strane memorije
- propusnost memorije ograničena na 75%
- 60% potrošnje energije od strane memorije može se uštedjeti ako memorija nije
potrebna
- manja ograničenja: aplikacije s manjim zahtjevima na memoriju ili visoko
optimirane aplikacije s visokom razinom potreba za priručnom memorijom.
114. Opišite virtualizaciju sa stajališta zelenog računarstva.
121. Koja je razlika između mekog i tvrdog grananja (soft and hard fork)
blockchaina?
Soft fork – sudionici u mreži dobrovoljno počnu koristiti novu inačicu programa,
algoritma koji upravlja mrežom. Program se dogradi, a na tačno definiranom bloku
napravi se grananje koje prihvaćaju svi korisnici.
Hard fork – dio mreže i dalje koristi stari a drugi priželjkuje novi algoritam. Ako ih je
dovoljno za novu, instaliraju alternativnu inačicu programa i ona na tačno definiranom
bloku stvara grananje na postojeći lanac. Korisnici koji to ne prihvate, ne sudjeluju u
promjenama i ne vide ih iz novčanika.
122. Ukratko objasnite načelnu strukturu rješenja za obradbu velikih skupova
podataka, te usluge u sustavu velikih skupova podataka.
123. Ukratko objasnite šta su tokovi podataka i postupak anaize tokova podataka.
Tokovi podataka:
Hadoop Distributed File System (HDFS) – raspodijeljeni file system koji omogućuje bazi pristup
podacima i rad s velikim datotekama po načelu write-once-read-many tipično s blokovima od 64 MB i
uravnoteženjem opterećenja
Spark – in-memory okvir opće namjene za obradu podataka, podržava SQL (i slične), obradbu
grafova, strojno učenje; read only zbirka objekata koji se dijele među strojevima, mogu se
rekonstruisati, spremaju svoj tijek izvođenja a omogućuju kontrolu od strane korisnika