I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
M-structures: extending a parallel, non-strict, functional language with state
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Computational frameworks for the fast Fourier transform
Computational frameworks for the fast Fourier transform
A gentle introduction to Haskell
ACM SIGPLAN Notices - Haskell special issue
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
Retire Fortran?: a debate rekindled
Communications of the ACM
Performance studies of Id on the Monsoon dataflow system
Journal of Parallel and Distributed Computing - Special issue on dataflow and multithreaded architectures
The dataflow time and space complexity of FFTs
Journal of Parallel and Distributed Computing - Special issue on dataflow and multithreaded architectures
Experiences with compiler-directed storage reclamation
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Time and space profiling for non-strict, higher-order functional languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Functional I-structure, and M-structure Implementations of NAS Benchmark FT
PACT '94 Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques
Sassy: A Language and Optimizing Compiler for Image Processing on Reconfigurable Computing Systems
ICVS '99 Proceedings of the First International Conference on Computer Vision Systems
Single Assignment C: efficient support for high-level array operations in a functional setting
Journal of Functional Programming
Shared memory multiprocessor support for functional array processing in SAC
Journal of Functional Programming
SAC: a functional array language for efficient multi-threaded execution
International Journal of Parallel Programming
With-Loop scalarization – merging nested array operations
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Hi-index | 0.00 |
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 iterative implementations of the one-dimensional FFT, which forms the kernel of this benchmark. It turns out that these languages still have quite inefficient implementations, with respect to both space and time. For the largest problem we could run (323), Haskell is 15 times slower than Fortran and uses three times more space than is absolutely necessary, whereas Id on Monsoon uses nine times more cycles than Fortran on the MIPS R3000, and uses five times more space than is absolutely necessary. This code, and others like it, should inspire compiler writers to improve the performance of functional language implementations.