Results 1 -
8 of
8
Regions: An Abstraction for Expressing Array Computation
- In ACM SIGAPL/SIGPLAN International Conference on Array Programming Languages
, 1998
"... ion for Expressing Array Computation Bradford L. Chamberlain E Christopher Lewis Calvin Lin + Lawrence Snyder University of Washington, Seattle, WA 98195-2350 + University of Texas, Austin, TX 78712 fbrad,echris,snyderg@cs.washington.edu, lin@cs.utexas.edu Abstract Most array languages, such ..."
Abstract
-
Cited by 25 (14 self)
- Add to MetaCart
ion for Expressing Array Computation Bradford L. Chamberlain E Christopher Lewis Calvin Lin + Lawrence Snyder University of Washington, Seattle, WA 98195-2350 + University of Texas, Austin, TX 78712 fbrad,echris,snyderg@cs.washington.edu, lin@cs.utexas.edu Abstract Most array languages, such as Fortran 90, Matlab, and APL, provide support for referencing arrays by extending the traditional array subscripting construct found in scalar languages. We present an alternative approach that exploits the concept of regions---a representation of index sets that can be named, manipulated with high-level operators, and syntactically separated from array references. This paper develops the concept of region-based programming and describes its benefits in the context of an idealized array language called RL. We show that regions simplify programming, reduce the likelihood of errors, and enable code reuse. Furthermore, we describe how regions accentuate the locality of array expressions and h...
With-loop-folding in SAC — Condensing Consecutive Array Operations
- Proceedings of the 9th International Workshop on Implementation of Functional Languages (IFL’97
, 1998
"... Abstract. This paper introduces a new compiler optimization called with-loop-folding. It is based on a special loop construct, the withloop, which in the functional language Sac (for Single Assignment C) serves as a versatile vehicle to describe array operations on an elementwise basis. A general me ..."
Abstract
-
Cited by 16 (11 self)
- Add to MetaCart
Abstract. This paper introduces a new compiler optimization called with-loop-folding. It is based on a special loop construct, the withloop, which in the functional language Sac (for Single Assignment C) serves as a versatile vehicle to describe array operations on an elementwise basis. A general mechanism for combining two of these with-loops into a single loop construct is presented. This mechanism constitutes a powerful tool when it comes to generate efficiently executable code from high-level array specifications. By means of a few examples it is shown that even complex nestings of array operations similar to those available in Apl can be transformed into single loop operations which are similar to hand-optimized with-loop specifications. As a consequence, the way a complex array operation is combined from primitive array operations does not affect the runtime performance of the compiled code, i.e., the programmer is liberated from the burden to take performance considerations into account when specifying complex array operations. 1
Shared Memory Multiprocessor Support for SAC
- Journal of Functional Programming
, 1999
"... . Sac (Single Assignment C) is a strict, purely functional programming language primarily designed with numerical applications in mind. Particular emphasis is on efficient support for arrays both in terms of language expressiveness and in terms of runtime performance. Array operations in Sac are bas ..."
Abstract
-
Cited by 14 (9 self)
- Add to MetaCart
. Sac (Single Assignment C) is a strict, purely functional programming language primarily designed with numerical applications in mind. Particular emphasis is on efficient support for arrays both in terms of language expressiveness and in terms of runtime performance. Array operations in Sac are based on elementwise specifications using so-called With-loops. These language constructs are also well-suited for concurrent execution on multiprocessor systems. This paper outlines an implicit approach to compile Sac programs for multi-threaded execution on shared memory architectures. Besides the basic compilation scheme, a brief overview of the runtime system is given. Finally, preliminary performance figures demonstrate that this approach is well-suited to achieve almost linear speedups. 1 Introduction Sac (Single Assignment C) is a strict, first-order, purely functional programming language primarily designed with numerical applications in mind. Particular emphasis is on efficient suppo...
On Defining Application-Specific High-Level Array Operations by Means of Shape-Invariant Programming Facilities
- Proceedings of the Array Processing Language Conference 98
, 1998
"... Most of the existing high-level array processing languages support a fixed set of pre-defined array operations and a few higher-order functions for constructing new array operations from existing ones. In this paper, we discuss a more general approach made feasible by Sac (for Single Assignement C), ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
Most of the existing high-level array processing languages support a fixed set of pre-defined array operations and a few higher-order functions for constructing new array operations from existing ones. In this paper, we discuss a more general approach made feasible by Sac (for Single Assignement C), a functional variant of C. Sac provides a meta-level language construct called with- loop which may be considered a sophisticated variant of the forall-loops in HPF or of array comprehensions in functional languages. It allows for the element-wise specification of high-level operations on arrays of any dimensionality: any set of high-level array operations can be specified by means of with-loops and be made available in a library. This does not only improve the flexibility of specifications, but also simplifies the compilation process. By means of a few examples it is shown that the highlevel operations that are typically available in array processing languages such as Apl or Fortran90 ...
A case study: Effects of WITH-loop-folding on the NAS Benchmark MG in SAC
- Proceedings of IFL `98, LNCS 1595
, 1999
"... Sac is a functional C variant with efficient support for high-level array operations. This paper investigates the applicability of a Sac specific optimization technique called with-loop-folding to real world applications. As an example program which originates from the Numerical Aerodynamic Simula ..."
Abstract
-
Cited by 10 (6 self)
- Add to MetaCart
Sac is a functional C variant with efficient support for high-level array operations. This paper investigates the applicability of a Sac specific optimization technique called with-loop-folding to real world applications. As an example program which originates from the Numerical Aerodynamic Simulation (NAS) Program developed at NASA Ames Research Center, the so-called NAS benchmark MG is chosen. It comprises a kernel from the NAS Program which implements 3-dimensional multigrid relaxation. Several run-time measurements exploit two different benefits of with-loop-folding: First, an overall speed-up of about 20 % can be observed. Second, a comparison between the run-times of a hand-optimized specification and of Apl-like specifications yields identical run-times, although a naive compilation that does not apply with-loop-folding leads to slowdowns of more than an order of magnitude. Furthermore, With-loop-folding makes a slight variation of the algorithm feasible which substantially simplifies the program specification and requires less memory during execution. Finally, the optimized run-times are compared against run-times gained from the original Fortran program, which shows that for different problem sizes, the code generated from the Sac program does not only reach the execution times of the code generated from the Fortran program but even outperforms them by about 10%.
A Parallel Functional Language Compiler for Message-Passing Multicomputers
, 1998
"... The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subs ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subset being compiled. Naira has been successfully parallelised and it is the largest successfully parallelised Haskell program having achieved good absolute speedups on a network of SUN workstations. Having the same basic structure as other production compilers of functional languages, Naira's parallelisation technology should carry forward to other functional language compilers. The back end of Naira is written in C and generates parallel code in the C language which is envisioned to be run on distributed-memory machines. The code generator is based on a novel compilation scheme specified using a restricted form of Milner's ß-calculus which achieves asynchronous communication. We present the f...
Haxcel: A Spreadsheet Interface to Haskell
- Pages 206–222 of: 14th Int. Workshop on the Implementation of Functional Languages
, 2002
"... Abstract. The spreadsheet paradigm offers a fast interactive loop, where the effects of updates to definitions and data are immediately visible. This makes the paradigm attractive for program development, where redefinitions can be immediately tested and the results displayed. We have designed a sim ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Abstract. The spreadsheet paradigm offers a fast interactive loop, where the effects of updates to definitions and data are immediately visible. This makes the paradigm attractive for program development, where redefinitions can be immediately tested and the results displayed. We have designed a simple, compilerindependent spreadsheet interface to Haskell, where cells host Haskell definitions. Spreadsheets are also used for high-level array calculations. In order to meet that demand we have designed and implemented an extended array library for Haskell, which provides a number of typical array-language facilities. Together, the interface and the array library provide an interactive environment that can be used both for development of general Haskell code and for array-oriented spreadsheet calculations.
Stream processing on the grid: an Array Stream Transforming Language
- SNPD
, 1994
"... Specific requirements of stream processing on the Grid are discussed. We argue that when the stream processing paradigm is used for cluster computing, the processing components can be coded in the form of data-parallel recurrence relations with stream synchronization and filtering at the interfaces. ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Specific requirements of stream processing on the Grid are discussed. We argue that when the stream processing paradigm is used for cluster computing, the processing components can be coded in the form of data-parallel recurrence relations with stream synchronization and filtering at the interfaces. We propose a programming language ASTL in which such components can be written and describe some of its key features. Our approach enables distributed type inference which guarantees correct typing of the whole distributed application. Finally we discuss the stream network architecture and identify issues requiring Grid support.

