Quick link: Guy Steele talk on design for parallel processing
Kevin Reid <[email protected]>
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
"Organizing Functional Code for Parallel Execution or, foldl and foldr Considered Slightly Harmful" <http://research.sun.com/projects/plrg/Publications/ICFPAugust2009Steele.pdf > First three slides: > The Big Messages > > • Effective parallelism uses trees. > • Associative combining operators are good. > • MapReduce is good. Catamorphisms are good. > • There are systematic strategies for parallelizing superficially > sequential code. > • We must lose the “accumulator” paradigm and emphasize “divide-and- > conquer.” > This Talk Is about Performance > > The bag of programming tricks that has served us so well for the > last 50 years is the wrong way to think going forward and must be > thrown out. > Why? > > • Good sequential code minimizes total number of operations. > > Clever tricks to reuse previously computed results. > > Good parallel code often performs redundant operations to reduce > communication. > • Good sequential algorithms minimize space usage. > > Clever tricks to reuse storage. > > Good parallel code often requires extra space to permit temporal > decoupling. > • Sequential idioms stress linear problem decomposition. > > Process one thing at a time and accumulate results. > > Good parallel code usually requires multiway problem decomposition > and multiway aggregation of results. -- Kevin Reid <http://switchb.org/kpreid/>