jrevelson Hacker News • Recommends
On “Julia parallel task runtime (WIP)”
#julia#taskscheduling#depth-firstscheduling
91K subscribers • 17 videos on Hallway
Advanced. Deep dive for people who know the field.
6.7K views8 years ago4 recommendations
Programming languagesSystems programmingConcurrency and parallelismPerformance and optimization
Kiran Pamnany explains why traditional fork-join and work-stealing models fail to nest parallel code effectively and presents depth-first scheduling in Julia.
A fast, efficient scheduler for parallel programming Parallel programming is essential for high performance on current processor and system architectures. Many libraries include carefully tuned parallel implementations of their functionality, but using these in a parallel program requires effective nested parallelism. We show that existing threading models such as fork-join (OpenMP) and work-stealing (Cilk/TBB/Go) fail to nest parallel code effectively, making these highly tuned parallel libraries near useless to parallel programs; a state of affairs we do not wish to inflict on Julia. A decade-old idea, parallel depth-first scheduling, offers hope. We show the promise of this approach and report on our implementation of PDF scheduling in Julia. Speaker: Kiran Pamnany is a research scientist in Intel’s Parallel Computing Lab. His research interests include programming models, high performance computing and compilers. He is the author of Julia’s existing experimental threading runtime as well as Julia’s forthcoming parallel task runtime, and is one of the people responsible for Julia joining the petaflop club with Celeste. He has a PhD in computer science from Brown University. Time Stamps: Contents Welcome! Why we need threads? Task parallelism Data parallelism Julia's experimental threading infrastructure added in 2015/2016 Successes of aforementioned threading infrastructure What we've learned Problem is not adding threads to Julia, but making them useful at every level Nested parallelism: parallel code calling function from a library that is also parallel Example: multiplying two n x n matrices Example: running code sequentially Example: you need O(n^2) space Example: running code in parallel on 4 cores with OpenMP, OMP_NESTED = 1 Example: such parallel code needs O(n^3) in space Another way: work-stealing Problem: work-stealing algorithm essentially run like a serial algorithm Parallel depth-first scheduling partr -- parallel task runtime partr implementation partr -- priority queues partr -- handling nested parallelism Possible problem: we do not synchronize at each spawn point Why all these things are important? Q&A: is Julia more suitable for implementation of partr than other languages? S/O to github.com/KZiemian for the video timestamps! Want to help add timestamps to our YouTube videos to help with discoverability? Find out more here: github.com/JuliaCommunity/YouTubeVideoTimestamps Interested in improving the auto generated captions? Get involved here: github.com/JuliaCommunity/YouTubeVideoSubtitlesWhat people say. Recommended as an insightful overview of Julia's parallel task runtime and how its depth-first scheduling algorithm avoids blocking threads.
jrevelson Hacker News • Recommends
On “Julia parallel task runtime (WIP)”
boromion Hacker News • Recommends
On “Julia parallel task runtime (WIP)”
StefanKarpinskion Hacker News • Recommends
On “Composable multi-threaded parallelism in Julia”
falkaeron Hacker News • Recommends
On “Julia v1.3”
oconnor663on Hacker News • Mentions
On “Julia v1.3”