Language constructs for modular parallel programs Page: 2 of 15
This report is part of the collection entitled: Office of Scientific & Technical Information Technical Reports and was provided to Digital Library by the UNT Libraries Government Documents Department.
The following text was automatically extracted from the image on this page using optical character recognition software:
execution schedule affects the result of a computation . Languages with this prop-
erty include Strand and PCN, in which processes interact by reading and writing shared
single-assignment variables, and Fortran M, in which interactions occur via single-reader,
single-writer virtual channels. Compositional languages permit design decisions concerned
with mapping, data distribution, communication, and scheduling to be made separately
and to be modified without changing other aspects of a design .
In this paper, we show how virtual computer constructs are integrated into two com-
positional parallel programming languages: PCN [9, 16] and Fortran M . PCN is a
C-like language that integrates ideas from concurrent logic programming and imperative
programming; Fortran M is a small set of extensions to Fortran. In each case, virtual com-
puters and related constructs have been introduced in a manner that is consistent with the
base language, hence simplifying both comprehension and compilation. Both .PCN and
Fortran M have been used to develop a range of substantial parallel applications; these
provide an empirical basis for evaluation of the concepts.
In summary, the contributions of this paper are as follows:
" The definition of programming language constructs that facilitate the modular con-
struction of parallel programs.
" The instantiation of the constructs in practical parallel programming languages.
" Empirical evaluation in a range of applications.
The next three sections of this paper address each of these issues in turn, after which
we review related work and present our conclusions.
2 Modularity and Parallel Programs
We use the term "modularity" to refer to two related program-structuring techniques:
1. Stepwise refinement  - the decomposition of a complex problem into simpler
subproblems, each solved by a separate module with a well-defined interface.
2. Modular decomposition  - the isolation in separate modules of design decisions
that are difficult, likely to change, or common to several program components.
The first of these techniques is more naturally applied top down in the design process
and, if care is taken to ensure generality, produces modules that can be reused in different
contexts. The second is more naturally applied bottom up and can reduce the cost of
program modifications. Both techniques are central to object-oriented design .
It is instructive to examine how these techniques can be applied in sequential and paral-
lel programming. For illustrative purposes, we consider a simple example: the convolution
operation used, for example, in motion estimation algorithms in image processing .
Each pair of images is first processed by using a two-dimensional fast Fourier transform
(FFT). The resulting matrices are then multiplied, and an inverse FFT is applied to the
result. The various operations, and the dependencies between them, are illustrated in
Here’s what’s next.
This report can be searched. Note: Results may vary based on the legibility of text within the document.
Tools / Downloads
Get a copy of this page or view the extracted text.
Citing and Sharing
Basic information for referencing this web page. We also provide extended guidance on usage rights, references, copying or embedding.
Reference the current page of this Report.
Foster, I. Language constructs for modular parallel programs, report, March 1, 1996; Illinois. (https://digital.library.unt.edu/ark:/67531/metadc667430/m1/2/: accessed April 25, 2019), University of North Texas Libraries, Digital Library, https://digital.library.unt.edu; crediting UNT Libraries Government Documents Department.