35 research outputs found
The CIAO Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems
CIAO is an advanced programming environment supporting Logic and Constraint programming. It offers a simple concurrent kernel on top of which declarative and non-declarative extensions are added via librarles. Librarles are available for supporting the ISOProlog standard, several constraint domains, functional and higher order programming, concurrent and distributed programming, internet programming, and others. The source language allows declaring properties of predicates via assertions, including types and modes. Such properties are checked at compile-time or at run-time. The compiler and system architecture are designed to natively support modular global analysis, with the two objectives of proving properties in assertions and performing program optimizations, including transparently exploiting parallelism in programs. The purpose of this paper is to report on recent progress made in the context of the CIAO system, with special emphasis on the capabilities of the compiler, the techniques used for supporting such capabilities, and the results in the áreas of program analysis and transformation already obtained with the system
The CIAO multiparadigm compiler and system: A progress report
Abstract is not available
Improving the efficiency of nondeterministic indepemndent and-parallel systems
We present the design and implementation of the and-parallel component of ACE. ACE is a computational model for the full Prolog language that simultaneously exploits both or-parallelism and independent and-parallelism. A high performance implementation of the ACE model has been realized and its performance reported in this paper. We discuss how some of the standard problems which appear when implementing and-parallel systems are solved in ACE. We then propose a number of optimizations aimed at reducing the overheads and the increased memory consumption which occur in such systems when using previously proposed solutions. Finally, we present results from an implementation of ACE which includes the optimizations proposed. The results show that ACE exploits and-parallelism
with high efficiency and high speedups. Furthermore, they also show that the proposed optimizations, which are applicable to many other and-parallel systems, significantly decrease memory consumption and increase speedups and absolute performance both in forwards
execution and during backtracking
Relating data—parallelism and (and—) parallelism in logic programs
Much work has been done in the áreas of and-parallelism and data parallelism in Logic Programs. Such work has proceeded to a certain extent in an independent fashion. Both types of parallelism offer advantages and disadvantages. Traditional (and-) parallel models offer generality, being able to exploit parallelism in a large class of programs (including that exploited by data parallelism techniques). Data parallelism techniques on the other hand offer increased performance for a restricted class of programs. The thesis of this paper is that these two forms of parallelism are not fundamentally different and that relating them opens the possibility of obtaining the advantages of both within the same system. Some relevant issues are discussed and solutions proposed. The discussion is illustrated through visualizations of actual parallel executions implementing the ideas proposed
The CIAO multi-dialect compiler and system: An experimentation workbench for future (C)LP systems
Abstract is not available
An overview of ciao and its design philosophy
We provide an overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation. An important aspect of Ciao is that, in addition to supporting logic programming (and, in particular, Prolog), it provides the programmer with a large number of useful features from different programming paradigms and styles and that the use of each of these features (including those of Prolog) can be turned on and off at will for each program module. Thus,
a given module may be using, e.g., higher order functions and constraints, while another module may be using assignment, predicates, Prolog meta-programming, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of optimizations (including automatic parallelization). Such optimizations produce code that is highly competitive with other dynamic languages or, with the (experimental) optimizing compiler, even that of static languages, all while retaining the flexibility and interactive development of a dynamic language. This compilation architecture supports modularity and separate compilation throughout. The environment also includes a powerful autodocumenter and a unit testing framework, both closely integrated with the assertion system. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in a single journal paper, pointing instead to previous Ciao literature
Towards CIAO-Prolog - A parallel concurrent constraint system
Abstract is not available
&ACE: A high-performance parallel prolog system
In recent years a lot of research has been invested in parallel processing of numerical applications. However,
parallel processing of Symbolic and AI applications has received less attention. This paper presents a system for parallel symbolic computitig, narned ACE, based on the logic programming paradigm. ACE is a computational model for the full Prolog language, capable of exploiting Or-parall< lism and Independent And-parallelism. In this paper vve focus on the implementation of the and-parallel part of the ACE system (ralled &ACE) on a shared memory multiprocessor, d< scribing its organization, some optimizations, and presenting some performance figures, proving the abilhy of &ACE to efficiently exploit parallelism
An abstract model for parallel execution of prolog
Logic programming has been used in a broad range of fields, from artifficial intelligence
applications to general purpose applications, with great success. Through its
declarative semantics, by making use of logical conjunctions and disjunctions, logic
programming languages present two types of implicit parallelism: and-parallelism and
or-parallelism.
This thesis focuses mainly in Prolog as a logic programming language, bringing out
an abstract model for parallel execution of Prolog programs, leveraging the Extended
Andorra Model (EAM) proposed by David H.D. Warren, which exploits the implicit
parallelism in the programming language. A meta-compiler implementation for an
intermediate language for the proposed model is also presented.
This work also presents a survey on the state of the art relating to implemented Prolog
compilers, either sequential or parallel, along with a walk-through of the current parallel
programming frameworks. The main used model for Prolog compiler implementation,
the Warren Abstract Machine (WAM) is also analyzed, as well as the WAM’s successor
for supporting parallelism, the EAM; Sumário:
Um Modelo Abstracto para
Execução Paralela de Prolog
A programação em lógica tem sido utilizada em diversas áreas, desde aplicações de
inteligência artificial até aplicações de uso genérico, com grande sucesso. Pela sua
semântica declarativa, fazendo uso de conjunções e disjunções lógicas, as linguagens de
programação em lógica possuem dois tipos de paralelismo implícito: ou-paralelismo e
e-paralelismo.
Esta tese foca-se em particular no Prolog como linguagem de programação em lógica,
apresentando um modelo abstracto para a execução paralela de programas em Prolog,
partindo do Extended Andorra Model (EAM) proposto por David H.D. Warren, que
tira partido do paralelismo implícito na linguagem. É apresentada uma implementação
de um meta-compilador para uma linguagem intermédia para o modelo proposto.
É feita uma revisão sobre o estado da arte em termos de implementações sequenciais
e paralelas de compiladores de Prolog, em conjunto com uma visita pelas linguagens
para implementação de sistemas paralelos. É feita uma análise ao modelo principal
para implementação de compiladores de Prolog, a Warren Abstract Machine (WAM) e
da sua evolução para suportar paralelismo, a EAM