Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Amadeo Casas is active.

Publication


Featured researches published by Amadeo Casas.


international symposium on functional and logic programming | 2006

A syntactic approach to combining functional notation, lazy evaluation, and higher-order in LP systems

Amadeo Casas; Daniel Cabeza; Manuel V. Hermenegildo

Nondeterminism and partially instantiated data structures give logic programming expressive power beyond that of functional programming. However, functional programming often provides convenient syntactic features, such as having a designated implicit output argument, which allow function call nesting and sometimes results in more compact code. Functional programming also sometimes allows a more direct encoding of lazy evaluation, with its ability to deal with infinite data structures. We present a syntactic functional extension, used in the Ciao system, which can be implemented in ISO-standard Prolog systems and covers function application, predefined evaluable functors, functional definitions, quoting, and lazy evaluation. The extension is also composable with higher-order features and can be combined with other extensions to ISO-Prolog such as constraints. We also highlight the features of the Ciao system which help implementation and present some data on the overhead of using lazy evaluation with respect to eager evaluation.


logic-based program synthesis and transformation | 2008

Annotation Algorithms for Unrestricted Independent And-Parallelism in Logic Programs

Amadeo Casas; Manuel Carro; Manuel V. Hermenegildo

We present two new algorithms which perform automatic parallelization via source-to-source transformations. The objective is to exploit goal-level, unrestrictedindependent and-parallelism. The proposed algorithms use as targets new parallel execution primitives which are simpler and more flexible than the well-known &/2 parallel operator. This makes it possible to generate better parallel expressions by exposing more potential parallelism among the literals of a clause than is possible with &/2 . The difference between the two algorithms stems from whether the order of the solutions obtained is preserved or not. We also report on a preliminary evaluation of an implementation of our approach. We compare the performance obtained to that of previous annotation algorithms and show that relevant improvements can be obtained.


international conference on logic programming | 2008

A High-Level Implementation of Non-deterministic, Unrestricted, Independent And-Parallelism

Amadeo Casas; Manuel Carro; Manuel V. Hermenegildo

The growing popularity of multicore architectures has renewed interest in language-based approaches to the exploitation of parallelism. Logic programming has proved an interesting framework to this end, and there are parallel implementations which have achieved significant speedups, but at the cost of a quite sophisticated low-level machinery. This machinery has been found challenging to code and, specially, to maintain and expand. In this paper, we follow a different approach which adopts a higher level view by raising some of the core components of the implementation to the level of the source language. We briefly present an implementation model for independent and-parallelism which fully supports non-determinism through backtracking and provides flexible solutions for some of the main problems found in previous and-parallel implementations. Our proposal is able to optimize the execution for the case of deterministic programs and to exploit unrestricted and-parallelism, which allows exposing more parallelism among clause literals than fork-join-based proposals. We present performance results for an implementation, including data for benchmarks where and-parallelism is exploited in non-deterministic programs.


practical aspects of declarative languages | 2008

Towards a high-level implementation of execution primitives for unrestricted, independent and-parallelism

Amadeo Casas; Manuel Carro; Manuel V. Hermenegildo

Most efficient implementations of parallel logic programming rely on complex low-level machinery which is arguably difficult to implement and modify. We explore an alternative approach aimed at taming that complexity by raising core parts of the implementation to the source language level for the particular case of and-parallelism. We handle a significant portion of the parallel implementation at the Prolog level with the help of a comparatively small number of concurrency-related primitives which take care of lower-level tasks such as locking, thread management, stack set management, etc. The approach does not eliminate altogether modifications to the abstract machine, but it does greatly simplify them and it also facilitates experimenting with different alternatives. We show how this approach allows implementing both restricted and unrestricted (i.e., non fork-join) parallelism. Preliminary experiments show that the performance sacrificed is reasonable, although granularity control is required in some cases. Also, we observe that the availability of unrestricted parallelism contributes to better observed speedups.


parallel symbolic computation | 2007

Towards a high-level implementation of flexible parallelism primitives for symbolic languages

Amadeo Casas; Manuel Carro; Manuel V. Hermenegildo

The advent of multicore processors is bringing renewed interest in parallelism and, accordingly, in the development of languages and tools to simplify the task of writing parallel programs. This is especially important for the complex, non-regular algorithms often found in software which performs non-trivial symbolic tasks. Such software can benefit from being written in a high-level language whose nature is symbolic as well, since this narrows the gap between the conceptual definition of the task to be performed and the code which executes it. In our case we will use for concreteness a logic-based multiparadigm language, Ciao [1], which is based on a logic-programming kernel and a flexible mechanism whereby multiple extensions are built supporting Prolog, functional programming, constraint programming, and other systemand user-level languages. The base language and system features dynamic typing, higher-order capabilities, polymorphism, and static type inference and checking (also of non-trivial properties, such as computational complexity). Such language capabilities are largely orthogonal to parallelism; however, the way parallelism is expressed combines seamlessly with the the rest of the language. An advantage of logic-based languages (and, in general, of declarative languages) is that their clean semantics and highlevel nature makes it possible to perform automatic parallelization more easily [4, 2]. At the same time, the runtime


Theory and Practice of Logic Programming | 2011

Parallel backtracking with answer memoing for independent and-parallelism

Pablo Chico de Guzmán; Amadeo Casas; Manuel Carro; Manuel V. Hermenegildo

Goal-level Independent and-parallelism (IAP) is exploited by scheduling for simultaneous execution two or more goals which will not interfere with each other at run time. This can be done safely even if such goals can produce multiple answers. The most successful IAP implementations to date have used recomputation of answers and sequentially ordered backtracking. While in principle simplifying the implementation, recomputation can be very inefficient if the granularity of the parallel goals is large enough and they produce several answers, while sequentially ordered backtracking limits parallelism. And, despite the expected simplification, the implementation of the classic schemes has proved to involve complex engineering, with the consequent difficulty for system maintenance and extension, while still frequently running into the well-known trapped goal and garbage slot problems. This work presents an alternative parallel backtracking model for IAP and its implementation. The model features parallel out-of-order (i.e., non-chronological) backtracking and relies on answer memoization to reuse and combine answers. We show that this approach can bring significant performance advantages. Also, it can bring some simplification to the important engineering task involved in implementing the backtracking mechanism of previous approaches.


practical aspects of declarative languages | 2012

A segment-swapping approach for executing trapped computations

Pablo Chico de Guzm; Amadeo Casas; Manuel Carro; Manuel V. Hermenegildo

We consider the problem of supporting goal-level, independent and-parallelism (IAP) in the presence of non-determinism. IAP is exploited when two or more goals which will not interfere at run time are scheduled for simultaneous execution. Backtracking over non-deterministic parallel goals runs into the well-known trapped goal and garbage slot problems. The proposed solutions for these problems generally require complex low-level machinery which makes systems difficult to maintain and extend, and in some cases can even affect sequential execution performance. In this paper we propose a novel solution to the problem of trapped nondeterministic goals and garbage slots which is based on a single stack reordering operation and offers several advantages over previous proposals. While the implementation of this operation itself is not simple, in return it does not impose constraints on the scheduler. As a result, the scheduler and the rest of the run-time machinery can safely ignore the trapped goal and garbage slot problems and their implementation is greatly simplified. Also, standard sequential execution remains unaffected. In addition to describing the solution we report on an implementation and provide performance results. We also suggest other possible applications of the proposed approach beyond parallel execution.


Proceedings of CICLOPS 2007: 7th International Colloquium on Implementation of Constraint and Logic Programming Systems | 7th International Colloquium on Implementation of Constraint and Logic Programming Systems | September 8, 2007 | Porto, Portugal | 2007

Towards high-level execution primitives for and-parallelism: preliminary results

Amadeo Casas; Manuel Carro Liñares; Manuel V. Hermenegildo


Archive | 2008

Automatic unrestricted independent and-parallelism in declarative multiparadigm languages

Gregory L. Heileman; Amadeo Casas


workshop on declarative aspects of multicore programming | 2007

Automatic granularity-aware parallelization of programs with predicates, functions, and constraints

Manuel V. Hermenegildo; Francisco Bueno Carrillo; Manuel Carro Liñares; Amadeo Casas; Pedro López García; E. Mera; Jorge A. Navas

Collaboration


Dive into the Amadeo Casas's collaboration.

Top Co-Authors

Avatar

Manuel V. Hermenegildo

Ben-Gurion University of the Negev

View shared research outputs
Top Co-Authors

Avatar

Manuel Carro

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Manuel Carro Liñares

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Manuel V. Hermenegildo

Ben-Gurion University of the Negev

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

E. Mera

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Pedro López García

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge