Results 11 - 20
of
69
HDC: A Higher-Order Language for Divide-and-Conquer
, 2000
"... We propose the higher-order functional style for the parallel programming of algorithms. The functional language HDC, a subset of the language Haskell, facilitates the clean integration of skeletons into a functional program. Skeletons are prede ned programming schemata with an ecient parallel imple ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
We propose the higher-order functional style for the parallel programming of algorithms. The functional language HDC, a subset of the language Haskell, facilitates the clean integration of skeletons into a functional program. Skeletons are prede ned programming schemata with an ecient parallel implementation. We report on our compiler, which translates HDC programs into C+MPI, especially on the design decisions we made. Two small examples, the n queens problem and Karatsuba's polynomial multiplication, are presented to demonstrate the programming comfort and the speedup one can obtain.
On Programming Scientific Applications in SAC - a Functional Language Extended by a Subsystem for High-Level Array Operations
- Proceedings of the 8th International Workshop on the Implementation of Functional Languages (IFL '96
, 1996
"... . This paper discusses some of the pros and cons of extending a simple functional language called Sac (for Single Assignment C) by array operations similar to those that are available in Apl. The array operations in Sac are based on the /-calculus, an algebra of arrays which provides a formalism for ..."
Abstract
-
Cited by 10 (4 self)
- Add to MetaCart
. This paper discusses some of the pros and cons of extending a simple functional language called Sac (for Single Assignment C) by array operations similar to those that are available in Apl. The array operations in Sac are based on the /-calculus, an algebra of arrays which provides a formalism for specifying and simplifying array operations in terms of index set manipulations. The programming techniques made possible by Sac are demonstrated by means of a functional program for the approximation of numerical solutions of partial differential equations by multigrid relaxation. This application is not only of practical relevance but also fully exposes the flavors of using high-level array operations. In contrast to specifications in other languages, e.g. in Fortran or Sisal, the Sac program is well structured, reasonably concise, and - what is most important - invariant against dimensionalities and shapes. However, sophisticated compilation techniques are necessary to avoid, whenever po...
Performance Studies of Id on the Monsoon Dataflow System
, 1993
"... In this paper, we examine the performance of Id, an implicitly parallel language, on Monsoon, an experimental dataflow machine. One of the precepts of our work is that the Id run-time system and compiled Id programs should run on any number of Monsoon processors without change. Our experiments runni ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
In this paper, we examine the performance of Id, an implicitly parallel language, on Monsoon, an experimental dataflow machine. One of the precepts of our work is that the Id run-time system and compiled Id programs should run on any number of Monsoon processors without change. Our experiments running Id programs on Monsoon show that speedups of more than seven are easily achieved on eight processors for most of the applications that we studied. We explain the sources of overhead that limit the speedup of each of our benchmark programs. We also compare the performance of Id on a single Monsoon processor with C/Fortran on a DEC Station 5000 (MIPS R3000 processor), to establish a baseline for the efficiency of Id execution on Monsoon. We find that the execution of Id programs on one Monsoon processor takes up to three times as many cycles as the corresponding C or Fortran programs executing on a MIPS R3000 processor. We identify the sources of inefficiency on Monsoon and suggest improvem...
Implementing the NAS Benchmark MG in SAC
- In Proceedings of the 16th International Parallel and Distributed Processing Symposium (IPDPS’02), Fort Lauderdale
, 2002
"... SAC is a purely functional array processing language designed with numerical applications in mind. It supports generic, high-level program specifications in the style of APL. However, rather than providing a fixed set of builtin array operations, SAC provides means to specify such operations in the ..."
Abstract
-
Cited by 8 (6 self)
- Add to MetaCart
SAC is a purely functional array processing language designed with numerical applications in mind. It supports generic, high-level program specifications in the style of APL. However, rather than providing a fixed set of builtin array operations, SAC provides means to specify such operations in the language itself in a way that still allows their application to arrays of any dimension and size. This paper illustrates the specificational benefits of this approach by means of a high-level SAC implementation of the NAS benchmark MG realizing 3-dimensional multigrid relaxation with periodic boundary conditions. Despite the high-level approach, experiments show that by means of aggressive compiler optimizations SAC manages to achieve performance characteristics in the range of low-level Fortran and C implementations. For benchmark size class A, SAC is outperformed by the serial Fortran-77 reference implementation of the benchmark by only 23%, whereas SAC itself outperforms a C implementation by the same figure. Furthermore, implicit parallelization of the SAC code for shared memory multiprocessors achieves a speedup of 7.6 with 10 processors. With these figures, SAC outperforms both automatic parallelization of the serial Fortran-77 reference implementation as well as an OpenMP solution based on C code. 1
On Memory Models and Cache Management for Shared-Memory Multiprocessors
, 1995
"... A popular approach to designing shared-memory computer systems is to specify a memory model upon which a variety of program execution models may be implemented. Alternatively, one may choose a desired program execution model (PXM) and specify a memory model suited to the PXM. We argue that this s ..."
Abstract
-
Cited by 8 (4 self)
- Add to MetaCart
A popular approach to designing shared-memory computer systems is to specify a memory model upon which a variety of program execution models may be implemented. Alternatively, one may choose a desired program execution model (PXM) and specify a memory model suited to the PXM. We argue that this second approach is to be preferred because it avoids the trap of specifying features of the memory model (consistency, for example) that may not needed to implement a desired program execution model. If the PXM is a dataflow model (one based on or equivalent to recursive dataflow program graphs), then no cache consistency problem need arise if the memory model supports synchronizing memory operations. Then why use a memory consistency model as a basis for designing shared-memory multiprocessors? One argument is that a general memory model can support a variety of PXMs. However, many good PXMs, object-oiented programming, for example, may be built on top of a basic program model that d...
Comparing Parallel Functional Languages: Programming and Performance
, 2002
"... This paper presents a practical evaluation and comparison of three stateof -the-art parallel functional languages. The evaluation is based on implementations of three typical symbolic computation programs, with performance measured on a Beowulf-class parallel architecture. ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
This paper presents a practical evaluation and comparison of three stateof -the-art parallel functional languages. The evaluation is based on implementations of three typical symbolic computation programs, with performance measured on a Beowulf-class parallel architecture.
HPF vs. SAC - a Case Study
- Proceedings of the 6th European Conference on Parallel Processing (Euro-Par’00
, 2000
"... . This paper compares the functional programming language Sac to Hpf with respect to specicational elegance and runtime performance. A well-known benchmark, red-black successive over-relaxation, serves as a case study. After presenting the Hpf reference implementation alternative Sac implementat ..."
Abstract
-
Cited by 8 (3 self)
- Add to MetaCart
. This paper compares the functional programming language Sac to Hpf with respect to specicational elegance and runtime performance. A well-known benchmark, red-black successive over-relaxation, serves as a case study. After presenting the Hpf reference implementation alternative Sac implementations are discussed. Eventually, performance gures show the ability to compile highly generic Sac specications into machine code that outperforms the Hpf implementation on a shared memory multiprocessor. 1 Introduction Programming language design basically is about nding the best possible tradeo between support for high-level program specications and runtime eciency. In the context of array processing, data parallel languages are well-suited to meet this goal. Replacing loop nestings by language constructs that operate on entire arrays rather than on single elements, not only improves program specications; it also creates new optimization opportunities for compilers [3, 4, 1, 8, 7...
On the Effectiveness of Functional Language Features: NAS benchmark FT
- Journal of Functional Programming
, 1997
"... In this paper we investigate the effectiveness of functional language features when writing scientific codes. Our programs are written in the purely functional subset of Id and executed on a one node Motorola Monsoon machine, and in Haskell and executed on a Sparc 2. In the application we study -- t ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
In this paper we investigate the effectiveness of functional language features when writing scientific codes. Our programs are written in the purely functional subset of Id and executed on a one node Motorola Monsoon machine, and in Haskell and executed on a Sparc 2. In the application we study -- the NAS FT benchmark, a three-dimensional heat equation solver -- it is necessary to target and select one-dimensional sub-arrays in three-dimensional arrays. Furthermore, it is important to be able to share computation in array definitions. We compare first order and higher order implementations of this benchmark. The higher order version uses functions to select one-dimensional sub-arrays, or slices, from a three-dimensional object, whereas the first order version creates copies to achieve the same result. We compare various representations of a three-dimensional object, and study the effect of strictness in Haskell. We also study the performance of our codes when employing recursive and it...
A Parallel Object-Oriented System for Realizing Reusable and Efficient Data Abstractions
, 1993
"... ..."
Logic Programming for the Real World
- Proceedings of the ILPS'95 Postconference Workshop on Visions for the Future of Logic Programming
, 1995
"... this paper as an example. However, Mercury is by no means the only possible language design that fits within our proposal's framework. 2.1 A strong type system ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
this paper as an example. However, Mercury is by no means the only possible language design that fits within our proposal's framework. 2.1 A strong type system

