Parallel algorithms and applications · 2001 · 44 citations · 10 references
ComputingComputer EngineeringComputer ScienceCompilersParallel AlgorithmsParallel ComputingAlgorithm AnalysisData ParallelismParallel Algorithm DesignParallel ArchitecturesParallel Performance AnalysisHigher-order FunctionsParallel Algorithmic SkeletonsParallel Matrix MultiplicationStatic Bottleneck Analysis
Algorithmic skeletons provide a promising basis for the automatic utilisation of parallelism at sites of higher order function use through static program analysis. However, decisions about whether or not to realise particular higher order function instances as skeletons must be based on information about processing resources available at runtime In principle, nested higher order functions may be realised as nested skeletons. However, where higher order function arguments result from partially applied functions, free-variable bindings must be identified and communicated through the corresponding skeleton hierarchy to where those arguments are actually applied Here, a skeleton based parallelising compiler for Standard ML is presented. Hybrid skeletons, which can change from parallel to serial evaluation at runtime, are considered and mechanisms for their nesting are discussed. The main compilation stages are illustrated for simple examples. A nested higher order function based algorithm for multiplying matrices of arbitrary length integers is presented along with performance figures for compiled code running on a Fujitsu AP3000.
10
Can programming be liberated from the von Neumann style?
John Backus · Communications of the ACM · 1978 · 2.6K citations · Full text
Definitional interpreters for higher-order programming languages
John Reynolds · 1972 · 668 citations
A provable time and space efficient implementation of NESL
Guy E. Blelloch, John Greiner · 1996 · 141 citations