[e-lang] Quick link: Guy Steele talk on design for parallel processing

Kevin Reid kpreid at mac.com
Thu Sep 10 13:43:09 EDT 2009


"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/>






More information about the e-lang mailing list