-
Notifications
You must be signed in to change notification settings - Fork 39
Description
Shared memory parallelism in Julia with multi-threading, https://www.youtube.com/watch?v=YdiZa0Y3F3c
I'm not sure that I used words "parallel" and "parallelism" in correct way. Someone should check that.
00:00 Welcome!
00:28 Why we need threads?
01:37 Task parallelism
02:43 Data parallelism
03:35 Julia's experimental threading infrastructure added in 2015/2016
04:35 Successes of aforementioned threading infrastructure
05:35 What we've learned
06:25 Problem is not adding threads to Julia, but making them useful at every level
06:59 Nested parallelism: parallel code calling function from library that is also parallel
08:18 Example: multiplying two n x n matrices
09:29 Example: running code sequentially
10:10 Example: you need O(n^2) space
10:27 Example: running code in parallel on 4 cores with OpenMP, OMP_NESTED = 1
11:26 Example: such parallel code need O(n^3) in space
11:37 Another way: work stealing
12:47 Problem: work stealing algorithm essentially run like serial algorithm
13:57 Parallel depth-first scheluding
15:52 partr -- parallel task runtime
17:15 partr implementation
18:30 partr -- priority queues
21:23 partr -- handling nested parallelism
23:22 Possible problem: we not synchronize at each spawn point
24:13 Why all these things are important?
24:59 Q&A: is Julia more suitable for implementation of partr than other languages?