POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A parallel implementation of logic programs
A parallel implementation of logic programs
Science of Computer Programming
Communications of the ACM
Kernel Andorra Prolog and its computation model
Logic programming
Prolog and its performance: exploiting independent and-parallelism
Logic programming
Handbook of theoretical computer science (vol. B)
The 3 R's of optimizing constraint logic programs: refinement, removal and reordering
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
QD-Janus: a sequential implementation of Janus in Prolog
Software—Practice & Experience
Parallel logic programming systems
ACM Computing Surveys (CSUR)
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Approximating interaction between linear arithmetic constraints
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Partial order and contextual net semantics for atomic and locally atomic CC programs
Science of Computer Programming - Special issue on concurrent constraint programming
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Contributions to the Theory of Logic Programming
Journal of the ACM (JACM)
An Efficient Unification Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Towards Independent And-Parallelism in CLP
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Euro-Par '97 Proceedings of the Third International Euro-Par Conference on Parallel Processing
The and/or process model for parallel interpretation of logic programs
The and/or process model for parallel interpretation of logic programs
An efficient easily adaptable system for interpreting natural language queries
Computational Linguistics
Parallel execution of prolog programs: a survey
ACM Transactions on Programming Languages and Systems (TOPLAS)
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Concurrency, Graphs and Models
Non-strict independence-based program parallelization using sharing and freeness information
Theoretical Computer Science
Program development using abstract interpretation (and the ciao system preprocessor)
SAS'03 Proceedings of the 10th international conference on Static analysis
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
An overview of ciao and its design philosophy
Theory and Practice of Logic Programming - Prolog Systems
Hi-index | 0.00 |
Studying independence of goals has proven very useful in the context of logic programming. In particular, it has provided a formal basis for powerful automatic parallelization tools, since independence ensures that two goals may be evaluated in parallel while preserving correctness and efficiency. We extend the concept of independence to constraint logic programs (CLP) and prove that it also ensures the correctness and efficiency of the parallel evaluation of independent goals. Independence for CLP languages is more complex than for logic programming as search space preservation is necessary but no longer sufficient for ensuring correctness and efficiency. Two additional issues arise. The first is that the cost of constraint solving may depend upon the order constraints are encountered. The second is the need to handle dynamic scheduling. We clarify these issues by proposing various types of search independence and constraint solver independence, and show how they can be combined to allow different optimizations, from parallelism to intelligent backtracking. Suficient conditions for independence which can be evaluated “a priori” at run-time are also proposed. Our study also yields new insights into independence in logic programming languages. In particular, we show that search space preservation is not only a sufficient but also a necessary condition for ensuring correctness and efficiency of parallel execution.