Monday, May 10, 2010

Guy Steele: Organizing functional code for parallel execution

http://labs.oracle.com/projects/plrg/Publications/ICFPAugust2009Steele.pdf

> 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.”

> The Parallel Future
> • We need parallel strategies for problem decomposition, data > structure design, and algorithmic organization:
>
> The top-down view: Don’t split a problem into “the first” and > “the rest.” Instead, split a problem into roughly equal pieces; > recursively solve subproblems, then combine subsolutions.
>
> The bottom-up view: Don’t create a null solution, then successively > update it; Instead, map inputs independently to singleton solutions, > then merge the subsolutions treewise.
>
> Combining subsolutions is usually trickier than incremental update > of a single solution.

Posted via email from miner49r

No comments: