This talk presents a variation of a program optimisation technique, namely fusion, for data parallel languages. Fusion is a well known optimisation technique in sequential programming (eg, deforestation and loop fusion). Successive traversals over a data structure are fused into a single, more complex traversal, thereby reducing the number of temporary data structures and memory accesses as well as improving data locality. However, standard sequential fusion techniques cannot be directly applied to data parallel code as they typically obfuscate the parallelism contained in the code. However, fusion is particularly important for an efficient implementation in our compiler: The flattening transformation, which is part of the compilation of nested data parallel Haskell produces extremely fine grained code which makes it necessary to apply some kind of fusion to achieve good performance on most architectures.
Host: Robert Harper
Appointments: Debbie Cavlovich