• Process of FGPP execution is considered to be
finished, when any module is not ready for
execution and all the processes induced during
FGPP execution are completed (terminated).
• During the execution method can use special-
purpose functions WRITE, READ, and CHECK,
which provide an interface between modules.
a. WRITE function conducts write in the giving
output point of the giving output group, with
the specified value marked specified tag, and
has the format: WRITE (<name of output
group>, <output>, <tag>, <value>).
b. READ function allows the process to read data
with the indicated tag from buffers assigned to
the input groups of the module that initiated the
process. The data with indicated tag retrieved
from the listed inputs are assigned to variables
in the process - input value. Format of READ
function: < input value > = READ (<name of
input group>, <input>, <tag>). In the execution
of READ function, if the requested data have
not yet arrived to the buffer memory, the
execution is delayed until the data arrive. The
arrival time is controlled for any recording of
data into the buffer memory of the
corresponding input group. When READ
function returns, the requested data are deleted
from the buffer.
c. For more sophisticated operation with data
arriving to module input group (to be more
precise, with the assigned buffers), the function
<availability flag> = CHECK (<name of input
group>, < input>, <tag>) is provided, which
checks the availability of data with the
indicated tags at the specified input point, and
returns TRUE as result, if such data is present
at the buffer, and FA L S E – otherwise. This
function allows the process to make a decision
on its actions depending on the data
availability.
The following forms of parallelism that objectively
present in DCIPS and real-world tasks (Kutepov V.P
et al, 1996) are easily represented in FGSPPL:
Parallelism of data-independent fragments;
Data parallelism (SIMD parallelism by Flinn)
that is induced by simultaneous application of
method to several differently tagged data
tuples;
Pipeline parallelism resulted from stream-like
processing of data.
FGSPPL naturally combines the opportunities of
gross-grain parallelism representation (that is
realized at the level of the modules’ methods) and
fine-grain parallelism that is represented in methods
of modules and can be implemented by
multithreading.
Our experience in FGPPL programming shows that
FGPPL allows to build adequate and often straight
structure models of mass-service networks,
distributed and many component systems, we have a
positive experience in describing on FSPPL the
distributed control processes of flexible automated
manufactures, airports, etc, as well as multi-
component program systems, where information
relations are structured and permanent.
5 EMBEDDING FSPPL INTO
OBJECT-ORIENTED
ENVIRONMENT
Embedding FSPPL into object oriented environment
is an important and apparent way to reach
comprehensive requirements stated in part 3 of the
paper, in particular to provide language support for
complex data modelling. On the other side this
embedding should enrich object-oriented language
with dataflow superstructure on top for more flexible
parallelism support. Such approach has already been
considered as an important extension of object
oriented systems (
J.Paul Morrison., 1994).
Reusability of program code in object-oriented
programming can be reached at different levels of
abstraction starting from procedures, data structures,
and classes and up to logically and physically
connected sets of classes. Using these systems of
classes in architecture of an application implies
using of built-in object interacting schemas in
runtime. These systems of classes delivering
services in some area are usually called integrated
libraries.
We’ve adopted the idea of integrated library to
embed FSPPL into object-oriented environment.
FGPP implemented with the library is called object-
oriented FGPP (OOFGPP).
To build the integrated library for flow-graph
stream parallel programming we have applied
methods of object-oriented analysis for abstract
FGPP, its syntax and parallel semantics. Using
object-oriented decomposition we constructed the
set of base classes that allows describing main
objects of FGPP: scheme, module, input group,
output group, input and output points and defined
mechanisms of their interaction as private methods.
Now to build the OOFGPP developer has to
implement a number of standardized abstract classes
exposed by the library.
The embedding of FSPPL into OO environment
enables developer to treat elements of parallel
ICSOFT 2008 - International Conference on Software and Data Technologies
86