Current software development projects


Fastflow is a parallel programming framework for multi-core platforms based upon non-blocking lock-free/fence-free synchronization mechanisms. The framework is composed of a stack of layers that progressively abstracts out the programming of shared-memory parallel applications. The goal of the stack is twofold: to ease the development of applications and make them very fast and scalable. Fastflow design principle does not admit to achieve expressivity and programmability with a byproduct of performance penalty. Fastflow is particularly targeted to the development of streaming applications.


VirtuaLinux is a Linux meta-distribution that allows the creation, deployment and administration of virtualized clusters with no single point of failure. VirtuaLinux architecture supports disk-less configurations and provides an efficient, iSCSI based abstraction of the SAN. Clusters running VirtuaLinux exhibit no master node to boost resilience and flexibity.

VirtuaLinux-1.0.7-release.iso (multi-tier - 1.9 GB), take a look at the project web site on sourceforge.


Package Date Size Version Notes
gridcomp_6_11_08.tgz (Offline) 39MB 6 Nov 2008 D.NFCF.05 Beta 1 Templates for Farm and DP Beske and their managers. Dynamic contracts. Management overlay (basic version). Based on proactive 3.9.
gridcomp_11_11_08.tgz (Offline) 39MB 11 Nov 2008 D.NFCF.05 Beta 2 D.NFCF.05 Beta 1 with bugfixes (farm remove worker).
gridcomp_14_11_08.tgz (Offline) 39MB 14 Nov 2008 D.NFCF.05 Beta 3 D.NFCF.05 Beta 2 with bugfixes (DP examples).
gridcomp_19_11_08.tgz (Offline) 37MB 19 Nov 2008 D.NFCF.05 Beta 4 D.NFCF.05 Beta 3 with bugfixes (remove worker and count in farm BeSke. Contract improvements in two-level management).
gridcomp_11_12_08.tgz (Offline) 35MB 11 Dic 2008 D.NFCF.05 Beta 5 D.NFCF.05 Beta 4 with bugfixes, support for composite workers. User manual (Doc directory).
gridcomp_D_NFCF_05.tgz 15MB 15 Jan 2009 D.NFCF.05 release 1 D.NFCF.05 Release for Proactive 3.9 and User manual (Doc directory).
gridcomp_P4_b1_19_01_09.tgz 33MB 19 Jan 2009 D.NFCF.05.P4 Beta 1 D.NFCF.05 Release for Proactive 4.0.2 and User manual (Doc directory). First beta version. Includes new monitoring infrastucture, farm workers and ADL garbage collection, Fully distributed management overlay (farm and DP) and composition of them, and many other features. It is binary compatible with D.NFCF.05 Release for DP, and require little adjustments at the worker ADL (.fractal file) for farm.
gridcomp_P4_b2_21_01_09.tgz 33MB 21 Jan 2009 D.NFCF.05.P4 Beta 2 D.NFCF.05.P4 Beta 1 with bugfixes and full worker reuse (farm only)

Past software development projects

Muskel (2005)

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. Muskel extends Lithium with many interesting features, in particular with adaptive and autonomic features.

Ad-HOC (2004)

AD-HOC (Adaptive Distributed Herd of Object Caches), is a fast and robust distributed object repository. It provides applications with a distributed storage manager that virtualise PC's memories into a unique common distributed storage space. Ad-HOC can effectively be used to implement DSMs as well as distributed cache subsystems. a high-performance distributed shared memory server for cluster and grid, and its applications. ADHOC is a basic block enabling the development of shared memory run-time supports and applications for dynamic and unreliable executing environments (C++, GPL). The libraries and applications developed on top of ADHOC include:

ASSIST (2003)

ASSIST (A Software development System based on Integrated Skeleton Technology) is a parallel programming environment based on skeleton and coordination language technology aimed at the development of distributed high-performance applications. ASSIST applications should be compiled in binary packages that can be deployed and run on grids, including those exhibiting heterogeneous platforms. Deployment and run is provided through standard middleware services (e.g. Globus) enriched with the ASSIST run-time support. ASSIST applications are described by means of a coordination language, which can express arbitrary graphs of modules, interconnected by typed streams of data. For more information see ASSIST papers.

Lithium (2002)

Lithium is a Java-based parallel programming library providing users with structured parallel constructs (patterns/skeletons) that can be used to implement efficient parallel applications on clusters. The skeletons (including pipe, farm, map, reduce, loop) are implemented exploiting macro data flow technology. Lithium skeletons admit a formal specification both functional and extra-functional behavior.

Eskimo (2002)

Eskimo (Easy SKeleton Interface - Memory Oriented), which was part of my PhD dissertation, is a first (maybe a bit naive) tentative to bring skeletal/pattern-based programming on the shared memory model. To my knowledge, there was no previous experiments since skeletal programming was exclusively living in the message passing arena. From a certain viewpoint, it can be considered an ancestor of Fastflow (and other libraries in this class, such as Intel TBB).

Meta (2000)

META is a toolkit for the source-to-source optimisation of pattern-based/skeletal parallel programs (OCaml, GPL). It includes a quite efficient subtree-matching implementation.

SkIE (1998)

SkIE (Skeleton-based Integrated Environment) is a skeleton-based parallel programming environment. SkIE was an engineered version of P3L developed within Quadrics Supercomputing World (QSW) and Alenia Aerospace.

P3L (1992)

P3L: Pisa Parallel Programming Language. If you still think than Google invented MapReduce, take a look at P3L paper. I did not directly participated to the design, I was a student at this point in time …