Abstract
Stencil convolution is a fundamental building block of many scientific and image processing algorithms. We present a declarative approach to writing such convolutions in Haskell that is both efficient at runtime and implicitly parallel. To achieve this we extend our prior work on the Repa array library with two new features: partitioned and cursored arrays. Combined with careful management of the interaction between GHC and its back-end code generator LLVM, we achieve performance comparable to the standard OpenCV library.
Original language | English |
---|---|
Pages (from-to) | 59-70 |
Number of pages | 12 |
Journal | ACM SIGPLAN Notices |
Volume | 46 |
Issue number | 12 |
DOIs | |
Publication status | Published - 1 Dec 2011 |
Externally published | Yes |
Keywords
- Arrays
- Data parallelism
- Haskell