next up previous contents
Next: OREGAMI/LaRCS Up: Communication Languages Previous: Communication Languages

The Gabriel Project

Digital signal processing (DSP) applications have been using `communication languages' of various kinds for some time. A good example of this is the Gabriel project [8,27], now the Ptolemy project [12,13]. Their system uses block diagrams and a flexible signal-flow model to support multirate and asynchronous systems. It uses a synchronous dataflow, or Sdf model for DSP applications. In the Sdf model, each processing object in the application has a fixed connection to other such objects, and produces or consumes a fixed number of tokens each time it fires.

While Gabriel is well-suited to DSP applications, it lacks the generality required to be a general-purpose communications language such as COP. It does not specify communication phases, since its main target is signal-processing applications which run continuous pipelined processing. For the same reason, it does not specify any data-dependent communications.

Communications are represented by the connections between the processing objects, which are termed stars. The communication model annotates links with information on message size or message count in a manner similar to COP. The Gabriel compiler then uses these annotations to determine how to execute the stars. Stars may be executed all together on a single node, or may be distributed across multiple nodes.


  
Figure 3.1: Gabriel code for an FFT star
\begin{figure}
\begin{center}
\begin{tabbing}
\hspace*{0.4in} \= \hspace*{0.2in}...
 ...e-twiddle-factors) \\ ({\bf function} fft))\end{tabbing}\end{center}\end{figure}

Figure 3.1 shows an example of a Gabriel star. Notice that the communication characteristics are specified by endpoints at the star level, rather than at the `operator' level as is done in COP. It is only when stars' endpoints are hooked together that particular communications are instantiated. The example shown is an FFT; it specifies a parameter for the size of the FFT, and gives a default value (128). The inputs and outputs are specified as indivisible messages of size order and $2 \times$order. Internal state, an initialization function, and the main processing function are all named at the end.


next up previous contents
Next: OREGAMI/LaRCS Up: Communication Languages Previous: Communication Languages
Back to Chris Metcalf's home page