Regular, shape-polymorphic, parallel arrays in Haskell
Regular, shape-polymorphic, parallel arrays in Haskell
复制标题
Haskell 中的规则、形状多态、并行数组
DOI:
10.1145/1863543.1863582
复制
发表时间:
2010
期刊:
影响因子:
--
通讯作者:
B. Lippmeier
中科院分区:
文献类型:
--
作者:
G. Keller;M. Chakravarty;Roman Leshchinskiy;S. Jones;B. Lippmeier
We present a novel approach to regular, multi-dimensional arrays in Haskell. The main highlights of our approach are that it (1) is purely functional, (2) supports reuse through shape polymorphism, (3) avoids unnecessary intermediate structures rather than relying on subsequent loop fusion, and (4) supports transparent parallelisation.
We show how to embed two forms of shape polymorphism into Haskell's type system using type classes and type families. In particular, we discuss the generalisation of regular array transformations to arrays of higher rank, and introduce a type-safe specification of array slices.
We discuss the runtime performance of our approach for three standard array algorithms. We achieve absolute performance comparable to handwritten C code. At the same time, our implementation scales well up to 8 processor cores.