I still need to complete this page …
Muskel is a parallel programming library providing users with structured parallel constructs (skeletons) that can be used to implement efficient parallel applications. Muskel applications run on networks/clusters of workstations equipped with Java (1.5 or greater). The skeletons are implemented exploiting macro data flow technology.
Currently, muskel supports the following pre-defined skeletons:
farm modelling embarrassingly parallel computations
pipe modelling computations arranged in stages
seq wrapping sequential computations (pure functions) in such a way they can be used as parameters for other skeletons
Recently, another skeleton has been added:
In addition, muskel allows users to define their own skeletons. Exploiting the macro data flow implementation, users can define new skeletons by providing the data flow graph implementing the skeleton. The graph may be provided using proper Java code or compiled using a GUI.
Two versions of code are available at the moment:
the first one, is the original muskel, only providing pipe and farm skeletons, no possibility to extend the skeleton set, always compiling to normal form
the second one is the new muskel, with the map skeleton, in addition to pipe and farm, supporting the possibility to create new skeletons by directly providing the macro data flow graph
All versions of muskel can be downloaded and used under the GPL license.
Both versions work perfectly on clusters and network of workstations supporting Java (1.6 is required for the new, last version, 1.5 is enough to run the original muskel) without firewalls blocking RMI accesses.
I collect there the code of some sample applications using muskel (last version). The purpose is to demonstrate the expressive power of the library and to provide some hints on how “classical” muskel applications can be written to novices.
muskel is being discussed (in several different ways) in the following papers:
Marco Danelutto and Giorgio Zoppi, Behavioural skeletons meeting Services, in: Proc. of ICCS: Intl. Conference on Computational Science, Workshop on Practical Aspects of High-level Parallel Programming, pages 146-153, Springer Verlag, LNCS 5101, 2008
Marco Aldinucci, Marco Danelutto and Peter Kilpatrick, Management in distributed systems: a semi-formal approach, in: Proc. of 13th Intl. Euro-Par 2007 Parallel Processing, pages 651–661, Springer Verlag LNCS 4641, 2007
Marco Aldinucci, Marco Danelutto and Patrizio Dazzi, Muskel: an expandable skeleton environment (2007), in: Scalable Computing: Practice and Experience, 8:4(325-341)
Marco Aldinucci and Marco Danelutto, Skeleton based parallel programming: functional and parallel semantic in a single shot (2007), in: Computer Languages, Systems and Structures, 33:3-4(179-192)
Marco Aldinucci and Marco Danelutto, The cost of security in skeletal systems, in: Proc. of Intl. Euromicro PDP 2007: Parallel Distributed and network-based Processing, pages 213-220, IEEE, 2007
Marco Aldinucci and Marco Danelutto, Algorithmic skeletons meeting grids (2006), in: Parallel Computing, 32:7(449-462)
Marco Danelutto and Patrizio Dazzi, Joint structured/non structured parallelism exploitation through data flow, in: Proc. of ICCS: Intl. Conference on Computational Science, Workshop on Practical Aspects of High-level Parallel Programming, Springer Verlag, LNCS, 2006
Marco Danelutto, Irregularity handling via structured parallel programming (2005), in: Intl. Journal of Computational Science and Engineering, 3-4
Marco Danelutto,
QoS in parallel programming through application managers, in: Proc. of Intl. Euromicro PDP: Parallel Distributed and network-based Processing, pages 282-289, IEEE, 2005
Marco Danelutto, Adaptive Task Farm Implementation Strategies, in: Proc. of Intl. Euromicro PDP: Parallel Distributed and network-based Processing, pages 416-423, IEEE, 2004
Marco Aldinucci, Marco Danelutto and Paolo Teti, An advanced environment supporting structured parallel programming in Java (2003), in: Future Generation Computer Systems, 19:5(611-626) (this is the paper about Lithium, the predecessor of muskel)
* Marco Danelutto, Dynamic Run Time Support for Skeletons, in: Proc. of Intl. PARCO 99: Parallel Computing, pages 460-467, Imperial College Press, 1999 (this is the paper introducing macro data flow implementation for skeleton based programming environments)