The Diadora principle: efficient execution of concurrent logic and related languages - Massey; Tick (Hawaii International Conference on System Sciences, 27th. Vol. 5: Biotechnology, 1994)
Compile-time partitioning of fine-grained concurrent languages is difficult, because it must be both powerful enough to greatly increase the grain size and safe from introducing errors, particularly cycles (data dependencies that circularly link tasks). Incorrect assignment of a cycle into a single thread can result in deadlock, but perfectly safe data dependency analysis is especially difficult for concurrent logic programming languages (CLPs) because of the prevalence of logic variables, which can cause hidden cycles through aliasing, and because efficiency requires that many tasks be placed in the same thread. This paper describes the Diadora computation model, developed to partition CLPs by instituting deadlock breaking if an inadvertent cycle has been sequentialized, and task stealing for runtime load balancing, thus exploiting the synergy between simple static analysis and a simple runtime system. The Diadora model is a form of lazy task creation a la Mohr, Kranz and Halstead (1991). However, it is customized for CLPs and the somewhat different problems and features of these languages.< >