[plain]
Sklml
Skeleton programming
Traditional approaches to parallelism (MPI, OpenMP)
-
intrusive:
rougeclairmix sequential instructions rougeclairwith parallel primitives;
- rougeclairlow level notations and concepts;
- rougeclairfine tune of parallelism;
rougeclairvery efficient parallel programs;
- rougeclairerror prone:
very demanding in programming/debugging effort.
Sklml approach
-
non intrusive:
rougeclairparallel code rougeclairis apart from sequential code;
- skeleton combinators:
rougeclairhigh level parallel programming schemes;
- skeleton algebra:
rougeclaircompositional description of parallelism;
- reliable:
rougeclairdeterministic parallel execution;
- rougeclairDomain rougeclairSpecific rougeclairLanguage
embeded in OCaml.
Skeleton algebra
-
skeletons are functions over data streams;
- coarse grain parallelism;
- task parallel combinators: pipe, farm;
- data parallel combinators:
prod, sum, farm_vector, rails;
- control combinator: loop.
Safety
-
rougeclairwell defined semantics:
given by the sequential interpretation;
- rougeclairproof feasibility:
proofs for all basic combinators imply proofs for all programs;
- weak adequacy theorem:
rougeclairsequential and parallel versions are compiled from the
rougeclairsame source code;
- strong adequacy theorem:
rougeclairsequential and parallel versions always give the
rougeclairsame results.
Skeletons in practice
Development methodology
-
rougeclairdevelop and debug using the rougeclairsequential semantics;
- run heavy computations in rougeclairparallel after a simple
rougeclairrecompilation.
Example
Deploy nw independent workers computing f, then compose
g:
rougeclairfarm (rougeclairskl () -> f, nw) rougeclair|||
rougeclairskl () -> g;;
Abstraction over combinators
make_domain:
rougeclairspecialized combinator for domain decomposition.
Foreign languages (C, C++, Fortran)
External communication layer: Pio (rougeclairpolyglot I/O library).
Sklml is free software available at http://sklml.inria.fr/.
This document was translated from LATEX by
HEVEA.