Networked computing potentially provides very high computational power. Efficiently utilishing the power of all available processors, however, is complicated and fraught with problems. A major problem is the identification of computation that may be undertaken by a processor during periods of inactivity. The functional programming paradigm supports the flexible evaluation of sub-expressions in any order. In this paper we present a comprehensive anlysis of speculative evaluation issues and pose original schemes for their resolution. We expound four (two quantitative and two qualitative) novel schemes and a complete set of program annotations for indicating the presence of concurrency in a program that we use in our implementation of an extesion of Glasgow Parallel Haskell (GPH). An original concept (derivation) is also presented for managing the speculative proiorities extant in the schemes introcuced. The paper concludes with a summary of the salient points.
展开▼