Defunctionalizing Push arrays
Paper in proceeding, 2014

Recent work on embedded domain specific languages (EDSLs) for high performance array programming has given rise to a number of array representations. In Feldspar and Obsidian there are two different kinds of arrays, called Pull and Push arrays. Both Pull and Push arrays are deferred; they are methods of computing arrays, rather than elements stored in memory. The reason for having multiple array types is to obtain code that performs better. Pull and Push arrays provide this by guaranteeing that operations fuse automatically. It is also the case that some operations are easily implemented and perform well on Pull arrays, while for some operations, Push arrays provide better implementations. But do we really need to have more than one array representation? In this paper we derive a new array representation from Push arrays that have all the good qualities of Pull and Push arrays combined. This new array representation is obtained via defunctionalization of a Push array API. Copyright is held by the owner/author(s).

Embedded Languages




Joel Bo Svensson

Indiana University

Josef Svenningsson

Chalmers, Computer Science and Engineering (Chalmers), Software Technology (Chalmers)

Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP. 3rd ACM SIGPLAN Workshop on Functional High-Performance Computing, FHPC 2014; Gothenburg; Sweden; 4 September 2014 through 4 September 2014

978-145033040-4 (ISBN)

Subject Categories

Software Engineering





More information