AbstractPROLOG implementation efforts have recently begun to shift from single-processor systems to the new commercially available shared-memory multiprocessors. Among the problems encountered are efficient implementation of operations on variables and the scheduling of the processors. Most of the solutions proposed so far suffer from expensive, nonconstant-time implementation of operations on variables. We propose a storage model (versions-vector model) and a scheduling algorithm. The objectives of the scheduling algorithm are to approximate the sequential processing whenever feasible and to minimize the change in the state of a processor looking for a new task. The most important property of the storage model is a constant-time implementation of operations on all variables. The price paid for efficiency in managing variables is a nonconstant time of task switching. We propose three ways to decrease this price. The first is promotion of variables from versions vectors to value cells on the stack or heap during a task switch, making the subsequent task switches cheaper. The second is delayed installation of variables in versions vectors, decreasing the cost of short branches. The third is a possibility of restricting parallelism to predicates which can gain from the OR-parallel execution
Is data on this page outdated, violates copyrights or anything else? Report the problem now and we will take corresponding actions after reviewing your request.