Gaspard was at first a specification environment dedicated to Signal Processing applications. It now handles more general computation intensive applications. It relies on a visual language. Compilation and code transformation works are necessary to produce efficient code on parallel (and even sequential) architectures.
The first version of Gaspard extends the Array-OL language developed at Thomson Marconi Sonar. An Array-OL program specifies the dependences between array elements produced and consumed by tasks. In particular, temporal dependences are specified by referencing elements that belong to an infinite dimension of an array. This model allows to easily program signal processing applications.
A basic compilation strategy of Array-OL on a workstation has been defined. This basic compilation does not allow to generate efficient code for any Array-OL application; specially those defining infinite arrays. We have proposed to transform such Array-OL applications to hierarchical Array-OL applications that may be compiled with the basic strategy.
We introduced the ODT: a representation of Array-OL applications in a formalism of relations between points of Z^n spaces; code transformations are applied at this level.
We also developed code transformations to control the mapping of arrays on a given number of threads/processes and thus generate efficient code on multiprocessor machines.
Taking into account that matrix manipulation programs can be more easily constructed with a visual language than with a textual language, Array-OL relies on a graphical formalism in which the signal processing appears as a graph of tasks. Each task is performed on multidimensional arrays.
Using the Array-OL programming model, we propose a visual specification tool that allows to design an application program by collecting graphical elementary software components. From this assembly, the compilation phase takes place to generate C++ code (with/without Pthread calls); the programmer may also trigger an automatic code transformation phase and visually analyze the transformation effects. Gaspard also enables to update the code through modifications of the visual specification.
This development version has never been released. Many of its ideas are now present in Gaspard2. The target applications are more general than only signal processing applications: we focus on computation intensive applications and furthermore on coupling several simulation components to develop more and more complex systems.
This scope extension implies several deep modifications in Gaspard. Indeed, our problems may now be irregular and the target computing environment is a meta-computing environment.
The execution environment must allow us to handle multiple connected components on an heterogeneous network of computers. Some components may be data-parallel (using the Array-OL programming model) and a second level of parallelism is expressed by the task graph that describes the way the components are linked together. The execution support will control the component execution and handle the communications between these components.
A fundamental issue we have to deal with is dynamicity. It may appear in many forms: in the data structures, in the way the components are arranged (this may be modified at run-time by the programmer), in the components themselves (they may be replaced by enhanced versions without stopping the application) and in the network of computers whose load and structure may change.
We will experiment several low-level support systems such as CORBA or some meta-computing environments and build upon them to provide the desired functions.
The visual interface must allow to program such a system and also to monitor the execution of a long running application. The user will be able to map a component graph on a virtual computer network and to modify both at run-time. Mechanisms to deal with failures semi-automatically will be available. The target computer network will be abstracted to provide to the user only high-level information and to hide the low-level details.
We mainly focus on simulation applications. One such application is the distributed simulation of systems on chip where the simulators of the electronic components of the system have to be coordinated and synchronized.
Video Killed the Radio Stars, Gaspard presentation at SuperComputing 99.
Compilation Principle of a Specification Language Dedicated to Signal Processing , LIFL Research Report 00-03, january 2000 (submitted).
Visual Data-parallel Programming for Signal Processing Applications, PDP 2001, February 2001. Available as LIFL Research Report 00-05.
Gaspard Classic, binary version for GNU/Linux x86. Read the README!
General presentation of Gaspard (in french, PDF, 1.8 MB).