![Page 1: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/1.jpg)
Uvod do B4B36PDV
Organizace predmetu a seznamenı se s paralelizacı
B4B36PDV – Paralelnı a distribuovane vypocty
![Page 2: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/2.jpg)
Osnova
� Cım se budeme zabyvat?
� Hodnocenı predmetu
� Uvod do paralelnıho hardwaru a softwaru
1
![Page 3: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/3.jpg)
Organizace predmetu
![Page 4: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/4.jpg)
Dulezite informace
Prednasejıcı: Jakub Marecek Michal Jakob
Cvicıcı: David Fiedler Peter Macejko David Milec Jan Mrkos
Petr Tomasek Petr Vana
Dulezite odkazy:
https://cw.fel.cvut.cz/wiki/courses/b4b36pdv
https://cw.felk.cvut.cz/forum/
https://cw.felk.cvut.cz/brute/
Rozvrh cvicenı pro on-line vyuku: https://forms.gle/NJ4hxFJwahb5Zrda7
o Termın pro vyplnenı je patek 19.02.2021 23:59
2
![Page 5: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/5.jpg)
Dulezite informace
Prednasejıcı: Jakub Marecek Michal Jakob
Cvicıcı: David Fiedler Peter Macejko David Milec Jan Mrkos
Petr Tomasek Petr Vana
Dulezite odkazy:
https://cw.fel.cvut.cz/wiki/courses/b4b36pdv
https://cw.felk.cvut.cz/forum/
https://cw.felk.cvut.cz/brute/
Rozvrh cvicenı pro on-line vyuku: https://forms.gle/NJ4hxFJwahb5Zrda7
o Termın pro vyplnenı je patek 19.02.2021 23:59
2
![Page 6: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/6.jpg)
Cım se budeme zabyvat?
Paralelnı a Distribuovane vypocty
3
![Page 7: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/7.jpg)
Cım se budeme zabyvat?
Paralelnı a Distribuovane vypocty
Paralelnı vypocty
� Jeden vypocet provadı soucasne
vıce vlaken
� Vlakna typicky sdılı pamet a
vypocetnı prostredky
� Cıl: Zrychlit vypocet ulohy
� (7 tydnu)
3
![Page 8: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/8.jpg)
Cım se budeme zabyvat?
Paralelnı a Distribuovane vypocty
Paralelnı vypocty
� Jeden vypocet provadı soucasne
vıce vlaken
� Vlakna typicky sdılı pamet a
vypocetnı prostredky
� Cıl: Zrychlit vypocet ulohy
� (7 tydnu)
Distribuovane vypocty
� Vypocet provadı soucasne vıce
oddelenych vypocetnıch uzlu
(casto i geograficky)
� Cıle:
� Zrychlit vypocet
� Robustnost vypoctu
� (6 tydnu)
3
![Page 9: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/9.jpg)
Cım se budeme zabyvat?
Paralelnı a Distribuovane vypocty
Paralelnı vypocty
� Jeden vypocet provadı soucasne
vıce vlaken
� Vlakna typicky sdılı pamet a
vypocetnı prostredky
� Cıl: Zrychlit vypocet ulohy
� (7 tydnu)
Distribuovane vypocty
� Vypocet provadı soucasne vıce
oddelenych vypocetnıch uzlu
(casto i geograficky)
� Cıle:
� Zrychlit vypocet
� Robustnost vypoctu
� (6 tydnu)
3
![Page 10: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/10.jpg)
Hodnocenı predmetu
Paralelnı vypocty
� 5 malych programovacıch uloh 10 bodu
� Semestralnı prace 12 bodu
Distribuovane vypocty
� 2 male ulohy 4 body
� Semestralnı prace 14 bodu
Prakticka zkouska
� Prakticka cast zkousky (min. 10b) 20 bodu
(Vyresenı zadaneho problemu za pouzitı paralelizace.)
� Teoreticka cast zkousky (min. 20b) 40 bodu
V semestru musıte zıskat alespon 20 bodu Celkem: 100 bodu
o U vsech uloh se pro hodnocenı vzdy uvazuje poslednı odevzdane resenı
4
![Page 11: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/11.jpg)
Hodnocenı predmetu
Vyzadujeme samostatnou praci na vsech ulohach.
o Plagiaty jsou zakazane. Nepridelavejte prosım starosti nam, ani sobe.
5
![Page 12: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/12.jpg)
Pozdnı odevzdanı uloh
6
![Page 13: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/13.jpg)
Pozdnı odevzdanı uloh
Male ulohy
Zpozdenı Penalizace
0h < x ≤ 1h -0.5b
1h < x ≤ 24h -1b
24h < x -2b
6
![Page 14: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/14.jpg)
Pozdnı odevzdanı uloh
Male ulohy
Zpozdenı Penalizace
0h < x ≤ 1h -0.5b
1h < x ≤ 24h -1b
24h < x -2b
Semestralnı ulohy
Zpozdenı Penalizace
0h < x ≤ 1h -1b
1h < x ≤ 12h -2b
12h < x ≤ 3d -6b
3d < x ≤ 6d -10b
6d < x -100%
6
![Page 15: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/15.jpg)
Hodnocenı predmetu
Dochazka na cvicenı nenı povinna.
To ale neznamena, ze byste na cvicenı nemeli chodit...
� Budeme probırat latku, ktera se Vam bude hodit u ukolu a u zkousky.
� Dostanete prostor pro praci na semestralnıch pracıch.
� Konzultace budou probıhat primarne na cvicenıch.
� Usetrıme Vam cas a nervy (nebo v to alespon doufame ;-)
o Pokud se na cvicenı rozhodnete nechodit, budeme predpokladat, ze probırane latce
dokonale rozumıte. Prıpadne konzultace v zadnem prıpade nenahrazujı cvicenı!
7
![Page 16: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/16.jpg)
Na cem budeme stavet?
� Programovanı v jazyce C/C++ (B0B36PRP)
� Zaklady programovanı v jazyce C/C++
� Kompilace programu v jazyce C/C++
� Zaklady objektoveho programovanı (znalost C++11 vyhodou)
� Technologicke predpoklady paralelizace (B4B36OSY)
� Vlakna a jejich princip
� Metody synchronizace a komunikace vlaken
� Zakladnı znalost fungovanı pocıtace a procesoru (B4B35APO)
� Znalost zakladnıch algoritmu (B4B33ALG)
8
![Page 17: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/17.jpg)
Na cem budeme stavet?
� Programovanı v jazyce C/C++ (B0B36PRP)
� Zaklady programovanı v jazyce C/C++
� Kompilace programu v jazyce C/C++
� Zaklady objektoveho programovanı (znalost C++11 vyhodou)
� Technologicke predpoklady paralelizace (B4B36OSY)
� Vlakna a jejich princip
� Metody synchronizace a komunikace vlaken
� Zakladnı znalost fungovanı pocıtace a procesoru (B4B35APO)
� Znalost zakladnıch algoritmu (B4B33ALG)
8
![Page 18: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/18.jpg)
Na cem budeme stavet?
� Programovanı v jazyce C/C++ (B0B36PRP)
� Zaklady programovanı v jazyce C/C++
� Kompilace programu v jazyce C/C++
� Zaklady objektoveho programovanı (znalost C++11 vyhodou)
� Technologicke predpoklady paralelizace (B4B36OSY)
� Vlakna a jejich princip
� Metody synchronizace a komunikace vlaken
� Zakladnı znalost fungovanı pocıtace a procesoru (B4B35APO)
� Znalost zakladnıch algoritmu (B4B33ALG)
8
![Page 19: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/19.jpg)
Na cem budeme stavet?
� Programovanı v jazyce C/C++ (B0B36PRP)
� Zaklady programovanı v jazyce C/C++
� Kompilace programu v jazyce C/C++
� Zaklady objektoveho programovanı (znalost C++11 vyhodou)
� Technologicke predpoklady paralelizace (B4B36OSY)
� Vlakna a jejich princip
� Metody synchronizace a komunikace vlaken
� Zakladnı znalost fungovanı pocıtace a procesoru (B4B35APO)
� Znalost zakladnıch algoritmu (B4B33ALG)
8
![Page 20: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/20.jpg)
Opakovanı
![Page 21: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/21.jpg)
Kompilace programu v C/C++
I tutorial 01.zip
Rucnı kompilace
g++ -o hello.bin -std=c++11 -Wall -O2 -pthread
-fopenmp hello.cpp
CMake
cmake ./CMakeLists.txt && make hello
Nebo pouzijte IDE s dobrou podporou C++, naprıklad CLion (multiplatformnı)
nebo Visual Studio (Windows)
9
![Page 22: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/22.jpg)
Bylo, nebylo...
Pro pripomenutı: Cılem paralelnıch vypoctu je dosahnout zvysenı vykonu
CPU
1vla
kno
PAMET
von Neumannova architektura
� Jake ma nevyhody?
� Jak bychom je mohli opravit?
� A jak bychom dale mohli navysit vykon
procesoru?
Y memory.cpp / make memory
Vyzkousejte si prosım, ze Vam funguje prıstup do BRUTE aodevzdejte soubor memory.cpp.
10
![Page 23: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/23.jpg)
Bylo, nebylo...
Pro pripomenutı: Cılem paralelnıch vypoctu je dosahnout zvysenı vykonu
CPU
1vla
kno
PAMET
von Neumannova architektura
� Jake ma nevyhody?
� Jak bychom je mohli opravit?
� A jak bychom dale mohli navysit vykon
procesoru?
Y memory.cpp / make memory
Vyzkousejte si prosım, ze Vam funguje prıstup do BRUTE aodevzdejte soubor memory.cpp.
10
![Page 24: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/24.jpg)
Modernı procesor
Core#1
1vla
kn
o
L1-cache, L2-cache
Core#2
1vla
kn
o
L1-cache, L2-cache
Core#n
1vla
kn
o
L1-cache, L2-cache
L3-cache
vnitrnı komunikace
PAMET a zbytek systemu
11
![Page 25: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/25.jpg)
Modernı procesor
Paralelizace
Pipelining
(procesor)
Vektorizace
(kompilator)
Vlakna
(Vy :-)
12
![Page 26: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/26.jpg)
Modernı procesor
Paralelizace
Pipelining
(procesor)
Vektorizace
(kompilator)
Vlakna
(Vy :-)
12
![Page 27: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/27.jpg)
Modernı procesor
Paralelizace
Pipelining
(procesor)
Vektorizace
(kompilator)
Vlakna
(Vy :-)
12
![Page 28: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/28.jpg)
Modernı procesor
Paralelizace
Pipelining
(procesor)
Vektorizace
(kompilator)
Vlakna
(Vy :-)
12
![Page 29: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/29.jpg)
Modernı procesor
Mozne “nastrahy” pouzitı modernıho procesoru s vıce jadry a cache:
� Komunikace s pametı je stale pomala (problem cache-miss)
� Prıstup ke sdılenym datum vıce vlakny (true sharing)
� Udrzovanı koherence cache muze byt drahe (false sharing)
� ... a jine
13
![Page 30: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/30.jpg)
Cache-miss
Y memory.cpp / make memory
Y matrix.cpp / make matrix
14
![Page 31: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/31.jpg)
True sharing
void multiply(int * number, int multiplyBy) {
*number = (*number) * multiplyBy;
}
Predpokladejme int number = 1; a mejme dve vlakna:
� Vlakno 1: multiply(&number,2)
� Vlakno 2: multiply(&number,3)
Co bude v promenne number po skoncenı obou vlaken?
15
![Page 32: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/32.jpg)
True sharing
void multiply(int * number, int multiplyBy) {
*number = (*number) * multiplyBy;
}
yimul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Y http://godbolt.org
16
![Page 33: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/33.jpg)
True sharing
void multiply(int * number, int multiplyBy) {
*number = (*number) * multiplyBy;
}
yimul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Y http://godbolt.org
16
![Page 34: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/34.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
17
![Page 35: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/35.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
17
![Page 36: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/36.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vysledek: number = 6
17
![Page 37: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/37.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
17
![Page 38: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/38.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vysledek: number = 6
17
![Page 39: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/39.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
17
![Page 40: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/40.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vysledek: number = 3
17
![Page 41: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/41.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
17
![Page 42: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/42.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vysledek: number = 2
17
![Page 43: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/43.jpg)
True sharing
Vlakno 1 / mov esi, 2
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Vlakno 2 / mov esi, 3
imul esi, DWORD PTR [rdi]
mov DWORD PTR [rdi], esi
ret
Jake mame moznosti, abychom dosahli deterministickeho vysledku (ktery
pravdepodobne chceme)?
17
![Page 44: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/44.jpg)
False-sharing
Modernı procesor pracuje s pametı po blocıch, ktere se mapujı do cache.
� I kdyz vlakna nepracujı se stejnymi promennymi, mohou chtıt pracovat se
stejnym blokem.
� Jeden blok se pak nutne musı nachazet v cachıch ruznych jader – a ve vıce
kopiıch
Pamet x y
Cache x y Cache x y
Core#1 Core#2
� Ale prave te komunikaci s pametı jsme se chteli pouzitım cache vyhnout!
18
![Page 45: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/45.jpg)
False-sharing
Modernı procesor pracuje s pametı po blocıch, ktere se mapujı do cache.
� I kdyz vlakna nepracujı se stejnymi promennymi, mohou chtıt pracovat se
stejnym blokem.
� Jeden blok se pak nutne musı nachazet v cachıch ruznych jader – a ve vıce
kopiıch
Pamet x y
Cache z y Cache x y
Core#1 Core#2
� Ale prave te komunikaci s pametı jsme se chteli pouzitım cache vyhnout!
18
![Page 46: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/46.jpg)
False-sharing
Modernı procesor pracuje s pametı po blocıch, ktere se mapujı do cache.
� I kdyz vlakna nepracujı se stejnymi promennymi, mohou chtıt pracovat se
stejnym blokem.
� Jeden blok se pak nutne musı nachazet v cachıch ruznych jader – a ve vıce
kopiıch
Pamet z y
Cache z y Cache ?
Core#1 Core#2
modified (M) invalid (I)
? ? ? ? ? ? ?
� Ale prave te komunikaci s pametı jsme se chteli pouzitım cache vyhnout!
18
![Page 47: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/47.jpg)
False-sharing
Modernı procesor pracuje s pametı po blocıch, ktere se mapujı do cache.
� I kdyz vlakna nepracujı se stejnymi promennymi, mohou chtıt pracovat se
stejnym blokem.
� Jeden blok se pak nutne musı nachazet v cachıch ruznych jader – a ve vıce
kopiıch
Pamet z y
Cache z y Cache ?
Core#1 Core#2
modified (M) invalid (I)
? ? ? ? ? ? ?
� Ale prave te komunikaci s pametı jsme se chteli pouzitım cache vyhnout!
18
![Page 48: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/48.jpg)
False-sharing
Modernı procesor pracuje s pametı po blocıch, ktere se mapujı do cache.
� I kdyz vlakna nepracujı se stejnymi promennymi, mohou chtıt pracovat se
stejnym blokem.
� Jeden blok se pak nutne musı nachazet v cachıch ruznych jader – a ve vıce
kopiıch
Pamet z y
Cache z y Cache
Core#1 Core#2
modified (M)
z y
� Ale prave te komunikaci s pametı jsme se chteli pouzitım cache vyhnout!
18
![Page 49: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/49.jpg)
False-sharing
Modernı procesor pracuje s pametı po blocıch, ktere se mapujı do cache.
� I kdyz vlakna nepracujı se stejnymi promennymi, mohou chtıt pracovat se
stejnym blokem.
� Jeden blok se pak nutne musı nachazet v cachıch ruznych jader – a ve vıce
kopiıch
Pamet z y
Cache z y Cache
Core#1 Core#2
modified (M)
z y
� Ale prave te komunikaci s pametı jsme se chteli pouzitım cache vyhnout!
18
![Page 50: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/50.jpg)
False-sharing
Y false sharing.cpp / make false sharing
19
![Page 51: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/51.jpg)
Paralelizace v praxi
![Page 52: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/52.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme procesor s p jadry a ulohu, ktera pri vyuzitı jednoho jadra trva T
milisekund. Vyuzijeme-li vsech p jader pro vyresenı ulohy, vyresenı ulohy
zvladneme za T/p milisekund.
Tvrzenı nenı pravdive. Proc? Zkuste vymyslet co mozna nejvıce duvodu, proc
tomu tak nenı.
O ulohach, kde toto tvrzenı platı rıkame, ze jsou tzv. linearnı nebo take
embarassingly parallel. Takovych uloh ale v praxi potkame velmi malo.
20
![Page 53: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/53.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme procesor s p jadry a ulohu, ktera pri vyuzitı jednoho jadra trva T
milisekund. Vyuzijeme-li vsech p jader pro vyresenı ulohy, vyresenı ulohy
zvladneme za T/p milisekund.
Tvrzenı nenı pravdive. Proc? Zkuste vymyslet co mozna nejvıce duvodu, proc
tomu tak nenı.
O ulohach, kde toto tvrzenı platı rıkame, ze jsou tzv. linearnı nebo take
embarassingly parallel. Takovych uloh ale v praxi potkame velmi malo.
20
![Page 54: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/54.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme procesor s p jadry a ulohu, ktera pri vyuzitı jednoho jadra trva T
milisekund. Vyuzijeme-li vsech p jader pro vyresenı ulohy, vyresenı ulohy
zvladneme za T/p milisekund.
Tvrzenı nenı pravdive. Proc? Zkuste vymyslet co mozna nejvıce duvodu, proc
tomu tak nenı.
O ulohach, kde toto tvrzenı platı rıkame, ze jsou tzv. linearnı nebo take
embarassingly parallel. Takovych uloh ale v praxi potkame velmi malo.
20
![Page 55: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/55.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme pole o 1,000,000 prvku. S kazdym prvkem pole mame za ukol 100×provest “magickou operaci” x ← e ln x . Tuto ulohu lze dobre paralelizovat.
void magic_operation(double * array) {
for(unsigned int i = 0 ; i < 1000000 ; i++) {
for(unsigned int k = 0 ; k < 100 ; k++) {
array[i] = exp(log(array[i]));
}
}
}
Tvrzenı je pravdive. Jednotlive vypocty hodnot array[i] na sobe nezavisı a
muzeme je rozlozit mezi ruzna vlakna a dosahnout temer linearnıho narustu
vykonu.
A nebo bychom si mohli vzpomenout, ze ln x a ex jsou inverznı funkce. Ale to bychom nemeli co
paralelizovat ;-)
Y magic.cpp / make magic 21
![Page 56: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/56.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme pole o 1,000,000 prvku. S kazdym prvkem pole mame za ukol 100×provest “magickou operaci” x ← e ln x . Tuto ulohu lze dobre paralelizovat.
void magic_operation(double * array) {
for(unsigned int i = 0 ; i < 1000000 ; i++) {
for(unsigned int k = 0 ; k < 100 ; k++) {
array[i] = exp(log(array[i]));
}
}
}
Tvrzenı je pravdive. Jednotlive vypocty hodnot array[i] na sobe nezavisı a
muzeme je rozlozit mezi ruzna vlakna a dosahnout temer linearnıho narustu
vykonu.
A nebo bychom si mohli vzpomenout, ze ln x a ex jsou inverznı funkce. Ale to bychom nemeli co
paralelizovat ;-)
Y magic.cpp / make magic 21
![Page 57: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/57.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme pole o 1,000,000 prvku. S kazdym prvkem pole mame za ukol 100×provest “magickou operaci” x ← e ln x . Tuto ulohu lze dobre paralelizovat.
void magic_operation(double * array) {
for(unsigned int i = 0 ; i < 1000000 ; i++) {
for(unsigned int k = 0 ; k < 100 ; k++) {
array[i] = exp(log(array[i]));
}
}
}
Tvrzenı je pravdive. Jednotlive vypocty hodnot array[i] na sobe nezavisı a
muzeme je rozlozit mezi ruzna vlakna a dosahnout temer linearnıho narustu
vykonu.
A nebo bychom si mohli vzpomenout, ze ln x a ex jsou inverznı funkce. Ale to bychom nemeli co
paralelizovat ;-)
Y magic.cpp / make magic 21
![Page 58: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/58.jpg)
Je nasledujıcı tvrzenı pravdive?
Mejme pole o 1,000,000 prvku. S kazdym prvkem pole mame za ukol 100×provest “magickou operaci” x ← e ln x . Tuto ulohu lze dobre paralelizovat.
void magic_operation(double * array) {
for(unsigned int i = 0 ; i < 1000000 ; i++) {
for(unsigned int k = 0 ; k < 100 ; k++) {
array[i] = exp(log(array[i]));
}
}
}
Proc jsme ale nedosahli s-nasobneho zrychlenı (kde s je pocet jader
procesoru?). Vzpomente si na Amdahluv zakon.
S =1
(1− p) + ps
Dokazete rıct, co tvorı neparalelizovatelnou cast programu? (vyzadujıcı
(1− p)% casu)
Y magic.cpp / make magic 22
![Page 59: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/59.jpg)
Sifra PDVCrypt
Q R B F Y E L S I I E
i
s:
Jeden krok desifrovanı:
� si ←[si + p1 × secret(
EQRBF︷ ︸︸ ︷s[i−2..i+2])
]mod |Σ|
� i ←[i + p2 × secret(s[i−2..i+2])
]mod |s|
... opakovan N-krat
Ukol: Doimplementujte desifrovacı pravidlo do metody decrypt v souboru
PDVCrypt.cpp.
Y PDVCrypt.cpp, decrypt.cpp / make decrypt I decrypt data.zip 23
![Page 60: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/60.jpg)
Sifra PDVCrypt
Je nasledujıcı tvrzenı pravdive?
Proces desifrovanı retezce zasifrovaneho pomocı PDVCrypt lze snadno
paralelizovat.
Tvrzenı nenı pravdive. Proc paralelnı verze desifrovacıho algoritmu vubec
nefunguje?
Uvazujte mnozinu zasifrovanych retezcu, ktere mate za ukol desifrovat. Mohli
bychom vyuzıt vıce jader v tomto prıpade?
Y PDVCrypt.cpp, decrypt.cpp / make decrypt I decrypt data.zip 24
![Page 61: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/61.jpg)
Sifra PDVCrypt
Je nasledujıcı tvrzenı pravdive?
Proces desifrovanı retezce zasifrovaneho pomocı PDVCrypt lze snadno
paralelizovat.
Tvrzenı nenı pravdive. Proc paralelnı verze desifrovacıho algoritmu vubec
nefunguje?
Uvazujte mnozinu zasifrovanych retezcu, ktere mate za ukol desifrovat. Mohli
bychom vyuzıt vıce jader v tomto prıpade?
Y PDVCrypt.cpp, decrypt.cpp / make decrypt I decrypt data.zip 24
![Page 62: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/62.jpg)
Sifra PDVCrypt
Je nasledujıcı tvrzenı pravdive?
Proces desifrovanı retezce zasifrovaneho pomocı PDVCrypt lze snadno
paralelizovat.
Tvrzenı nenı pravdive. Proc paralelnı verze desifrovacıho algoritmu vubec
nefunguje?
Uvazujte mnozinu zasifrovanych retezcu, ktere mate za ukol desifrovat. Mohli
bychom vyuzıt vıce jader v tomto prıpade?
Y PDVCrypt.cpp, decrypt.cpp / make decrypt I decrypt data.zip 24
![Page 63: Organizace p redm etu a sezn amen se s paralelizac · Uvod do B4B36PDV Organizace p redm etu a sezn amen se s paralelizac B4B36PDV { Paraleln a distribuovan e v ypo cty](https://reader035.vdocuments.net/reader035/viewer/2022071500/611e742a49377b59603ae4fc/html5/thumbnails/63.jpg)
Dıky za pozornost!
Budeme radi za Vasi
zpetnou vazbu! →
http://bit.ly/3q95DNl
24