
On Sat, 11 Nov 2023, David Banas wrote:
So, is the `accelerate` package still the preferred approach to access a GPU from within a Haskell program, or has it been superseded by something else?
There is an active Google Group for accelerate: https://groups.google.com/g/accelerate-haskell Btw. I have implemented alternatives to 'repa' and 'accelerate': https://hackage.haskell.org/package/comfort-array https://hackage.haskell.org/package/knead The 'knead' package requires more manual planning of what to do on materialized arrays and what to do on-the-fly, compared to 'accelerate'. It does no GPU and no automatic parallelization. It simply translates to LLVM and relies on its vectorization. For readily vectorized arithmetic on the CPU you can use comfort-blas, which is a high-level binding to BLAS. My experience with GPU programming is that the speedup is by far less than claimed in advertisings and conference talks. Fantastic speedups of factors 100 or 1000 are usually due to a comparison of a GPU implementation optimized over months to a specific GPU and a CPU version quickly implemented in one day, often ignoring vectorization and cache optimization. GPU programs are hardly portable between vendors or even different GPU generations of the same vendor.