Introduction to combinators and &lgr;-calculus
Introduction to combinators and &lgr;-calculus
SISAL: initial MIMD performances results
Proc. of the conference on algorithms and hardware for parallel processing on CONPAR 86
Automatic translation of FORTRAN programs to vector form
ACM Transactions on Programming Languages and Systems (TOPLAS)
A logical basis for nested array data structures
Computer Languages
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Copy elimination in functional languages
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Supercompilers for parallel and vector computers
Supercompilers for parallel and vector computers
The cache performance and optimizations of blocked algorithms
ASPLOS IV Proceedings of the fourth international conference on Architectural support for programming languages and operating systems
A data locality optimizing algorithm
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Elements of functional programming
Elements of functional programming
Shallow binding makes functional arrays fast
ACM SIGPLAN Notices
Retire Fortran?: a debate rekindled
Communications of the ACM
The organization of reduction, data flow, and control flow systems
The organization of reduction, data flow, and control flow systems
Fortran 90 handbook: complete ANSI/ISO reference
Fortran 90 handbook: complete ANSI/ISO reference
Accurate analysis of array references
Accurate analysis of array references
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Covariance and contravariance: conflict without a cause
ACM Transactions on Programming Languages and Systems (TOPLAS)
Tile size selection using cache organization and data layout
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The implementation and evaluation of fusion and contraction in array languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Computer architecture (2nd ed.): a quantitative approach
Computer architecture (2nd ed.): a quantitative approach
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The aggregate update problem in functional programming systems
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
APL '98 Proceedings of the APL98 conference on Array processing language
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Transforming loops to recursion for multi-level memory hierarchies
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Garbage Collection of Linked Data Structures
ACM Computing Surveys (CSUR)
Optimizing compilers for modern architectures: a dependence-based approach
Optimizing compilers for modern architectures: a dependence-based approach
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Modern Compiler Implementation in C
Modern Compiler Implementation in C
Functional Programming and Parallel Graph Rewriting
Functional Programming and Parallel Graph Rewriting
An array-oriented (APL) wish list: ideas I think may be useful
Proceedings of the 2001 conference on APL: an arrays odyssey
High Performance Compilers for Parallel Computing
High Performance Compilers for Parallel Computing
The Definition of Standard ML
A Loop Transformation Theory and an Algorithm to Maximize Parallelism
IEEE Transactions on Parallel and Distributed Systems
The Functional Imperative: Shape!
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
Collective Loop Fusion for Array Contraction
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
On Code Generation for Multi-generator WITH-Loops in SAC
IFL '99 Selected Papers from the 11th International Workshop on Implementation of Functional Languages
Improving effective bandwidth through compiler enhancement of global and dynamic cache reuse
Improving effective bandwidth through compiler enhancement of global and dynamic cache reuse
On the effectiveness of functional language features: NAS benchmark FT
Journal of Functional Programming
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
A programming language
Shared memory multiprocessor support for functional array processing in SAC
Journal of Functional Programming
Array languages and the challenge of modern computer architecture
ACM SIGAPL APL Quote Quad
SAC: a functional array language for efficient multi-threaded execution
International Journal of Parallel Programming
Parallel Computing - Algorithmic skeletons
Merging compositions of array skeletons in SAC
Parallel Computing - Algorithmic skeletons
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
SAC: off-the-shelf support for data-parallelism on multicores
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
ACM SIGAPL APL Quote Quad
From Contracts Towards Dependent Types: Proofs by Partial Evaluation
Implementation and Application of Functional Languages
Controlling chaos: on safe side-effects in data-parallel operations
Proceedings of the 4th workshop on Declarative aspects of multicore programming
An implementation of the SANE Virtual Processor using POSIX threads
Journal of Systems Architecture: the EUROMICRO Journal
Evaluating CMPs and Their Memory Architecture
ARCS '09 Proceedings of the 22nd International Conference on Architecture of Computing Systems
The implementation of an SVP many-core processor and the evaluation of its memory architecture
ACM SIGARCH Computer Architecture News
Numerical Simulations of Unsteady Shock Wave Interactions Using SaC and Fortran-90
PaCT '09 Proceedings of the 10th International Conference on Parallel Computing Technologies
A Skeletal Parallel Framework with Fusion Optimizer for GPGPU Programming
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
IFL'02 Proceedings of the 14th international conference on Implementation of functional languages
On optimising shape-generic array programs using symbolic structural information
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Index vector elimination: making index vectors affordable
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Multidimensional Systems and Signal Processing
Strategies for compiling µTC to novel chip Multiprocessors
SAMOS'07 Proceedings of the 7th international conference on Embedded computer systems: architectures, modeling, and simulation
Regular, shape-polymorphic, parallel arrays in Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Language virtualization for heterogeneous parallel computing
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Higher-Order and Symbolic Computation
Breaking the GPU programming barrier with the auto-parallelising SAC compiler
Proceedings of the sixth workshop on Declarative aspects of multicore programming
Implementing fusion-equipped parallel skeletons by expression templates
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
Compiler-support for robust multi-core computing
ISoLA'10 Proceedings of the 4th international conference on Leveraging applications of formal methods, verification, and validation - Volume Part I
Journal of Systems Architecture: the EUROMICRO Journal
Efficient parallel stencil convolution in Haskell
Proceedings of the 4th ACM symposium on Haskell
Computational programming technologies
Programming and Computing Software
Descriptor-free representation of arrays with dependent types
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
The design and implementation of feldspar an embedded language for digital signal processing
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
Concurrent non-deferred reference counting on the Microgrid: first experiences
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
µTC: an intermediate language for programming chip multiprocessors
ACSAC'06 Proceedings of the 11th Asia-Pacific conference on Advances in Computer Systems Architecture
StagedSAC: a case study in performance-oriented DSL development
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
A framework for compiler driven design space exploration for embedded system customization
ASIAN'04 Proceedings of the 9th Asian Computing Science conference on Advances in Computer Science: dedicated to Jean-Louis Lassez on the Occasion of His 5th Cycle Birthday
General homomorphic overloading
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
With-Loop scalarization – merging nested array operations
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
With-Loop fusion for data locality and parallelism
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
A binding scope analysis for generic programs on arrays
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
More dependent types for distributed arrays
Higher-Order and Symbolic Computation
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Towards a streaming model for nested data parallelism
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
Partial evaluation as universal compiler tool: experiences from the SAC Eco system
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
This paper presents a novel approach for integrating arrays with access time ${\cal O}$(1) into functional languages. It introduces n-dimensional arrays combined with a type system that supports hierarchies of array types with varying shape information as well as a shape-invariant form of array comprehension called WITH-loop. Together, these constructs allow for a programming style similar to that of array programming languages such as APL. We use Single Assignment C (SAC), a functional C-variant aimed at numerical applications that is based on the proposed design, to demonstrate that programs written in that style can be compiled to code whose runtime performance is competitive with that of hand-optimized Fortran programs. However, essential prerequisites for such performance figures are a shape inference system integrated in the type system as well as several high-level optimizations. Most notably of these is With Loop Folding, an optimization technique for eliminating intermediate arrays.