Frederic.Guyomarch@lifl.frGaspard2 is an Integrated Development Environment (IDE) for SoC visual co-modeling. It allows modeling, simulation, testing and code generation of SoC applications and hardware architectures. Its purpose is to provide one single environment for all the SoC development processes:
The Gaspard2 tool is based on the Eclipse IDE. A set of plugins provides the different functionalities. Gaspard2 is capable to chain transformations (either written with the MoMoTE plugin or in QVT). Each transformations chain is described in a chain model conform to a chain metamodel. An important part of the core of Gaspard2 is an engine that executes models transformations chains.
A co-design process for high-performance system-on-Chip (HP-SoC) has been developed within the Gaspard2 platform, which adopts the principles of model-driven engineering (MDE). It allows one to generate different target code sources from high-level models of systems:
Application, hardware architecture, association, deployment and technology models are specified and manipulated by the developer through UML diagrams, and saved by the UML tool in an XMI file format. Gaspard2 manipulates these models through repositories (Java interfaces and implementations) automatically generated thanks to the Ecore specification. Gaspard2 also introduces extensions to ArrayOL (the original formalism to describe the parallel application), like the inter-repetitions dependancies, and controlled components. These extensions allow modeling for different kinds of parallel applications. We know would like to extend Gaspard2 with concepts which provide more information about the parallelism, starting with the parallel reduction.
The reduction operation uses an associative binary operator and applies it to an ordered collection of data, like for example the sum of the components of a vector. These operations can be performed in parallel, and many algorithms exist in the literature. It also can be combined with some other parallel directives : we could, for example, perform a reduction along one direction of a multi-dimensional collection of data, and make it in parallel along the second axis. To reach good performance, it is well- known that we must access the data by blocs; in terms of parallelism and reduction, this means performing partial sums in parallel.
The goal of the project here is to introduce the concept of reduction in Gaspard2, and to add the necessary model transformations to compile this concept. Transformations will use QVTEO.