Applications of a strategy for designing divide-and-conquer algorithms
Science of Computer Programming
Solving problems on concurrent processors. Vol. 1: General techniques and regular problems
Solving problems on concurrent processors. Vol. 1: General techniques and regular problems
Algebraic identities for program calculation
The Computer Journal - Special issue on Lazy functional programming
Algorithmic skeletons: structured management of parallel computation
Algorithmic skeletons: structured management of parallel computation
LogP: towards a realistic model of parallel computation
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Introduction to parallel computing: design and analysis of algorithms
Introduction to parallel computing: design and analysis of algorithms
Journal of Parallel and Distributed Computing
Using MPI: portable parallel programming with the message-passing interface
Using MPI: portable parallel programming with the message-passing interface
Foundations of parallel programming
Foundations of parallel programming
Parallel programming with MPI
Formal derivation of efficient parallel programs by construction of list homomorphisms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using PLAPACK: parallel linear algebra package
Using PLAPACK: parallel linear algebra package
Models and languages for parallel computation
ACM Computing Surveys (CSUR)
MagPIe: MPI's collective communication operations for clustered wide area systems
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Optimization Rules for Programming with Collective Operations
IPPS '99/SPDP '99 Proceedings of the 13th International Symposium on Parallel Processing and the 10th Symposium on Parallel and Distributed Processing
A Methodology for Deriving Parallel Programs with a Family of Parallel Abstract Machines
Euro-Par '97 Proceedings of the Third International Euro-Par Conference on Parallel Processing
A Monadic Calculus for Parallel Costing of a Functional Language of Arrays
Euro-Par '97 Proceedings of the Third International Euro-Par Conference on Parallel Processing
Systematic Efficient Parallelization of Scan and Other List Homomorphisms
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing-Volume II
Proceedings of the IFIP TC2/WG 2.1 State-of-the-Art Report on Formal Program Development
HPCA '99 Proceedings of the 5th International Symposium on High Performance Computer Architecture
Parallel Implementations of Combinations of Broadcast, Reduction and Scan
PDSE '97 Proceedings of the 2nd International Workshop on Software Engineering for Parallel and Distributed Systems
Communications of the ACM
Message passing without send-receive
Future Generation Computer Systems - Parallel computing technologies (PaCT-2001)
Send-Recv Considered Harmful? Myths and Truths about Parallel Programming
PaCT '01 Proceedings of the 6th International Conference on Parallel Computing Technologies
SAT: a programming methodology with skeletons and collective operations
Patterns and skeletons for parallel and distributed computing
Send-receive considered harmful: Myths and realities of message passing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
We present a systematic approach to the development of message passing programs. Our programming model is SPMD, with communications restricted to collective operations: scan, reduction, gather, etc. The design process in such an architecture-independent language is based on correctness-preserving transformation rules, provable in a formal functional framework. We develop a set of design rules for composition and decomposition. For example, scan followed by reduction is replaced by a single reduction, and global reduction is decomposed into two faster operations. The impact of the design rules on the target performance is estimated analytically and tested in machine experiments. As a case study, we design two provably correct, efficient programs using the Message Passing Interface (MPI) for the famous maximum segment sum problem, starting from an intuitive, but inefficient, algorithm specification.