# Accelerate

Ben Lever Ben.Lever at nicta.com.au
Thu Jul 29 22:36:50 EDT 2010

```Hi Manuel,

Thanks for all your comments. I think we're very close to converging on a final set of requirements. Here's a summary of what's be covered so far - let us know what you think.

A stencil describes a set of values from the source array (and possibly constant values) that a reduction operator is eventually applied to:

*   Stencil elements are drawn/gathered from a neighbourhood of locations in the source array; the neighbourhood is described by its:
*   extent (dimensionality and size)
*   focal point (origin)
*   Locations outside the source array can be described:
*   in terms of the source array:
*   clamping
*   wrap-around
*   mirroring
*   as constant values:
*   independent of the outside element location
*   dependent on the outside element location
*   The gathered stencil elements (drawn from the constrained neighbourhood) are ordered

Although not complete, as it doesn't handle the boundary-conditions, below is a revised function type:

stencil
:: (Ix dim, Ix dim', Ix dimN, Elem a, Elem b)
=> Exp dim'                                                 -- ^Extent of the destination array
-> Exp dimN                                                 -- ^Extent of the neighbourhood array
-> Exp dimN                                                 -- ^Focal point of the neighbourhood
-> Exp Int                                                  -- ^Number of elements to gather
-> (Exp dim' -> Exp Int -> dimN)                            -- ^Gathering function (doesn't handle constants or boundary-conditions)
-> (Exp dim' -> Exp Int -> Exp b -> Exp a -> Exp b)         -- ^Reduction operator (now also passing in index of stencil element)
-> Exp b                                                    -- ^Reduction identity value
-> Acc (Array dim a)                                        -- ^Source array
-> Acc (Array dim' b)                                       -- ^Destination array

It's starting to look overly complicated - I feel there's a better way. Perhaps the stencil description should be extracted out as something separate given that it specifies so much?

Regards,

Ben Lever
Senior Researcher Engineer
National ICT Australia

NICTA l Locked Bag 9013 l Alexandria NSW 1435
T + 612 8306 0742 | F +612 9376 2027
www.nicta.com.au<http://www.nicta.com.au/> l ben.lever at nicta.com.au<mailto:rami.mukhtar at nicta.com.au>

```