A fully automatic, compiler-driven approach to parallelisation can result in unpredictable time and space costs for compiled code. On the other hand, a fully manual approach to parallelisation can be long, tedious, prone to errors, hard to debug, and often architecturespecific. We present a declarative domain-specific language, Ypnos, for expressing structured grid computations which encourages manual specification of causally sequential operations but then allows a simple, predictable, static analysis to generate optimised, parallel implementations. We introduce the language and provide some discussion on the theoretical aspects of the language semantics, particularly the structuring of computations around the category theoretic notion of a comonad. Categories and Subject Descriptors D [3]: 2—Applicative (functional) languages, Concurrent, distributed, and parallel languages, Specialised application languages; D [3]: 3—Concurrent programming structures General Terms Design, La...
Dominic A. Orchard, Max Bolingbroke, Alan Mycroft