<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kosta01856</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kosta01856"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/Kosta01856"/>
	<updated>2026-06-04T09:05:53Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D1%83%D0%BB%D1%82%D0%B8%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%9A1_2018&amp;diff=7853</id>
		<title>Мултипроцесорски системи/К1 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D1%83%D0%BB%D1%82%D0%B8%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%9A1_2018&amp;diff=7853"/>
		<updated>2024-10-23T21:20:07Z</updated>

		<summary type="html">&lt;p&gt;Kosta01856: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Prvi kolokvijum 2018. godine&#039;&#039;&#039; održan je 30. oktobra i trajao je 105 minuta. Postavka roka je dostupna sa [http://mups.etf.rs/ispiti/2018-2019/si4mps_k1_20182019.pdf stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
: Veoma slično pitanje našlo se na  [[Мултипроцесорски системи/К1 2021#1. zadatak|prvom kolokvijumu 2021. godine]]&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Opisati pet klasa savremenih računara sa naglaskom na projektne prioritete u svakoj klasi.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Videti [[Мултипроцесорски системи/К1 2021#1. zadatak|ovde]].&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti šta je ILP i navesti tipične primere. Objasniti i obrazložiti trendove iskorišćenja ILP za povećanje performansi nekada i sada.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
ILP  (&#039;&#039;Instruction-level parallelism&#039;&#039;) je paralelizam u obliku istovremenog izvršavanja više instrukcija. Drugim rečima, cilj ILP je povećanje broja izvršenih instrukcija po taktu. Primeri tehnika ILP-a su: protočna obrada, izvršavanje instrukcija van poretka, spekulativno izvršavanje, predikcija skoka i optimizacije prevodioca radi boljeg iskorišćavanja prethodnih tehnika.&lt;br /&gt;
&lt;br /&gt;
ILP je imao najveći značaj u periodu od kraja 80-ih do ranih 2000-ih. Tehnološki trendovi dozvoljavali su veliko usložnjenje organizacije procesora, sa ciljem da povećaju ILP i broj instrukcija po taktu. Danas, poboljšanja performansi od ILP je sve manje i manje, jer se povećanjem broja instrukcija po taktu ne dobija znatno ubrzanje.&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti prednosti i nedostatke programskog modela zajedničke memorije.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Prednosti:&lt;br /&gt;
* Globalni adresni prostor olakšava programiranje&lt;br /&gt;
* Uniforman pristup podacima, bez potrebe da se kopiraju i maršaluju kao na modelu prenosa poruka.&lt;br /&gt;
* Manji komunikacioni &#039;&#039;overhead&#039;&#039; (bez OS, bibliotečkih rutina)&lt;br /&gt;
* Prirodna nadogradnja na sekvencijalno programiranje (lakše se paralelizuje postojeći kod)&lt;br /&gt;
* Omogućava keširanje&lt;br /&gt;
* Može da emulira ostale programske modele&lt;br /&gt;
Mane:&lt;br /&gt;
* Složeniji hardver&lt;br /&gt;
* Teže skalira povećanjem broja procesora&lt;br /&gt;
* Zahteva posebne atomske operacije za sinhronizaciju &lt;br /&gt;
* Programer odgovoran za pravilan pristup deljenim podacima&lt;br /&gt;
* Teže optimizovati implicitnu komunikaciju&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Nacrtati i objasniti tipičnu strukturu sistema koji podržava model prenosa poruka. Po čemu se ona razlikuje od NUMA arhitekture?&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
(&#039;&#039;Slika: [http://mups.etf.rs/predavanja/SI4MPS%20-%20P02%20-%20PPM.pdf P02 - PPM, slajd 42]&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Gradivni element u modelu prenosa poruka je kompletan računar. Računarima su odvojeni adresni prostori i komuniciraju eksplicitnim I/O operacijama preko mreže. &lt;br /&gt;
&lt;br /&gt;
Organizacija je slična NUMA arhitekturama, ali postoje razlike:&lt;br /&gt;
* Komunikacija u NUMA sistemima se odnosi na pristup memoriji, ne na razmenu poruka.&lt;br /&gt;
* Jača je sprega između procesora i mreže kod prenosa poruka.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem OpenMP tehnologije, paralelizovati kod u prilogu koji vrši obilazak i obradu čvorova grafa BFS metodom. Obratiti pažnju na efikasnost i korektnost paralelizacije. Smatrati da su sve promenljive ispravno deklarisane.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
queue&amp;lt;node*&amp;gt; q;&lt;br /&gt;
q.push(head);&lt;br /&gt;
while (!q.empty()) {&lt;br /&gt;
    qSize = q.size();&lt;br /&gt;
    for (int i = 0; i &amp;lt; qSize; i++) {&lt;br /&gt;
        node* currNode = q.front();&lt;br /&gt;
        q.pop();&lt;br /&gt;
        doStuff(currNode);&lt;br /&gt;
        q.push(currNode);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovaj kod za obradu čvorova BFS metodom nije ispravan, jer sve vreme cirkuliše isti čvor u redu, a i nema nikakvog smisla vraćati čvor koji je već bio u redu nazad u taj red. Ukoliko zanemarimo te probleme, i pretpostavimo da se u &amp;lt;code&amp;gt;doStuff&amp;lt;/code&amp;gt; radi samo obrada a ne i neko guranje čvorova u red, ovaj zadatak se može paralelizovati OpenMP poslovima, slično kodu za obilaženje ulančane liste:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; highlight=&amp;quot;3,4,5,6,12,17,18&amp;quot;&amp;gt;&lt;br /&gt;
queue&amp;lt;node*&amp;gt; q;&lt;br /&gt;
q.push(head);&lt;br /&gt;
#pragma omp parallel&lt;br /&gt;
{&lt;br /&gt;
#pragma omp single&lt;br /&gt;
{&lt;br /&gt;
while (!q.empty()) {&lt;br /&gt;
    qSize = q.size();&lt;br /&gt;
    for (int i = 0; i &amp;lt; qSize; i++) {&lt;br /&gt;
        node* currNode = q.front();&lt;br /&gt;
        q.pop();&lt;br /&gt;
        #pragma omp task&lt;br /&gt;
        doStuff(currNode);&lt;br /&gt;
        q.push(currNode);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koji model memorijske konzistencije podržava OpenMP i kakav to uticaj može imati na izvršavanje koda niti? Da li postoje direktive kojima se može uticati na izvršavanje niti u smislu održavanja konzistentnog pogleda na memoriju? Obrazložiti odgovor.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
OpenMP podržava model relaksirane konzistencije, tako da ne moraju sve niti da vide isti sadržaj memorije. Ukoliko je nitima neophodno, mogu da koriste &amp;lt;code&amp;gt;flush&amp;lt;/code&amp;gt; direktivu koja sinhronizuje pogled niti na memoriju. Ova direktiva je implicitna prilikom nailaska na razne sinhronizacione direktive i pri ulasku i izlasku iz paralelnog regiona. Nije dobro koristiti &amp;lt;code&amp;gt;flush&amp;lt;/code&amp;gt; direktivu kad nije apsolutno neophodno.&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neka se posmatra jedna aplikacija koja vrši obradu čvorova grafa. Grafovi koji se obrađuju su veoma neujednačenog stepena čvorova, a vreme obrade je proporcionalno&lt;br /&gt;
stepenu čvora. Nakon merenja performansi sekvencijalne implementacije posmatrane aplikacije pri uobičajenoj upotrebi, dobijeni su sledeći rezultati: aplikacija 5% vremena provodi obavljajući ulazno-izlazne operacije, 95% vremena provodi u obradi podataka. Tipično vreme obrade jednog čvora korišćenjem jednog jezgra je 1s.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Ukoliko se aplikacija paralelizuje za izvršavanje na SMP sistemu sa 16 jezgara na 2GHz sa 32GB memorije, navesti formulu za Amdalov zakon i odrediti maksimalno moguće ubrzanje koje se može postići za zadatu aplikaciju.&lt;br /&gt;
# Diskutovati uticaj balansa opterećenja na performanse aplikacije, ukoliko je raspodela čvorova po stepenu kao na grafiku sa slike. Predložiti i obrazložiti šemu paralelizacije kojom bi se poboljšale performanse.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Мултипроцесорски системи]]&lt;br /&gt;
Sp = T1/T16&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
T1 = 1s&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
T16 = alfa*T1 + (1-alfa)/N&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
N=16&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
alfa = 0.05&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
T16 = 0.05*T1 + (0.95)*T1/16&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
S = T1/T16 = 9.14&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
drugi nacin:&lt;br /&gt;
Sp = 1/ ((1 - P) + P/N)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
N = 16&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
P = 0.95&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sp = 1 / (0.05 + 0.95/16)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sp = 9.14&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Posto je graf neujednacen, neki core-ovi mogu biti vise optereceni, dok su drugi idle.&lt;br /&gt;
Zato ovde treba koristiti dinamicku raspodelu zadataka, tako da kada jedna nit(core), zavrsi, odmah&lt;br /&gt;
trazi sledeci cvor koji treba da obradi. Na ovaj nacin, ni jedan core nikad nece biti idle.&lt;/div&gt;</summary>
		<author><name>Kosta01856</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D1%83%D0%BB%D1%82%D0%B8%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%9A1_2018&amp;diff=7852</id>
		<title>Мултипроцесорски системи/К1 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D1%83%D0%BB%D1%82%D0%B8%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%9A1_2018&amp;diff=7852"/>
		<updated>2024-10-23T21:18:25Z</updated>

		<summary type="html">&lt;p&gt;Kosta01856: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Prvi kolokvijum 2018. godine&#039;&#039;&#039; održan je 30. oktobra i trajao je 105 minuta. Postavka roka je dostupna sa [http://mups.etf.rs/ispiti/2018-2019/si4mps_k1_20182019.pdf stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
: Veoma slično pitanje našlo se na  [[Мултипроцесорски системи/К1 2021#1. zadatak|prvom kolokvijumu 2021. godine]]&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Opisati pet klasa savremenih računara sa naglaskom na projektne prioritete u svakoj klasi.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Videti [[Мултипроцесорски системи/К1 2021#1. zadatak|ovde]].&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti šta je ILP i navesti tipične primere. Objasniti i obrazložiti trendove iskorišćenja ILP za povećanje performansi nekada i sada.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
ILP  (&#039;&#039;Instruction-level parallelism&#039;&#039;) je paralelizam u obliku istovremenog izvršavanja više instrukcija. Drugim rečima, cilj ILP je povećanje broja izvršenih instrukcija po taktu. Primeri tehnika ILP-a su: protočna obrada, izvršavanje instrukcija van poretka, spekulativno izvršavanje, predikcija skoka i optimizacije prevodioca radi boljeg iskorišćavanja prethodnih tehnika.&lt;br /&gt;
&lt;br /&gt;
ILP je imao najveći značaj u periodu od kraja 80-ih do ranih 2000-ih. Tehnološki trendovi dozvoljavali su veliko usložnjenje organizacije procesora, sa ciljem da povećaju ILP i broj instrukcija po taktu. Danas, poboljšanja performansi od ILP je sve manje i manje, jer se povećanjem broja instrukcija po taktu ne dobija znatno ubrzanje.&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti prednosti i nedostatke programskog modela zajedničke memorije.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Prednosti:&lt;br /&gt;
* Globalni adresni prostor olakšava programiranje&lt;br /&gt;
* Uniforman pristup podacima, bez potrebe da se kopiraju i maršaluju kao na modelu prenosa poruka.&lt;br /&gt;
* Manji komunikacioni &#039;&#039;overhead&#039;&#039; (bez OS, bibliotečkih rutina)&lt;br /&gt;
* Prirodna nadogradnja na sekvencijalno programiranje (lakše se paralelizuje postojeći kod)&lt;br /&gt;
* Omogućava keširanje&lt;br /&gt;
* Može da emulira ostale programske modele&lt;br /&gt;
Mane:&lt;br /&gt;
* Složeniji hardver&lt;br /&gt;
* Teže skalira povećanjem broja procesora&lt;br /&gt;
* Zahteva posebne atomske operacije za sinhronizaciju &lt;br /&gt;
* Programer odgovoran za pravilan pristup deljenim podacima&lt;br /&gt;
* Teže optimizovati implicitnu komunikaciju&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Nacrtati i objasniti tipičnu strukturu sistema koji podržava model prenosa poruka. Po čemu se ona razlikuje od NUMA arhitekture?&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
(&#039;&#039;Slika: [http://mups.etf.rs/predavanja/SI4MPS%20-%20P02%20-%20PPM.pdf P02 - PPM, slajd 42]&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Gradivni element u modelu prenosa poruka je kompletan računar. Računarima su odvojeni adresni prostori i komuniciraju eksplicitnim I/O operacijama preko mreže. &lt;br /&gt;
&lt;br /&gt;
Organizacija je slična NUMA arhitekturama, ali postoje razlike:&lt;br /&gt;
* Komunikacija u NUMA sistemima se odnosi na pristup memoriji, ne na razmenu poruka.&lt;br /&gt;
* Jača je sprega između procesora i mreže kod prenosa poruka.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem OpenMP tehnologije, paralelizovati kod u prilogu koji vrši obilazak i obradu čvorova grafa BFS metodom. Obratiti pažnju na efikasnost i korektnost paralelizacije. Smatrati da su sve promenljive ispravno deklarisane.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
queue&amp;lt;node*&amp;gt; q;&lt;br /&gt;
q.push(head);&lt;br /&gt;
while (!q.empty()) {&lt;br /&gt;
    qSize = q.size();&lt;br /&gt;
    for (int i = 0; i &amp;lt; qSize; i++) {&lt;br /&gt;
        node* currNode = q.front();&lt;br /&gt;
        q.pop();&lt;br /&gt;
        doStuff(currNode);&lt;br /&gt;
        q.push(currNode);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovaj kod za obradu čvorova BFS metodom nije ispravan, jer sve vreme cirkuliše isti čvor u redu, a i nema nikakvog smisla vraćati čvor koji je već bio u redu nazad u taj red. Ukoliko zanemarimo te probleme, i pretpostavimo da se u &amp;lt;code&amp;gt;doStuff&amp;lt;/code&amp;gt; radi samo obrada a ne i neko guranje čvorova u red, ovaj zadatak se može paralelizovati OpenMP poslovima, slično kodu za obilaženje ulančane liste:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; highlight=&amp;quot;3,4,5,6,12,17,18&amp;quot;&amp;gt;&lt;br /&gt;
queue&amp;lt;node*&amp;gt; q;&lt;br /&gt;
q.push(head);&lt;br /&gt;
#pragma omp parallel&lt;br /&gt;
{&lt;br /&gt;
#pragma omp single&lt;br /&gt;
{&lt;br /&gt;
while (!q.empty()) {&lt;br /&gt;
    qSize = q.size();&lt;br /&gt;
    for (int i = 0; i &amp;lt; qSize; i++) {&lt;br /&gt;
        node* currNode = q.front();&lt;br /&gt;
        q.pop();&lt;br /&gt;
        #pragma omp task&lt;br /&gt;
        doStuff(currNode);&lt;br /&gt;
        q.push(currNode);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koji model memorijske konzistencije podržava OpenMP i kakav to uticaj može imati na izvršavanje koda niti? Da li postoje direktive kojima se može uticati na izvršavanje niti u smislu održavanja konzistentnog pogleda na memoriju? Obrazložiti odgovor.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
OpenMP podržava model relaksirane konzistencije, tako da ne moraju sve niti da vide isti sadržaj memorije. Ukoliko je nitima neophodno, mogu da koriste &amp;lt;code&amp;gt;flush&amp;lt;/code&amp;gt; direktivu koja sinhronizuje pogled niti na memoriju. Ova direktiva je implicitna prilikom nailaska na razne sinhronizacione direktive i pri ulasku i izlasku iz paralelnog regiona. Nije dobro koristiti &amp;lt;code&amp;gt;flush&amp;lt;/code&amp;gt; direktivu kad nije apsolutno neophodno.&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neka se posmatra jedna aplikacija koja vrši obradu čvorova grafa. Grafovi koji se obrađuju su veoma neujednačenog stepena čvorova, a vreme obrade je proporcionalno&lt;br /&gt;
stepenu čvora. Nakon merenja performansi sekvencijalne implementacije posmatrane aplikacije pri uobičajenoj upotrebi, dobijeni su sledeći rezultati: aplikacija 5% vremena provodi obavljajući ulazno-izlazne operacije, 95% vremena provodi u obradi podataka. Tipično vreme obrade jednog čvora korišćenjem jednog jezgra je 1s.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Ukoliko se aplikacija paralelizuje za izvršavanje na SMP sistemu sa 16 jezgara na 2GHz sa 32GB memorije, navesti formulu za Amdalov zakon i odrediti maksimalno moguće ubrzanje koje se može postići za zadatu aplikaciju.&lt;br /&gt;
# Diskutovati uticaj balansa opterećenja na performanse aplikacije, ukoliko je raspodela čvorova po stepenu kao na grafiku sa slike. Predložiti i obrazložiti šemu paralelizacije kojom bi se poboljšale performanse.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Мултипроцесорски системи]]&lt;br /&gt;
Sp = T1/T16&lt;br /&gt;
T1 = 1s&lt;br /&gt;
T16 = alfa*T1 + (1-alfa)/N&lt;br /&gt;
N=16&lt;br /&gt;
alfa = 0.05&lt;br /&gt;
T16 = 0.05*T1 + (0.95)*T1/16&lt;br /&gt;
S = T1/T16 = 9.14&lt;br /&gt;
drugi nacin:&lt;br /&gt;
Sp = 1/ ((1 - P) + P/N)&lt;br /&gt;
N = 16&lt;br /&gt;
P = 0.95&lt;br /&gt;
Sp = 1 / (0.05 + 0.95/16)&lt;br /&gt;
Sp = 9.14&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Posto je graf neujednacen, neki core-ovi mogu biti vise optereceni, dok su drugi idle.&lt;br /&gt;
Zato ovde treba koristiti dinamicku raspodelu zadataka, tako da kada jedna nit(core), zavrsi, odmah&lt;br /&gt;
trazi sledeci cvor koji treba da obradi. Na ovaj nacin, ni jedan core nikad nece biti idle.&lt;/div&gt;</summary>
		<author><name>Kosta01856</name></author>
	</entry>
</feed>