-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathREADME.jl
44 lines (42 loc) · 1.71 KB
/
README.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# # JuliaCon 2019 Parallel Computing Workshop
#
# This workshop will cover:
#
# * Introduction to parallelism
# * What is happening to our computers?
#
# * Parallelism strategies
# * SIMD and best single-core performance (brief overview)
# * Multi-threading (hands on)
# * Cooperative multi-tasking
# * Parallel algorithm design
# * Multi-process (hands on)
# * Shared memory
# * Distributed memory
# * GPU programming
#
# * Challenges of parallel computing
# * Order of execution
# * execution of out order of Possibility
# * race conditions with simultaneous access and mutation
# * Data access and movement
# * Code access and movement
# * Appropriately matching the parallelism strategy to your machine capabilities
# * Appropriately matching the parallelism strategy with the problem at hand
#-
# ## What is happening to our computers!?
#
# ![](https://raw.githubusercontent.com/JuliaComputing/JuliaAcademyData.jl/master/courses/Parallel_Computing/images/40-years-processor-trend.png)
#
# Not only have we gained multiple cores, but processors have become extremely
# complex, with multiple levels of caches, pipelines, predictions, speculations...
#
# ## What is hard about parallel computing
# * We don't think in parallel
# * We learn to write and reason about programs serially
# * The desire for parallelism often comes _after_ you've written your algorithm (and found it too slow!)
#
# ## Summary:
# * Current computer archetectures push us towards parallel programming for peak performance — even if we're not on a cluster!
# * But it's hard to design good parallel algorithms
# * And it's hard to express and reason about those algorithms