Results 1 - 10
of
32
Functional Skeletons for Parallel Coordination
- EURO-PAR'95 Parallel Processing
, 1995
"... . In this paper we propose a methodology for structured parallel programming using functional skeletons to compose and coordinate concurrent activities written in a standard imperative language. Skeletons are higher order functional forms with built-in parallel behaviour. We show how such forms ..."
Abstract
-
Cited by 53 (10 self)
- Add to MetaCart
. In this paper we propose a methodology for structured parallel programming using functional skeletons to compose and coordinate concurrent activities written in a standard imperative language. Skeletons are higher order functional forms with built-in parallel behaviour. We show how such forms can be used uniformly to abstract all aspects of a parallel program's behaviour including data partitioning, placement and re-arrangement (communication) as well as computation. Skeletons are naturally data parallel and are capable of expressing computation and co-ordination at a higher level of abstraction than other process oriented co-ordination notations. Examples of the application of this methodology are given and an implementation technique outlined. 1 Introduction This paper proposes the use of skeletons as a coordination language for programming parallel architectures. The coordination language model, as proposed by Gelernter and Carriero, builds parallel programs out of two...
Nested Algorithmic Skeletons from Higher Order Functions
, 2000
"... Algorithmic skeletons provide a promising basis for the automatic utilisation of parallelism at sites of higher-order function use through static program analysis. However, decisions about whether or not to realise particular higher-order function instances as skeletons must be based on informati ..."
Abstract
-
Cited by 25 (12 self)
- Add to MetaCart
Algorithmic skeletons provide a promising basis for the automatic utilisation of parallelism at sites of higher-order function use through static program analysis. However, decisions about whether or not to realise particular higher-order function instances as skeletons must be based on information about available processing resources, and such resources may change subsequent to program analysis. In principle, nested higher-order functions may be realised as nested skeletons. However, where higher-order function arguments result from partially applied functions, free-variable bindings must be identified and communicated through the corresponding skeleton hierarchy to where those arguments are actually applied. Here, a skeleton based parallelising compiler from Standard ML to native code is presented. Hybrid skeletons, which can change from parallel to serial evaluation at run-time, are considered and mechanisms for their nesting are discussed. Compilation stages are illustra...
SkIE: a heterogeneous environment for HPC applications
, 1999
"... Technological directions for innovative HPC software environments are discussed in this paper. We focus on industrial user requirements of heterogeneous multisciplinary applications, performance portability, rapid prototyping and software reuse, integration and interoperability of standard tools. Th ..."
Abstract
-
Cited by 23 (14 self)
- Add to MetaCart
Technological directions for innovative HPC software environments are discussed in this paper. We focus on industrial user requirements of heterogeneous multisciplinary applications, performance portability, rapid prototyping and software reuse, integration and interoperability of standard tools. The various issues are demonstrated with reference to the PQE2000 project and its programming environment SkIE (Skeleton-based Integrated Environment). SkIE includes a coordination language, SkIECL, allowing the designers to express, in a primitive and structured way, efficient combinations of data parallelism and task parallelism. The goal is achieving fast development and good efficiency for applications in different areas. Modules developed with standard languages and tools are encapsulated into SkIECL structures to form the global application. Performance models associated to the coordination language allow powerful optimizations to be introduced both at run time and at compile time witho...
Structured Parallel Programming
- In Programming Models for Massively Parallel Computers
, 1993
"... Parallel programming is a difficult task involving many complex issues such as resource allocation, and process coordination. We propose a solution to this problem based on the use of a repertoire of parallel algorithmic forms, known as skeletons. The use of skeletons enables the meaning of a parall ..."
Abstract
-
Cited by 18 (7 self)
- Add to MetaCart
Parallel programming is a difficult task involving many complex issues such as resource allocation, and process coordination. We propose a solution to this problem based on the use of a repertoire of parallel algorithmic forms, known as skeletons. The use of skeletons enables the meaning of a parallel program to be separated from its behaviour. Central to this methodology is the use of transformations and performance models. Transformations provide portability and implementations choices, whilst performance models guide the choices by providing predictions of execution time. In this paper we describe the methodology and investigate the use and construction of performance models by studying an example.
A Cost Analysis for a Higher-order Parallel Programming Model
, 1996
"... Programming parallel computers remains a difficult task. An ideal programming environment should enable the user to concentrate on the problem solving activity at a convenient level of abstraction, while managing the intricate low-level details without sacrificing performance. This thesis investiga ..."
Abstract
-
Cited by 17 (1 self)
- Add to MetaCart
Programming parallel computers remains a difficult task. An ideal programming environment should enable the user to concentrate on the problem solving activity at a convenient level of abstraction, while managing the intricate low-level details without sacrificing performance. This thesis investigates a model of parallel programming based on the BirdMeertens Formalism (BMF). This is a set of higher-order functions, many of which are implicitly parallel. Programs are expressed in terms of functions borrowed from BMF. A parallel implementation is defined for each of these functions for a particular topology, and the associated execution costs are derived. The topologies which have been considered include the hypercube, 2-D torus, tree and the linear array. An analyser estimates the costs associated with different implementations of a given program and selects a cost-effective one for a given topology. All the analysis is performed at compile-time which has the advantage of reducing run-...
The Automated Transformation of Abstract Specifications of Numerical Algorithms into Efficient Array Processor Implementations
- Science of Computer Programming
, 1997
"... We present a set of program transformations which are applied automatically to convert abstract functional specifications of numerical algorithms into efficient implementations tailored to the AMT DAP array processor. The transformations are based upon a formal algebra of a functional array form, wh ..."
Abstract
-
Cited by 11 (4 self)
- Add to MetaCart
We present a set of program transformations which are applied automatically to convert abstract functional specifications of numerical algorithms into efficient implementations tailored to the AMT DAP array processor. The transformations are based upon a formal algebra of a functional array form, which provides a functional model of the array operations supported by the DAP programming language. The transformations are shown to be complete. We present specifications and derivations of two example algorithms: an algorithm for computing eigensystems and an algorithm for solving systems of linear equations. For the former, we compare the execution performance of the implementation derived by transformation with the performance of an independent, manually constructed implementation; the efficiency of the derived implementation matches that of the manually constructed implementation.
Rewriting skeleton programs: How to evaluate the data-parallel stream-parallel tradeoff
- University of Passau
, 1998
"... Some skeleton based parallel programming models allow the programmer to use both data and stream parallel skeletons within the same program. It is known that particular skeleton nestings can be formally rewritten into different nestings that preserve the functional semantics. Indeed, the kind and ..."
Abstract
-
Cited by 9 (5 self)
- Add to MetaCart
Some skeleton based parallel programming models allow the programmer to use both data and stream parallel skeletons within the same program. It is known that particular skeleton nestings can be formally rewritten into different nestings that preserve the functional semantics. Indeed, the kind and possibly the amount of parallelism usefully exploitable may change while rewriting takes place. Here we discuss an original framework allowing the user (and/or the compiling tools) of a skeleton based parallel programming language to evaluate whether or not the transformation of a skeleton program is worthwhile in terms of the nal program performance. We address, in particular, the evaluation of transformations exchanging data parallel and stream parallel skeleton subtrees.
Resource Optimization Via Structured Parallel Programming
- PROGRAMMING ENVIRONMENTS FOR MASSIVELY PARALLEL DISTRIBUTED SYSTEMS
, 1993
"... When dealing with massively parallel architectures, many difficult problems have to be solved. In this paper we will show how, by adopting a structured style of programming and a set of template-based compiling tools, most of the burden required in writing massively parallel applications can be move ..."
Abstract
-
Cited by 9 (4 self)
- Add to MetaCart
When dealing with massively parallel architectures, many difficult problems have to be solved. In this paper we will show how, by adopting a structured style of programming and a set of template-based compiling tools, most of the burden required in writing massively parallel applications can be moved to the compiler design phase. In particular, we will discuss how the problem of implementing a parallel application onto a machine having a limited number of processing elements can be tackled. By exploiting information on the structure of the parallelism coming from the high level language and the templates in the compiling tools, we are able to devise a polynomial time procedure that achieves efficient implementation of structured parallel programs onto distributed memory, MIMD machines based on a regular interconnection topology and having a limited number of resources.
Data Distribution Algebras - A Formal Basis for Programming Using Skeletons
, 1994
"... this paper functional languages are proposed as such a methodology using an extension of the concept of skeletons --- higher-order functions coupled with parallel implementation templates. An essential part of the proposed methodology is the use of data distribution algebras ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
this paper functional languages are proposed as such a methodology using an extension of the concept of skeletons --- higher-order functions coupled with parallel implementation templates. An essential part of the proposed methodology is the use of data distribution algebras

