Shared memory parallelism in Julia | Kiran Pamnany | Cambridge Julia Meetup (May 2018)
The Julia Programming Language4 HN recommenders · recommended in 3 months, 2018-2019
7K views · 8 years ago · talk · dated
Kiran Pamnany's Cambridge Julia Meetup talk on Julia's shared memory parallelism and its new task scheduler. It argues that fork-join and work-stealing models nest poorly and presents depth-first scheduling for composable parallelism.
Recommended in Julia threading threads as an insightful, simple explanation of the new task scheduler.
1:01:04Introduction to Julia - Part 1 | SciPy 2014 | David Sanders
Enthought
80K views • 12 years ago
8:34APL at Julia's Speed | Shashi Gowda | JuliaCon 2016
The Julia Programming Language
3K views • 10 years ago
52:40Keynote. Professor Steven G. Johnson | JuliaCon 2019
The Julia Programming Language
18K views • 7 years ago
39:46JuliaRobotics: Making robots walk with Julia | Robin Deits
The Julia Programming Language
9K views • 8 years ago
1:13:53Raymond Hettinger, Keynote on Concurrency, PyBay 2017
SF Python
161K views • 9 years ago
46:10Understanding the Python GIL
David Beazley
127K views • 14 years ago
35:24The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski | JuliaCon 2019
The Julia Programming Language
79K views • 7 years ago
1:19:57Simon Peyton Jones: Data Parallel Haskell
nuACM
28K views • 16 years ago
1:00:40Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency
Hydra
47K views • 7 years ago
1:04:53Julia: to Lisp or not to Lisp?
European Lisp Symposium
24K views • 10 years ago
32:17Nathaniel J. Smith - Trio: Async concurrency for mere mortals - PyCon 2018
PyCon 2018
30K views • 8 years ago
2:32:39Clojure Concurrency - Rich Hickey
ClojureTV
73K views • 13 years ago
35:15Solid Ground // Saša Jurić
EMPEX Conference
14K views • 9 years ago
23:38Interactive notebooks ~ Pluto.jl | Fons van der Plas | JuliaCon 2020
The Julia Programming Language
48K views • 6 years ago
1:21:39Making R run Fast - Jan Vitek
John O'Neill
860 views • 10 years ago
45:11Kilim: Fast, lightweight, cheap message passing in Java.
Google TechTalks
33K views • 18 years ago
34:55"Outperforming Imperative with Pure Functional Languages" by Richard Feldman
Strange Loop Conference
98K views • 5 years ago
53:56Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure
jasonofthel33t
119K views • 13 years ago
16:04Jonathan Diegelman - Modeling Spacecraft Separation Dynamics in Julia
The Julia Programming Language
12K views • 5 years ago
25:52Halide Talk
Andrew Adams
53K views • 12 years ago
5 comments from Hacker News
Does the Rust Rayon library have the issue the speaker was describing, where parallel inner loops mostly get executed serially once an outer loop is parallelized? (I assume it does, from its Cilk heritage?) Are there workarounds for when that is a problem? Edit: Dumb mistake on my part. I was looking at the video linked in the top comment ( ▶ this video ) and then I came back to this thread and thought it was the topic.
By far the most interesting part of this release is the new multi-threading features, I recommend reading link for an overview, and watching ▶ this video for a talk about some unique stuff that's being worked on with Julia's multi-threading (though the depth-first scheduling is not in 1.3 afaik).
Consider a machine with N cores running a program which spawns N parallel tasks, each of which in turn spawns N parallel tasks. Which subtasks do the cores work on initially? If it's the first subtask of each top-level task, that's breadth-first scheduling. If it's all N subtasks of the first top-level task, that's depth-first scheduling. The latter is better for high-performance computing because it tends to be the lower level libraries that are really carefully tuned to make optimal use of the machine (think BLAS/FTT/parallel sum/prefix sum). Previously it was unknown how to implement this kind of scheduling efficiently. See this talk by Kiran Pamnany for more details: ▶ this video
checkout ▶ this video which explains the new features of the task scheduler in a simple fashion. Basically Julia is employing a new algorithm to schedule tasks, where traditional methods would get stuck/blocked. Essentially, if you run a job with parallel tasks and one of the threads finishes, it's extremely difficult to schedulate the free thread, since the data may still be used by the other threads that are busy; thus you need to have clever way to determine how to allocate computational resources. Julia is implementing results of a new paper on how to optimally do this.
This work has been a monumental collaborative effort and I think the eventual outcome will be pretty spectacular. I gave a talk at an MIT Julia meetup a few months ago that the author of this PR also spoke at; I found his talk to be an insightful overview of this work: ▶ this video