The Diadora Principle: Efficient Execution of Fine-Grain, Concurrent Languages
B. C. Massey, E. Tick
Committee:
Technical Report(Dec 1969)
Keywords:

A major problem in compile-time partitioning is how to deal with cycles, i.e., data dependencies that circularly link tasks. Incorrect assignment of a cycle into a single thread can result in deadlock. Most dataflow compilers ease this issue by partitioning only within procedures. For concurrent logic programming (CLP) languages, this is insufficient because their smaller task granularity requires global partitioning. Furthermore, perfectly safe data dependency analysis is difficult because of the prevalence of logic variables, which can cause hidden cycles through aliasing.

This paper describes the Diadora computation model, developed to efficiently and cheaply partition CLPs by instituting deadlock breaking if an inadvertent cycle has been sequentialized. Static mode analysis and data dependency analysis is performed, but need not be safe, only highly accurate, and therefore can be made local and cheap. As an additional benefit, the compiler may deliberately oversequentialize the program. A starved processor may gratuitously break the task at the bottom of the stack of some running task in order to cheaply increase program parallelism. Thus, accurate granularity analysis becomes less important for efficient execution under Diadora.

The Diadora mode) is a form of lazy task creation a la Mohr, Kranz and Halstead. However, it is customized for CLPs and the somewhat different problems and features of these languages. The technique is analogous to the Andorra model of computation for Prolog, but its motivations and mechanisms are unique. Both use deadlock breaking: Andorra to parallelize Prolog and Diadora to sequentialize CLPs. Whereas Andorra is hypothesized to work well because most goals are determinate, Diadora is hypothesized to work well because most goals have no cycles.