Derivation of Efficient and Correct
Functional Bulk Synchronous Parallel Programs
Introduction
With the current generalization of parallel architectures and
increasing requirement of parallel computation arises the concern of
applying formal methods, which allow specifications of parallel and
distributed programs to be precisely stated and the conformance of an
implementation to be verified using mathematical techniques. However,
the complexity of parallel programs, compared to sequential ones,
makes them more error-prone and difficult to verify. This calls for a
strongly structured form of parallelism, which should not only be
equipped with an abstraction or model that conceals much of the
complexity of parallel computation, but also provide a systematic way
of developing such parallelism from specifications for practically
nontrivial examples.
The Bulk Synchronous Parallel (BSP) model is a model for
general-purpose, architecture-independent parallel programming. The
BSP model consists of three components, namely a set of processors
each with a local memory, a communication network, and a mechanism for
globally synchronizing the processors. A BSP program proceeds as a
series of supersteps. In each superstep, a processor may operate only
on values stored in local memory. Values sent through the
communication network are guaranteed to arrive at the end of a
superstep. Although the BSP model is simple and concise, it remains
as a challenge to systematically develop efficient and correct BSP
programs that meet given specifications.
We proposed, with colleagues of the University of Tokyo and the
National Institute for Informatics, the first general framework, as
far as we are aware, for systematic development of certified
functional BSP parallel programs. More specifically,
our main technical contributions can be summarized as
follows:
-
We define BH, a new homomorphic skeleton, which can not only capture
the essence of BSP computations at algorithmic level, but also serve
as a bridge by mapping high level specification to low level BSP
parallel programs;
-
We develop a set of useful theories in Coq for systematic and formal
derivation of programs from specification to BH, and we provide a
certified parallel implementation of BH in the functional parallel
programming language Bulk Synchronous Parallel ML (or BSML an
extension of Objective Caml) so that a certified BSP parallel program
can be automatically extracted;
-
We demonstrate with examples that our new framework can be very useful
to develop certified BSP parallel programs for solving various
nontrivial problems.
The Work
The goals of this internship are:
- To learn the framework by deriving new small programs;
- To derive one or two bigger applications using the framework and
the Coq proof assistant;
- To extract parallel programs from the Coq development and
experiment with them on the "Godzilla" machine (2 processors each
being a 6 cores processor);
- If necessary, to perform some code refactoring in the Coq
development in order to attain better parallel performances.
Organization
- Advisors : Frédéric Loulergue, Julien Tesson
- Location : LIFO
(Université d'Orléans)
References
- Y. Bertot and
P. Casteran, Interactive
Theorem Proving and Program Development, Springer, 2004.
-
E. Chailloux, P. Manoury et B. Pagano, Développement
d'applications en Objective Caml, O'Reilly, 2003.
-
L. Gesbert, Z. Hu, K. Matsuzaki, F. Loulergue and J. Tesson.
Systematic Development of Correct Bulk Synchronous Parallel Programs,
submitted for publication, November, 2009
-
F. Loulergue, F. Gava, and
D. Billiet. Bulk Synchronous Parallel ML: Modular Implementation and
Performance Prediction. In Vaidy S. Sunderam, G. Dick van Albada,
Peter M. A. Sloot, and Jack Dongarra, editors,International
Conference on Computational Science, Part II, number 3515 in
LNCS, pages 1046-1054. Springer, 2005
- P. Narbel, Programmation fonctionnelle,
générique et objet, Vuibert, 2005
- D. B. Skillicorn, J. M. D. Hill, and W. F. McColl. Questions and
Answers about BSP. Scientific Programming, 6(3), 1997