An application of abstract interpretation of logic programs: occur check reduction
Proc. of the European symposium on programming on ESOP 86
Designing a high performance parallel logic programming system
ACM SIGARCH Computer Architecture News
Kernel Andorra Prolog and its computation model
Logic programming
Non-strict independent and-parallelism
Logic programming
Task granularity analysis in logic programs
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Static analysis of logic programs for independent and parallelism
Journal of Logic Programming
Compile-time derivation of variable dependency using abstract interpretation
Journal of Logic Programming
Combinations of abstract domains for logic programming
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the eleventh international conference on Logic programming
Effectiveness of global analysis in strict independence-based automatic parallelization
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Improving abstract interpretations by combining domains
ACM Transactions on Programming Languages and Systems (TOPLAS)
A methodology for granularity-based control of parallelism in logic programs
Journal of Symbolic Computation - Special issue on parallel symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Non pair-sharing and freeness analysis through linear refinement
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Incremental analysis of constraint logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallel Computing - special issue on parallel computing for irregular applications
Parallel execution of prolog programs: a survey
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Comparison of 12 Parallel FORTRAN Dialects
IEEE Software
An Abstract Machine for Restricted AND-Parallel Execution of Logic Programs
Proceedings of the Third International Conference on Logic Programming
&ACE: a high-performance parallel Prolog system
IPPS '95 Proceedings of the 9th International Symposium on Parallel Processing
PPCP '94 Proceedings of the Second International Workshop on Principles and Practice of Constraint Programming
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
An Abstract Interpretation Scheme for Groundedness, Freeness, and Sharing Analysis of Logic Programs
Proceedings of the 12th Conference on Foundations of Software Technology and Theoretical Computer Science
More Precise Yet Efficient Type Inference for Logic Programs
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
The and/or process model for parallel interpretation of logic programs
The and/or process model for parallel interpretation of logic programs
Theory and Practice of Logic Programming
Soundness, idempotence and commutativity of set-sharing
Theory and Practice of Logic Programming
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Towards execution time estimation in abstract machine-based languages
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Annotation of logic programs for independent and-parallelism by partial evaluation*
Theory and Practice of Logic Programming
Hi-index | 5.23 |
The current ubiquity of multi-core processors has brought renewed interest in program parallelization. Logic programs allow studying the parallelization of programs with complex, dynamic data structures with (declarative) pointers in a comparatively simple semantic setting. In this context, automatic parallelizers which exploit and-parallelism rely on notions of independence in order to ensure certain efficiency properties. ''Non-strict'' independence is a more relaxed notion than the traditional notion of ''strict'' independence which still ensures the relevant efficiency properties and can allow considerable more parallelism. Non-strict independence cannot be determined solely at run-time (''a priori'') and thus global analysis is a requirement. However, extracting non-strict independence information from available analyses and domains is non-trivial. This paper provides on one hand an extended presentation of our classic techniques for compile-time detection of non-strict independence based on extracting information from (abstract interpretation-based) analyses using the now well understood and popular Sharing+Freeness domain. This includes algorithms for combined compile-time/run-time detection which involve special run-time checks for this type of parallelism. In addition, we propose herein novel annotation (parallelization) algorithms, URLP and CRLP, which are specially suited to non-strict independence. We also propose new ways of using the Sharing+Freeness information to optimize how the run-time environments of goals are kept apart during parallel execution. Finally, we also describe the implementation of these techniques in our parallelizing compiler and recall some early performance results. We provide as well an extended description of our pictorial representation of sharing and freeness information.