Data parallel programming – Repa

Repa (regular parallel) is a Haskell library providing regular parallel arrays. Repa performs very well in image processing, for example. Doing computations on large data structures in parallel is Repa's specialty. Repa is installed with:

stack install repa

The parts on Repa in this chapter are written for version 3.4.0.2 of the Repa library. The main interface is exported by the Data.Array.Repa module.

At first glance, the library perhaps looks a bit complex. For instance, the parallel sum function has this daunting type signature:

sumAllP:: (Shape sh, Source r a, Elt a, Unbox a, Num a, Monad m)=> Array r sh a -> m a

Repa uses a lot of classes to overload functionality over different types of array. The type of immutable ...

Get Haskell High Performance Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.