Cl91] 5.1 Related Work 5.2 Further Work 4.4 Split Code 4.3 Implementing J*code 4.2.3 Some Examples 4.2 Extending Jcode 4.2.2 Creating Processes Equational Constraints, Residuation, and the Parallel Jump-machine
暂无分享,去创建一个
Wawrzynek. Fine-grain parallelism with minimal hardware support: A compiler-controlled threaded abstract machine. A fully abstract semantics for a rst-order functional language with logic variables. 10 leading to a communication channel for the result of the forked process. When the last process is forked sum suspends until that process nished its computatation. After that, sum is only suspended a second time if any of the forked processes needs clearly more time than the last one. With that, we are able to implement the behaviour intended by the constraint functional speciication. 5 Conclusion We introduced an extension of standard lazy functional languages with residuals and constraints. Such a language is well suited for the speciication of parallel algorithms because it allows some abstract kind of granularity control and process communication. We further showed how to extend the JUMP-machine to be able to execute such a language in parallel and presented some important implementation issues of the new JUMP*-machine. The I-structures of Id Nouveau ANP89, NPA86] are very similiar to the residuals. But Id Nouveau uses them within a special form of array. There is no explicit granularity control in Id Nouveau. The goals followed in the Id Nouveau implementation with the Threaded Abstract Machine (TAM) shares CSS + 91] some fundamental ideas with the JUMP*-machine, but the implementation techniques are quite diierent. A sequential implementation of residuation exists for the language LIFE AKMV92], which also combines residuals with constraints. An idea very similiar to residuation are the futures or promises used in LISP to spawn a parallel computation and simultaneously construct a ll-in for the result within a data structure. Currently, we are working at the low level mechanisms that are used to implement J*Code. Thereafter, we will start to implement a compiler for a constraint functional language. The compiler should be able to produce code for sequential hardware and for parallel MIMD-machines. Following our tradition our goal will be the direct generation of assembly code. 5.3 Acknowledgements Hendrik C.R. Lock was a great help through a couple of inspiring email discussions and IRC 2-sessions. 9 JUMP*-machine, jumping through an objects code is a request to return the WHNF, i.e. the \value" of that object. Hence, it is suucient to communicate a WHNF, i.e. a term node or a basic value. If a term node has one or more arguments, new C-objects are created for them. As soon as that WHNF is …