Independently Computed Regions in a Data Parallel Array Language
MetadataShow full item record
Programmers who are involved in large numeric computations such as simulations, image- and signal processing and machine learning are in dire need for the highest per- formance. The most often used functions represent map, reduce, multiply-accumulate, stencil computations or other functions that are cheap on their own. Industry has re- sponded with various specialised hardware to execute these functions using ‘single- instruction multiple data’ parallelism. Users of this hardware often have to resort to libraries written in low-level programming languages, provided by the manufacturers, to obtain the performance they seek. Without proper abstraction it becomes very easy to make mistakes. Accelerate is an embedded domain specific language in Haskell that pro- vides the right abstractions for high-performance, shape-polymorphic array computa- tions. This work will explore a possible solution for a shortcoming in the expressivity of Accelerate when implementing a simulation consisting of partial differential equations with initial conditions that depend on boundary specifics e.g. the index. We achieve this by adding expressivity to subdivide an array into tiled, independently executed regions. The subdivision in regions studied in this thesis had its original motivation in the treat- ment of boundary conditions, but the technique can be fruitfully applied to a variety of other scenarios.