Internal determinism

Kragen Javier Sitaker, 2016-08-17 (2 minutes)

Guy Blelloch and others wrote a paper in 2012, “Internally Deterministic Parallel Algorithms Can Be Fast”.

Their basic theory is that fork-join nested parallelism with no communication between concurrently running threads allows you to program efficient parallel algorithms relatively easily without introducing nondeterminism.

Or wait, maybe their threads have “shared state” and consequently depend on “non-trivial commutative operations”. If that’s true I don’t see how the stated properties of the dependency graph can be correct. I guess those commutative operations on shared state don’t enter into the dependency graph except as a set.

So for example they have an AtomicAdd operation to add a value to a shared variable, but it can’t return a value without violating internal determinism.

They support four different kinds of memory objects supporting commuting operations:

Topics