"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/>
_______________________________________________
e-lang mailing list
e-lang@...
http://www.eros-os.org/mailman/listinfo/e-lang