Completed
Possible problem: we do not synchronize at each spawn point
Class Central Classrooms beta
YouTube videos curated by Class Central.
Classroom Contents
Shared Memory Parallelism in Julia with Multi-Threading - Parallel Depth-First Scheduling
Automatically move to the next video in the Classroom when playback concludes
- 1 Welcome!
- 2 Why we need threads?
- 3 Task parallelism
- 4 Data parallelism
- 5 Julia's experimental threading infrastructure added in 2015/2016
- 6 Successes of aforementioned threading infrastructure
- 7 What we've learned
- 8 Problem is not adding threads to Julia, but making them useful at every level
- 9 Nested parallelism: parallel code calling function from a library that is also parallel
- 10 Example: multiplying two n x n matrices
- 11 Example: running code sequentially
- 12 Example: you need O(n^2) space
- 13 Example: running code in parallel on 4 cores with OpenMP, OMP_NESTED = 1
- 14 Example: such parallel code needs O(n^3) in space
- 15 Another way: work-stealing
- 16 Problem: work-stealing algorithm essentially run like a serial algorithm
- 17 Parallel depth-first scheduling
- 18 partr -- parallel task runtime
- 19 partr implementation
- 20 partr -- priority queues
- 21 partr -- handling nested parallelism
- 22 Possible problem: we do not synchronize at each spawn point
- 23 Why all these things are important?
- 24 Q&A: is Julia more suitable for implementation of partr than other languages?