Programming with Data Dependency Algebras (DDAs)
Data dependencies are inherent in the notion of an algorithm. Data dependency algebras (DDAs) [BH09] turn dependencies into explicit, programmable entities, that are more fundamental than general dependency analysis of, e.g., loops in an imperative program. DDAs abstract how parts of a computation depend on data supplied by other parts at a fine-grained level.

	A hardware architecture’s space-time communication layout can be defined as a special Hardware Space-Time DDA. It has projections into space and time, where space comprises the hardware’s static spatial connectivity pattern. By embedding a computation’s DDA into the Space-Time DDA of the hardware, we map the computation onto the communication layout of the hardware.
	In a DDA-enabled compiler each hardware system is associated with a computational mechanism based on its Space-Time DDA. The generated code has precise placement of the computation steps as defined by the embedding. We are developing the Magnolia language to support DDA-based programming.
Portability: In the figure, DDA + Expression is hardware independent. Embeddings onto various hardware is defined from the DDA, and is thus reusable when the DDA is reused.
Reusability: The Butterfly pattern, used as an example here, appears in many divide & conquer algorithms, sorting networks and signal processing problems. The same DDA and embeddings can be reused for many computations, only the expressions differ.
Embeddings are high-level and controlled by DDA projections, usually short, reusable code snippets. The extra detail in the example shows the Bitonic Sort DDA embedding onto CUDA.
Our current DDA project is a continuation of a previous project, where the simple DDA-based language Sapphire was developed. Some more examples are available on the old project pages.
People and Partners
Staff
- Prof. Magne Haveraaen, project leader
 - Dr Eva Burrows, postdoc
 
Related People
- Steinar Søreide – worked on the DDA-based Sapphire language
 
References
- [BH12]
 - Eva Burrows and Magne Haveraaen. Programmable data dependencies and placements. In Proceedings of the 7th workshop on Declarative aspects and applications of multicore programming, DAMP '12, pages 31-40, New York, NY, USA, 2012. ACM. [ bib | DOI ]
 - [Bur11]
 - Eva Burrows. Programming with Explicit Dependencies: A Framework for Portable Parallel Programming. PhD thesis, Research School in Information and Communication Technology, Department of Informatics, University of Bergen, Norway, PB 7803, 5020 Bergen, Norway, 2011. [ bib | .html | .pdf ]
 - [BH09]
 - Eva Burrows and Magne Haveraaen. A hardware independent parallel programming model. Journal of Logic and Algebraic Programming, 78:519-538, 2009. [ bib | DOI ]
 - [CH95]
 - Vytautas Čyras and Magne Haveraaen. Modular programming of recurrencies: a Comparison of Two Approaches. Informatica, 6(4)397-444, 1995. [ pdf ]
 - [Hav00]
 - Magne Haveraaen: Efficient Parallelisation of Recursive Problems Using Constructive Recursion. In Arndt Bode and Thomas Ludwig and Roland Wismüller (editors): Euro-Par 2000, Lecture Notes in Computer Science, volume 1900, pp. 758--761, Springer Verlag, 2000. [ DOI ]
 - [HS98]
 - Magne Haveraaen and Steinar Søreide. Solving recursive problems in linear time using Constructive Recursion. Proceedings of Norsk Informatikk Konferanse NIK'98, Tapir, Norway, 1998, pp. 310-321. [ ps ]
 
