Accelerate
Data.Array.Accelerate is an embedded language in Haskell for high-performance computing using multi-dimensional arrays. It supports collective operations like maps, reductions, and permutations, which can be compiled and executed on various architectures including GPUs. The library includes backends for CPUs and CUDA-enabled GPUs, along with tools for interoperability and performance optimization.
- ▪Accelerate enables high-performance array computations in Haskell through online compilation.
- ▪It supports parallel execution on multicore CPUs and NVIDIA GPUs with compute capability 3.0 or higher.
- ▪The library provides multiple add-on packages for I/O, FFT, BLAS/LAPACK operations, image processing, and random number generation.
- ▪Examples and tutorials are available in Simon Marlow's book and in Trevor's PhD thesis.
- ▪Accelerate is open-source, available on Hackage and GitHub, with documentation and test suites included.
Opening excerpt (first ~120 words) tap to expand
High-performance parallel arrays for Haskell Data.Array.Accelerate defines an embedded language of array computations for high-performance computing in Haskell. Computations on multi-dimensional, regular arrays are expressed in the form of parameterised collective operations (such as maps, reductions, and permutations). These computations are online-compiled and executed on a range of architectures. For more details, see our papers: Accelerating Haskell Array Codes with Multicore GPUs Optimising Purely Functional GPU Programs (slides) Embedding Foreign Code Type-safe Runtime Code Generation: Accelerate to LLVM (slides) (video) Streaming Irregular Arrays (video) There are also slides from some presentations on Accelerate: Embedded Languages for High-Performance Computing in Haskell GPGPU…
Excerpt limited to ~120 words for fair-use compliance. The full article is at GitHub.