Results 1 - 10
of
26
Parallel Execution of Prolog Programs: A Survey
"... Since the early days of logic programming, researchers in the field realized the potential for exploitation of parallelism present in the execution of logic programs. Their high-level nature, the presence of non-determinism, and their referential transparency, among other characteristics, make logic ..."
Abstract
-
Cited by 53 (23 self)
- Add to MetaCart
Since the early days of logic programming, researchers in the field realized the potential for exploitation of parallelism present in the execution of logic programs. Their high-level nature, the presence of non-determinism, and their referential transparency, among other characteristics, make logic programs interesting candidates for obtaining speedups through parallel execution. At the same time, the fact that the typical applications of logic programming frequently involve irregular computations, make heavy use of dynamic data structures with logical variables, and involve search and speculation, makes the techniques used in the corresponding parallelizing compilers and run-time systems potentially interesting even outside the field. The objective of this paper is to provide a comprehensive survey of the issues arising in parallel execution of logic programming languages along with the most relevant approaches explored to date in the field. Focus is mostly given to the challenges emerging from the parallel execution of Prolog programs. The paper describes the major techniques used for shared memory implementation of Or-parallelism, And-parallelism, and combinations of the two. We also explore some related issues, such as memory
The CIAO Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems (Extended Abstract)
- IN PARALLELISM AND IMPLEMENTATION OF LOGIC AND CONSTRAINT LOGIC PROGRAMMING
, 1995
"... ..."
On the role of semantic approximations in validation and diagnosis of constraint logic programs
- University
, 1997
"... work in the ESPRIT project DiSCiPl. The project aims at devising advanced tools for debugging of constraint logic programs. Acentral problem in program development is obtaining a program which satis es the user's expectations. When considering a given program, a natural question is then whether or n ..."
Abstract
-
Cited by 35 (19 self)
- Add to MetaCart
work in the ESPRIT project DiSCiPl. The project aims at devising advanced tools for debugging of constraint logic programs. Acentral problem in program development is obtaining a program which satis es the user's expectations. When considering a given program, a natural question is then whether or not it
Program Analysis, Debugging, and Optimization Using the Ciao System Preprocessor
- In 1999 International Conference on Logic Programming
, 1999
"... We present a tutorial overview of Ciaopp, the Ciao system preprocessor. Ciao is a public-domain, next-generation logic programming system, which subsumes ISO-Prolog and is specifically designed to a) be highly extensible via libraries and b) support modular program analysis, debugging, and optimizat ..."
Abstract
-
Cited by 34 (16 self)
- Add to MetaCart
We present a tutorial overview of Ciaopp, the Ciao system preprocessor. Ciao is a public-domain, next-generation logic programming system, which subsumes ISO-Prolog and is specifically designed to a) be highly extensible via libraries and b) support modular program analysis, debugging, and optimization. The latter tasks are performed in an integrated fashion by Ciaopp. Ciaopp uses modular, incremental abstract interpretation to infer properties of program predicates and literals, including types, variable instantiation properties (including modes), non-failure, determinacy, bounds on computational cost, bounds on sizes of terms in the program, etc. Using such analysis information, Ciaopp can find errors at compile-time in programs and/or perform partial verification. Ciaopp checks how programs call system libraries and also any assertions present in the program or in other modules used by the program. These assertions are also used to generate documentation automatically. Ciaopp also uses...
Program Development Using Abstract Interpretation (and The Ciao System Preprocessor
- In 10th International Static Analysis Symposium (SAS’03), number 2694 in LNCS
, 2003
"... Abstract. The technique of Abstract Interpretation has allowed the development of very sophisticated global program analyses which are at the same time provably correct and practical. We present in a tutorial fashion a novel program development framework which uses abstract interpretation as a funda ..."
Abstract
-
Cited by 30 (23 self)
- Add to MetaCart
Abstract. The technique of Abstract Interpretation has allowed the development of very sophisticated global program analyses which are at the same time provably correct and practical. We present in a tutorial fashion a novel program development framework which uses abstract interpretation as a fundamental tool. The framework uses modular, incremental abstract interpretation to obtain information about the program. This information is used to validate programs, to detect bugs with respect to partial specifications written using assertions (in the program itself and/or in system libraries), to generate and simplify run-time tests, and specialization, parallelization, and resource usage control, all in a provably correct way. In the case of validation and debugging, the assertions can refer to a variety of program points such as procedure entry, procedure exit, points within procedures, or global computations. The system can reason with much richer information than, for example, traditional types. This includes data structure shape (including pointer sharing), bounds on data structure sizes, and other operational variable instantiation properties, as well as procedure-level properties such as determinacy, termination, non-failure, and bounds on resource consumption (time or space cost). CiaoPP, the preprocessor of the Ciao multi-paradigm programming system, which implements the described functionality, will be used to illustrate the fundamental ideas.
Abstract multiple Specialization and its application to program parallelization
, 1999
"... MULTIPLE SPECIALIZATION AND ITS APPLICATION TO PROGRAM PARALLELIZATION GERMAN PUEBLA AND MANUEL HERMENEGILDO . Program specialization optimizes programs for known values of the input. It is often the case that the set of possible input values is unknown, or this set is innite. However, a form ..."
Abstract
-
Cited by 25 (16 self)
- Add to MetaCart
MULTIPLE SPECIALIZATION AND ITS APPLICATION TO PROGRAM PARALLELIZATION GERMAN PUEBLA AND MANUEL HERMENEGILDO . Program specialization optimizes programs for known values of the input. It is often the case that the set of possible input values is unknown, or this set is innite. However, a form of specialization can still be performed in such cases by means of abstract interpretation, specialization then being with respect to abstract values (substitutions), rather than concrete ones. We study the multiple specialization of logic programs based on abstract interpretation. This involves in principle, and based on information from global analysis, generating several versions of a program predicate for dierent uses of such predicate, optimizing these versions, and, nally, producing a new, \multiply specialized" program. While multiple specialization has received theoretical attention, little previous evidence exists on its practicality. In this paper we report on the incor...
Concurrency in Prolog Using Threads and a Shared Database
- In 1999 International Conference on Logic Programming
, 1999
"... Concurrency in Logic Programming has received much attention in the past. One problem with many proposals, when applied to Prolog, is that they involve large modications to the standard implementations, and/or the communication and synchronization facilities provided do not t as naturally within ..."
Abstract
-
Cited by 22 (12 self)
- Add to MetaCart
Concurrency in Logic Programming has received much attention in the past. One problem with many proposals, when applied to Prolog, is that they involve large modications to the standard implementations, and/or the communication and synchronization facilities provided do not t as naturally within the language model as we feel is possible. In this paper we propose a new mechanism for implementing synchronization and communication for concurrency, based on atomic accesses to designated facts in the (shared) database. We argue that this model is comparatively easy to implement and harmonizes better than previous proposals within the Prolog control model and standard set of built-ins. We show how in the proposed model it is easy to express classical concurrency algorithms and to subsume other mechanisms such as Linda, variable-based communication, or classical parallelism-oriented primitives. We also report on an implementation of the model and provide performance and resourc...
Some issues in analysis and specialization of modular Ciao-Prolog programs
- In Special Issue on Optimization and Implementation of Declarative Programming Languages, volume 30 of Electronic Notes in Theoretical Computer Science. Elsevier - North
, 2000
"... 1 Introduction Writing modular programs, i.e., programs which are made of components called modules, has proven useful in practice for both program development and maintenance. 1 Program compilation, analysis, and specialization have in common that they receive programs as input and they have to han ..."
Abstract
-
Cited by 18 (8 self)
- Add to MetaCart
1 Introduction Writing modular programs, i.e., programs which are made of components called modules, has proven useful in practice for both program development and maintenance. 1 Program compilation, analysis, and specialization have in common that they receive programs as input and they have to handle them in some way or another. Performing these tasks on modular programs differs from doing so on non-modular programs in several interesting ways. Our purpose is to study a number of issues which appear when developing analysis and specialization techniques for modular logic programming. By strict module systems we refer to those in which a module can only communicate with other modules via its interface. The interface of a module usually contains the names of the exported predicates and the names of the imported modules. Other modules can only use predicates which are among the

