Programming pearls
A bridging model for parallel computation
Communications of the ACM
Algorithmic skeletons: structured management of parallel computation
Algorithmic skeletons: structured management of parallel computation
A formal model for the parallel semantics of P3L
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
Send-receive considered harmful: Myths and realities of message passing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallel functional programming in Eden
Journal of Functional Programming
A library of constructive skeletons for sequential style of parallel programming
InfoScale '06 Proceedings of the 1st international conference on Scalable information systems
Programming in Haskell
Skeleton-based parallel programming: Functional and parallel semantics in a single shot
Computer Languages, Systems and Structures
A calculus for parallel computations over multidimensional dense arrays
Computer Languages, Systems and Structures
Type Safe Algorithmic Skeletons
PDP '08 Proceedings of the 16th Euromicro Conference on Parallel, Distributed and Network-Based Processing (PDP 2008)
Extraction in Coq: An Overview
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers
Software—Practice & Experience - Focus on Selected PhD Literature Reviews in the Practical Aspects of Software Technology
Systematic Development of Correct Bulk Synchronous Parallel Programs
PDCAT '10 Proceedings of the 2010 International Conference on Parallel and Distributed Computing, Applications and Technologies
A formal programming model of Orléans skeleton library
PaCT'11 Proceedings of the 11th international conference on Parallel computing technologies
Bulk synchronous parallel ML: modular implementation and performance prediction
ICCS'05 Proceedings of the 5th international conference on Computational Science - Volume Part II
Hi-index | 0.00 |
To make parallel programming as widespread as parallel architectures, more structured parallel programming paradigms are necessary. One of the possible approaches are algorithmic skeletons. They can be seen as higher order functions implemented in parallel. Algorithmic skeletons offer a simple interface to the programmer without all the details of parallel implementations as they abstract the communications and the synchronisations of parallel activities. To write a parallel program, users have to combine and compose the skeletons. Orléans Skeleton Library (OSL) is an efficient meta-programmed C++ library of algorithmic skeletons that manipulate distributed arrays. A prototype implementation of OSL exists as a library written with the function parallel language Bulk Synchronous Parallel ML (BSML). In this paper we are interested in verifying the correctness of a subset of this prototype implementation. To do so, we give a functional specification of a subset of OSL and we prove the correctness of the BSML implementation with respect to this functional specification, using the Coq proof assistant. To illustrate how the user could use these skeletons, we prove the correctness of two applications implemented with them.