Accelerate

· coding systems · Source ↗

TLDR

  • Accelerate is a Haskell-embedded DSL for high-performance parallel array computations, JIT-compiled to multicore CPUs or CUDA-enabled NVIDIA GPUs via LLVM backends.

Key Takeaways

  • Core abstraction: parameterised collective ops (map, fold, zipWith, permutations) on multi-dimensional regular arrays; dot product example mirrors list Haskell but runs on GPU.
  • Two primary backends: accelerate-llvm-native (multicore CPU) and accelerate-llvm-ptx (NVIDIA CUDA, compute capability 3.0+).
  • Rich ecosystem: FFT, BLAS/LAPACK, image I/O, random arrays, lens/linear integration, and serialisation all available as separate Hackage packages.
  • Substantial reference applications exist: Canny edge detection, N-body simulation, PageRank, ray-tracer, fluid simulation, and LULESH shock hydrodynamics mini-app.
  • API is still marked preliminary; parts may change in future releases.

Hacker News Comment Review

  • Single commenter questions whether Accelerate is differentiated given the crowded namespace of similarly-named GPU/array compute projects – a real discoverability concern for adopters.

Original | Discuss on HN