practical parallel programmingparallel.vub.ac.be/education/ppp/slides2019/ppp_1_introduction.pdf ·...
TRANSCRIPT
![Page 1: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/1.jpg)
Practical Parallel Programming
Introduction
Jan Lemeire
Practical Parallel Programming
October - December 2019
Principles of Parallel Programming, Calvin Lin & Lawrence Snyder,
Chapters 1 & 2
![Page 2: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/2.jpg)
![Page 3: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/3.jpg)
![Page 4: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/4.jpg)
September 14, 2015
![Page 5: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/5.jpg)
In phase
Out of phase
Superposition of signals
UPDATE: August 14, 2017
Detection of a gravitional wave by 3 detectors,
also by the European Virgo.
1.8 billion years ago, collision of black holes
of 25 and 31 times the mass of the sun
![Page 6: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/6.jpg)
14 augustus 2017 om 12.30.43 uur
Belgische tijd.
Het verschijnsel is voor het eerst tegelijk
waargenomen door drie detectoren, en
twee soorten van detectoren: de twee
LIGO's in de VS en de Europese Virgo.
Voor de Europese Virgo was de
waarneming een primeur. Virgo, die een
uitgebreide update heeft gekregen en nu
de Advanced Virgo heet, was nog maar
twee weken opnieuw bezig met het
verzamelen van wetenschappelijke
gegevens.
De botsing vond plaats op zowat 1,8
miljard lichtjaar afstand.
GW170814, zoals de nieuw ontdekte
zwaartekrachtgolf is gedoopt (Gravitational
Wave en de datum), is veroorzaakt in de
laatste ogenblikken van de versmelting van
twee zwarte gaten die 31 en 25 keer zo
zwaar waren als de zon
Albert Einstein had in 1915 geopperd
dat het heelal bestaat uit ruimte en
tijd, en dat die één geheel vormen.
Na een heftige gebeurtenis kan die
"ruimtetijd" trillen. De schokgolven,
zwaartekrachtgolven, gaan dan door
het heelal als rimpelingen na een
steen in een vijver. Bij zo'n rimpeling
rekt de ruimte iets uit of krimpt zij iets.
Hoe groter de massa en hoe sneller
de beweging van een massarijk
object, des te sterker de
zwaartekrachtgolf.
![Page 7: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/7.jpg)
![Page 8: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/8.jpg)
8Pag. / 72
The third pillar of the scientific world
![Page 9: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/9.jpg)
Jan Lemeire ([email protected])
Civil Engineer - elektronics, 1994, VUB
+ additional masters in computer sciences (1995)
Worked for 4 year in the private sector, in 2 IT-consultancy companies
2000-2007: did PhD at the VUB as assistant
Thaught practica informatics
Since 2008: professor at VUB
Course ‘Parallel systems’ in the masters
Since 2011: ‘Informatics’ first year bachelors engineer
Since october 2013: teaching to engineers in industrial sciences
Computer architecture, Electronics, Informatics
Research topics:
parallel processing, gpu computing, processor architectures
data mining/machine learning/probabilistic models
Robot vision, localization, object recognition
![Page 10: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/10.jpg)
10Pag. / 72
Overview of Courses
Parallel Systems
Multiprocessors & reconfigurable
hardware
Computer-architectuur
Computer-architectuur
part I
Practical Parallel Programming
GPU computing
Multiprocessors & reconfigurable
hardware
Compute architecture
(sequential processor)
Introductory course, for newbies in parallel computing
Advanced course, focused on GPUs
Only FPGAs
![Page 11: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/11.jpg)
11Pag. / 72
Goals of course
Understand architecture of modern parallel systems.
Employ software technologies for parallel programming.
Understand their performance.
50% Oral exam on theoretical part
30% Project: processor in VHDL
20% Multithreading assignment
50% Oral exam on theoretical part
50% Project: parallelize an algorithm with the 3 technologies
Computer-architectuur
Practical Parallel Programming
![Page 12: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/12.jpg)
12Pag. / 72
References
"Principles of Parallel Programming" by Calvin Lin and Larry Snyder
Chapters 1-6, 7 (partly)
"Introduction to Parallel Computing" by Grama, Gupta, Karypsis & Kumar.
Chapters 1-7, 8.2, 9, 11
http://parallel.vub.ac.be/education/parsys
PPP
KUMAR
![Page 13: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/13.jpg)
13Pag. / 72
2005: “10GHz in 2010”
https://www.quora.com/Why-havent-CPU-clock-speeds-increased-in-the-last-5-years
![Page 14: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/14.jpg)
14Pag. / 72
The Free Lunch is Over?
![Page 15: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/15.jpg)
15Pag. / 72
![Page 16: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/16.jpg)
16Pag. / 72
The Free Lunch is Over
http://www.gotw.ca/publications/concurrency-ddj.htm
Why You Don’t Have 10GHz Today?
• heat/surface is the problem (power wall)
• 12 nm would mean electric paths of 10 atoms wide!
Moreover:
• memory bottleneck
• instruction level parallelism (ILP) wall
What about Moore’s Law?
➢ increase of Clock speed: stopped
➢ increase of Transistors: ongoing
It’s now about the number of cores!
![Page 17: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/17.jpg)
17Pag. / 72
Multi- & manycores
![Page 18: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/18.jpg)
18Pag. / 72
Graphics Card Processors
Graphics card
![Page 19: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/19.jpg)
20Pag. / 72
Overview
1. Definition
2. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 20: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/20.jpg)
21Pag. / 72
What is a Parallel System?
CPU
CPU
M
MCPU
M
N
➢Memory
➢Processors
➢ Interconnect
CPU
M
CPU CPU
M
CPU
CPU
M
CPU
M
CPU
MN
![Page 21: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/21.jpg)
22Pag. / 72
Biggest Parallel System?
BrainInternet
Frequency of brain waves: 10Hz
Number of neurons: 100 billion = 1011
![Page 22: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/22.jpg)
24Pag. / 72
Overview
1. Definition
2. History
3. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 23: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/23.jpg)
25Pag. / 72
Calculemus!
Berechnen wir!
![Page 24: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/24.jpg)
26Pag. / 72
Leibniz
Droomde van de “Calculus ratiocinator”
Een logisch denkend apparaat
1646 – 1716
![Page 25: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/25.jpg)
27Pag. / 72
Eerste computer, mechanisch
Charles Babbage
1791-1871
![Page 26: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/26.jpg)
28Pag. / 72
De eerste informaticus
Beschrijft wat software isZe ziet in dat je meer kan doen met eencomputer dan enkel berekenen
Schrijft eerstealgoritme/programma
Ada Lovelace
1815 – 1852
![Page 27: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/27.jpg)
29Pag. / 72
ENIAC
Eerste computer: WOII
By Mauchly and Eckert
![Page 28: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/28.jpg)
30Pag. / 72
De eerste computer: ENIAC
ENIAC’s vacuumtubes
John Mauchly and John Eckert, 1945
![Page 29: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/29.jpg)
31Pag. / 72
Von Neumann wilt een computer bouwen…
John Von Neumann
![Page 30: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/30.jpg)
32Pag. / 72
De ivoren toren van IAS
Institute for Advanced StudiesOp Campus van Princeton University (New Jersey)
Op de schoot bij Einstein…
![Page 31: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/31.jpg)
33Pag. / 72
Computers: the next step
Stored-program computerProgramma ook opslaan in het geheugen
Is ook ‘input’ van de computer en ‘data’
Idee nam Von Neumann mee bij zijn volgende computer: de EDVAC
![Page 32: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/32.jpg)
34Pag. / 72
The Von Neumann architecture
INHERENTLY SEQUENTIAL PROCESSOR
![Page 33: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/33.jpg)
35Pag. / 72
First parallel computers
1980s, early `90s: a golden age for parallel computing
special parallel computers: Connection Machine, MasPar, Cray (VUB also!)
True supercomputers: incredibly exotic, powerful, expensive
Based on vectorization (see further)
But…impact of data-parallel computing limited
Thinking Machines sold 100s of systems in total
MasPar sold ~200 systems
![Page 34: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/34.jpg)
36Pag. / 72
Parallel computing now
Parallel computing steamrolled from behind by the inexorable advance of commodity technology
Economy of scale rules!
Commodity technology outperforms special machines
Massively-parallel machines replaced by clusters of ever-more powerful commodity microprocessors
Clusters: federates of standard pcs (MPI & OpenMP)
In this course we focus on widespread commodity parallel technology
![Page 35: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/35.jpg)
37Pag. / 72
More…
Supercomputer Cluster
Multicore
But also a single core…
![Page 36: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/36.jpg)
38Pag. / 72
Flynn's taxonomy of architectures
Single Instruction
Multiple Instructions
Single Data
Multiple Data
![Page 37: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/37.jpg)
39Pag. / 72
Figure 1.1. Enlarging Performance Gap between GPUs and CPUs.
Multi-core CPU
Many-core GPU
Courtesy: John Owens
CPUs vs GPUs
![Page 38: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/38.jpg)
40Pag. / 72
FASTRA at University of Antwerp
Collection of graphical cards
FASTRA 8 cards = 8x128 processors = 4000
euro
Similar performance as University’s
supercomputer (512 regular desktop PCs)
that costed 3.5 million euro in 2005
http://fastra.ua.ac.be
![Page 39: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/39.jpg)
41Pag. / 72
Overview
1. Definition
2. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 40: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/40.jpg)
42Pag. / 72
Why use parallel systems
Complete computation faster
More (local) memory available
But… not simple!
Why?? Since a parallelizing compiler
does not exist
![Page 41: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/41.jpg)
43Pag. / 72
Speedup
Ideally: speedup = number of processors
![Page 42: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/42.jpg)
44Pag. / 72
Speedup i.f.o. processors
1) Ideal, linear speedup
2) Increasing, sub-linear speedup
3) Speedup with an optimal number of processors
4) No speedup
5) Super-linear speedup
![Page 43: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/43.jpg)
45Pag. / 72
Parallel vs Distributed
Parallel computing: provide performance.In terms of processing power or memory
To solve a single problem
Typically: frequent, reliable interaction, fine grained, low overhead, short execution time.
Distributed computing: provide convenience.In terms of availability, reliability and accessibility from many different locations
Typically: interactions infrequent, with heavier weight and assumed to be unreliable, coarse grained, much overhead and long uptime.
PPP 20-21OUR FOCUS
![Page 44: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/44.jpg)
46Pag. / 72
Example of distributed computing: 3rd generation web application
Web
Client
Application Server
DataLocal
Client
Firewall
Component
Component
Component
Component Services
Web server
![Page 45: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/45.jpg)
47Pag. / 72
Overview
1. Definition
2. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 46: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/46.jpg)
48Pag. / 72
Sequential programming world
Understand this to port it to the parallel world
Write Once, Compile Everywhere
C, C++, Pascal, Modula-2, …
Compile Once, Run Everywhere
Java, C#
Sequential programming is close to our algorithmic thinking (> 2 GL).
Von Neumann architecture provides useful abstraction
![Page 47: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/47.jpg)
49Pag. / 72
The Random Access Machine
Sequential computer = device with an instruction execution unit and unbounded memory.
Memory stores program instructions and data.
Any memory location can be referenced in ‘unit’ time
The instruction unit fetches and executes an instruction every cycle and proceeds to the next instruction.
Today’s computers depart from RAM, but function as if they match this model.
Model guides algorithm design.
Programs do not perform well on e.g. vector machines.
CPU
M
PPP 58-60
![Page 48: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/48.jpg)
50Pag. / 72
Software success relies on
abstraction & user transparencyA library offers a service and hides implementation details for you.
Layered approaches such as the
OSI model in telecommunication
3rd generation language =>
assembler => machine code =>
machine
Language hides hardware details
Software engineering concepts
![Page 49: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/49.jpg)
51Pag. / 72
Generic Compilation ProcessPPP 22-25
![Page 50: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/50.jpg)
Algorithm
Implementation
Compiler
Automatic
optimization
![Page 51: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/51.jpg)
53Pag. / 72
Parallel compilers
Goal: automatically compile sequential program into an efficient parallel program that does the same thing.
Programmers would not have to learn special parallel constructs
Is a dream that seems beyond reach…
Many user-defined algorithms contain data dependencies that prevent efficient parallelization.
Automatic dependency analysis and algorithm transformation: still in their infancy, far from optimal. Real breakthrough not expected in the near future.
For efficient parallel programs, a simple hardware model such as the RAM model does not work.
PPP 22-23
![Page 52: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/52.jpg)
54Pag. / 72
Example: Iterative Sum
Parallelism? Independent computations needed.
n data values x0, …, xn in array xsum=0;
for (int i=0;i<n;i++)
sum+=x[i];
By associativity
of sum
Can this be done
by a compiler??
PPP 23
![Page 53: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/53.jpg)
55Pag. / 72
Overview
1. Definition
2. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 54: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/54.jpg)
Parallel Systems
Message-passing
MPI
Explicit multi-
threading
OpenCL/CUDA
OpenMP
Vectorinstructions
PROC
M
PROC
M
PROC
MN
PROC PROC
M
PROC
P P P P
M
P P P P
M
M
Distributed memory Shared memory
coarse-grainparallelism
fine-grainparallelism
SIMDcoarse-grainparallelism
SIMT
![Page 55: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/55.jpg)
60Pag. / 72
1. Shared Memory
Natural extension of sequential computer: all memory can be referenced (single address space). Hardware ensures memory coherence.
Easier to use• Through multi-threading
Easier to create faulty programs• Race conditions
More difficult to debug• Intertwining of threads is implicit
Easier to create inefficient programs• Easy to make non-local references
![Page 56: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/56.jpg)
61Pag. / 72
2. Distributed Memory
Processors can only access their own memory and communicate through messages.
Requires the least hardware support.
Easier to debug.• Interactions happens in well-defined program parts
• The process is in control of its memory!
Cumbersome communication protocol is needed• Remote data cannot be accessed directly, only via request.
![Page 57: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/57.jpg)
62Pag. / 72
3. Fine-grain parallelism
Needs many small pieces that can be processed in parallel.
Enormous processing power: vector processors, GPUs
No single programming model• OpenCL versus vectorization
Harder to program
Independence & locality & high computational intensity needed to reach peak performance.
![Page 58: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/58.jpg)
65Pag. / 72
Overview
1. Definition
2. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 59: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/59.jpg)
66Pag. / 72
1. Multithreading
One process is split into separate threads, executing a different sequence of instructions
having access to the same memory
= Shared address space approach
CPU CPU
M
CPU
![Page 60: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/60.jpg)
67Pag. / 72
Multi-threading primitives
Fork & join
![Page 61: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/61.jpg)
70Pag. / 72
Example: Counting 3s
Parallelism? Yes.
Multithreaded solution: divide counting
count=0;
for (int i=0;i<array.length;i++)
if (array[i] == 3)
count++;
n data values x0, …, xn
in array array
PPP 29
![Page 62: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/62.jpg)
71Pag. / 72
Multithreaded Counting 3s
count=0;
Thread[] threads = new Thread[nbrThreads];
for(int t=0;t<nbrThreads;t++){
final int T = t;
threads[t] = new Thread(){
public void run(){
int length_per_thread=array.length/ nbrThreads;
int start=T*length_per_thread;
for(int i=start;i<start+length_per_thread; i++)
if (array[i] == 3)
count++;
}
};
threads[t].start();
}
// wait until all threads have finished
for(int t=0;t<nbrThreads;t++)
try {
threads[t].join();
} catch (InterruptedException e) {}
Note: this program is faulty
Will be discussed later
![Page 63: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/63.jpg)
73Pag. / 72
Counting 3s: experiments
Counting 3s in an array of 1000 elements and 4 threads:
* Seq : counted 100 3s in 234us
* Par 1: counted 100 3s in 3ms 615us
Counting 3s in an array of 40000000 elements and 4 threads:
* Seq : counted 4000894 3s in 147ms
* Par 1: counted 3371515 3s in 109ms
On a dual core processor
![Page 64: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/64.jpg)
74Pag. / 72
2. Message-passing
Different processesCommunicate through messages
Got their own dedicated memory (and got full control over it)
=Message-passing approach
CPU
M
CPU
M
CPU
MN
![Page 65: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/65.jpg)
75Pag. / 72
Messages…
The ability to send and receive messages is all we need
void Send(message, destination)
char[] Receive(source)
boolean IsMessage(source)
But… we also want performance!More functions will be provided
![Page 66: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/66.jpg)
76Pag. / 72
Message-passing Counting 3s
int count3s_master(int[] array){
int length_per_slave=array.length/nbr_slaves;
for (slave: slaves)
send integer subarray of length length_per_slave to slave;
int sum=0;
for (slave: slaves)
sum+= receive integer from slave;
return sum;
}
int count3s_slave(){
int[] array = receive array from master;
count=0;
for (int i=0;i<array.length;i++)
if (array[i] == 3)
count++;
send count to master;
}
pseudo code
= sequential program!
![Page 67: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/67.jpg)
77Pag. / 72
Focus on low-level approaches
MPI, multi-threading & OpenCL: low-level primitives
Higher-level alternatives exist, but have not proven to be successfull for a wide variety of parallelizationproblems
Fail to hide low-level aspects
We’ll focus on the 3 main low-level approaches
You will be able to learn/use the other approaches yourself
![Page 68: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/68.jpg)
79Pag. / 72
Overview
1. Definition
2. Why?
3. Parallel compiler?
4. Parallel architectures
5. Parallel Processing Paradigms
Multi-threading.
Message-passing.
6. End notes
![Page 69: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/69.jpg)
80Pag. / 72
The goals of this course
Learn to write good parallel programs, which
Are correct
Achieve good performance
Are scalable to large numbers of processors
Are portable across a wide variety of parallel platforms.
Are generic for a broad class of problems.
PPP 39-41
![Page 70: Practical Parallel Programmingparallel.vub.ac.be/education/ppp/slides2019/PPP_1_Introduction.pdf · waarneming een primeur. Virgo, die een uitgebreide update heeft gekregen en nu](https://reader034.vdocuments.us/reader034/viewer/2022051904/5ff539f9e7a20a396936e8e2/html5/thumbnails/70.jpg)
81Pag. / 72
To attain goals…
Master low-level and high-level IT skillsLow-level: hardware and system
High-level: Software engineering
Combine knowledge and inventivity
Approach: look at it as a user who wants to know as little as possible