Ricardo Rocha 0001

dblp:20/2773-1 · also Ricardo Jorge Gomes Lopes da Rocha · DBLP profile ↗
← Back
66ranked-venue papers
11as first author
7since 2021 · last 2025
0000-0003-4502-8835ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 40 · 9 first-author · 1 since 2021Theory of computation · 22 · 6 first-authorSystems, architecture and hardware · 10 · 1 first-author · 4 since 2021Artificial intelligence and machine learning · 9Databases, data management, data science and information retrieval · 2 · 1 first-author · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2025 A sleek lock-free hash map in an ERA of safe memory reclamation methods
abstract
Lock-free data structures have become increasingly significant due to their algorithmic advantages in multi-core cache-based architectures. Safe Memory Reclamation (SMR) is a technique used in concurrent programming to ensure that memory can be safely reclaimed without causing data corruption, dangling pointers, or access to freed memory. The ERA theorem states that any SMR method for concurrent data structures can only provide at most two of the three main desirable properties: Ease of use, Robustness, and Applicability. This fundamental trade-off influences the design of efficient lock-free data structures at an early stage. This work redesigns a previous lock-free hash map to fully exploit the properties of the ERA theorem and to leverage the characteristics of multi-core cache-based architectures by minimizing the number of cache misses, which are a significant bottleneck in multi-core environments. Experimental results show that our design outperforms the previous design, which was already quite competitive when compared against the Concurrent Hash Map design of the Intel’s TBB library.
Pedro Moreno, Miguel Areias 0001, Ricardo Rocha 0001
Parallel Comput.3
2023 Releasing Memory with Optimistic Access: A Hybrid Approach to Memory Reclamation and Allocation in Lock-Free Programs
abstract
Lock-free data structures are an important tool for the development of concurrent programs as they provide scalability, low latency and avoid deadlocks, livelocks and priority inversion. However, they require some sort of additional support to guarantee memory reclamation. The Optimistic Access (OA) method has most of the desired properties for memory reclamation, but since it allows memory to be accessed after being reclaimed, it is incompatible with the traditional memory management model. This renders it unable to release memory to the memory allocator/operating system, and, as such, it requires a complex memory recycling mechanism. In this paper, we extend the lock-free general purpose memory allocator LRMalloc to support the OA method. By doing so, we are able to simplify the memory reclamation method implementation and also allow memory to be reused by other parts of the same process. We further exploit the virtual memory system provided by the operating system and hardware in order to make it possible to release reclaimed memory to the operating system.
Pedro Moreno, Ricardo Rocha 0001
SPAA2
2022 Parallel Logic Programming: A Sequel
abstract
Abstract Multi-core and highly connected architectures have become ubiquitous, and this has brought renewed interest in language-based approaches to the exploitation of parallelism. Since its inception, logic programming has been recognized as a programming paradigm with great potential for automated exploitation of parallelism. The comprehensive survey of the first twenty years of research in parallel logic programming, published in 2001, has served since as a fundamental reference to researchers and developers. The contents are quite valid today, but at the same time the field has continued evolving at a fast pace in the years that have followed. Many of these achievements and ongoing research have been driven by the rapid pace of technological innovation, that has led to advances such as very large clusters, the wide diffusion of multi-core processors, the game-changing role of general-purpose graphic processing units, and the ubiquitous adoption of cloud computing. This has been paralleled by significant advances within logic programming, such as tabling, more powerful static analysis and verification, the rapid growth of Answer Set Programming, and in general, more mature implementations and systems. This survey provides a review of the research in parallel logic programming covering the period since 2001, thus providing a natural continuation of the previous survey. In order to keep the survey self-contained, it restricts its attention to parallelization of the major logic programming languages (Prolog, Datalog, Answer Set Programming) and with an emphasis on automated parallelization and preservation of the sequential observable semantics of such languages. The goal of the survey is to serve not only as a reference for researchers and developers of logic programming systems but also as engaging reading for anyone interested in logic and as a useful source for researchers in parallel systems outside logic programming.
Agostino Dovier, Andrea Formisano 0001, Gopal Gupta 0001, Manuel V. Hermenegildo, Enrico Pontelli, Ricardo Rocha 0001
Theory Pract. Log. Program.6
2021 Towards an Elastic Lock-Free Hash Trie Design
abstract
A key aspect of any hash map design is the problem of dynamically resizing it in order to deal with hash collisions. In this context, elasticity refers to the ability to automatically resize the internal data structures that support the hash map operations in order to meet varying workloads, thus optimizing the overall memory consumption of the hash map. This work extends a previous lock-free hash trie design to support elastic hashing, i.e., expand saturated hash levels and compress unused hash levels, such that, at each point in time, the number of levels in a path matches the current demand as closely as possible. Experimental results show that elasticity effectively improves the search operation and, in doing so, our design becomes very competitive when compared to other state-of-the-art designs implemented in Java.
Miguel Areias 0001, Ricardo Rocha 0001
ISPDC2
2021 On the correctness and efficiency of a novel lock-free hash trie map design
Miguel Areias 0001, Ricardo Rocha 0001
J. Parallel Distributed Comput.2
2021 On the implementation of memory reclamation methods in a lock-free hash trie design
Pedro Moreno, Miguel Areias 0001, Ricardo Rocha 0001
J. Parallel Distributed Comput.3
2021 Pruning strategies for the efficient traversal of the search space in PILP environments
Joana Côrte-Real, Inês de Castro Dutra, Ricardo Rocha 0001
Knowl. Inf. Syst.3
2020 A Compression-Based Design for Higher Throughput in a Lock-Free Hash Map
Pedro Moreno, Miguel Areias 0001, Ricardo Rocha 0001
Euro-Par3
2019 A lock-free coalescing-capable mechanism for memory management
abstract
One common characteristic among current lock-free memory allocators is that they rely on the operating system to manage memory since they lack a lower-level mechanism capable of splitting and coalescing blocks of memory. In this paper, we discuss this problem and we propose a generic scheme for an efficient lock-free best-fit coalescing-capable mechanism that is able of satisfying memory allocation requests with desirable low fragmentation characteristics.
Ricardo Leite, Ricardo Rocha 0001
ISMM2
2019 Memory Reclamation Methods for Lock-Free Hash Tries
abstract
Hash tries are a trie-based data structure with nearly ideal characteristics for the implementation of hash maps. Starting from a particular lock-free hash map data structure, named Lock-Free Hash Tries (LFHT), we focus on solving the problem of memory reclamation without losing the lock-freedom property. We propose an approach that explores the characteristics of the LFHT structure in order to achieve efficient memory reclamation with low and well-defined memory bounds. Experimental results show that our approach obtains better results when compared with other state-of-the-art memory reclamation methods and provides a competitive and scalable hash map implementation, if compared to lock-based implementations.
Pedro Moreno, Miguel Areias 0001, Ricardo Rocha 0001
SBAC-PAD3
2019 Multi-dimensional lock-free arrays for multithreaded mode-directed tabling in Prolog
abstract
Summary This work proposes a new design for the supporting data structures used to implement multithreaded tabling in Prolog systems. Tabling is an implementation technique that improves the expressiveness of traditional Prolog systems in dealing with recursion and redundant computations. Mode‐directed tabling is an extension to the tabling technique that supports the definition of alternative criteria for specifying how answers are aggregated, thus being very suitable for problems where the goal is to dynamically calculate optimal or selective answers. In this work, we leverage the intrinsic potential that mode‐directed tabling has to express dynamic programming problems by creating a new design that improves the representation of multi‐dimensional arrays in the context of multithreaded tabling. To do so, we introduce a new mode for indexing arguments in mode‐directed tabled evaluations, nameddim, where eachdimargument features a uni‐dimensional lock‐free array. Experimental results using well‐known dynamic programming problems on a 32‐core machine show that the new design introduces less overheads and clearly improves the execution time for sequential and multithreaded tabled evaluations.
Miguel Areias 0001, Ricardo Rocha 0001
Concurr. Comput. Pract. Exp.2
2018 Table space designs for implicit and explicit concurrent tabled evaluation
abstract
Abstract One of the main advantages of Prolog is its potential for theimplicit exploitation of parallelismand, as a high-level language, Prolog is also often used as a means toexplicitly control concurrent tasks. Tabling is a powerful implementation technique that overcomes some limitations of traditional Prolog systems in dealing with recursion and redundant sub-computations. Given these advantages, the question that arises is if tabling has also the potential for the exploitation of concurrency/parallelism. On one hand, tabling still exploits a search space as traditional Prolog but, on the other hand, the concurrent model of tabling is necessarily far more complex, since it also introduces concurrency on the access to the tables. In this paper, we summarize Yap's main contributions to concurrent tabled evaluation and we describe the design and implementation challenges of several alternative table space designs for implicit and explicit concurrent tabled evaluation that represent different trade-offs between concurrency and memory usage. We also motivate for the advantages of usingfixed-sizeandlock-freedata structures, elaborate on the key role that the engine'smemory allocatorplays on such environments, and discuss how Yap's mode-directed tabling support can be extended to concurrent evaluation. Finally, we present our future perspectives toward an efficient and novel concurrent framework which integrates both implicit and explicit concurrent tabled evaluation in a single Prolog engine.
Miguel Areias 0001, Ricardo Rocha 0001
Theory Pract. Log. Program.2
2017 On Applying Probabilistic Logic Programming to Breast Cancer Data
Joana Côrte-Real, Inês de Castro Dutra, Ricardo Rocha 0001
ILP3
2017 Using Iterative Deepening for Probabilistic Logic Inference
Theofrastos Mantadelis, Ricardo Rocha 0001
PADL2
2017 Towards a Lock-Free, Fixed Size and Persistent Hash Map Design
abstract
Hash tries are a trie-based data structure with nearly ideal characteristics for the implementation of hash maps. In this paper, we present a novel, simple and scalable hash trie map design that fully supports the concurrent search, insert and remove operations on hash maps. To the best of our knowledge, our proposal is the first concurrent hash map design that puts together the following characteristics: (i) be lock-free; (ii) use fixed size data structures; and (iii) maintain the access to all internal data structures as persistent memory references. Experimental results show that our proposal is quite competitive when compared against other state-of-the-art proposals implemented in Java. Its design is modular enough to allow different types of configurations aimed for different performances in memory usage and execution time.
Miguel Areias 0001, Ricardo Rocha 0001
SBAC-PAD2
2017 On scaling dynamic programming problems with a multithreaded tabling Prolog system
Miguel Areias 0001, Ricardo Rocha 0001
J. Syst. Softw.2
2017 Introduction to the 33rd international conference on logic programming special issue
abstract
This special issue of Theory and Practice of Logic Programming (TPLP) contains the regular papers accepted for presentation at the 33rd International Conference on Logic Programming (ICLP 2017), held in Melbourne, Australia from the 28th of August to the 1st of September, 2017. ICLP 2017 was colocated with the 23rd International Conference on Principles and Practice of Constraint Programming (CP 2017) and the 20th International Conference on Theory and Applications of Satisfiability Testing (SAT 2017). Since the first conference held in Marseille in 1982, ICLP has been the premier international event for presenting research in logic programming.
Ricardo Rocha 0001, Tran Cao Son
Theory Pract. Log. Program.1
2016 Estimation-Based Search Space Traversal in PILP Environments
Joana Côrte-Real, Inês de Castro Dutra, Ricardo Rocha 0001
ILP3
2016 Declarative coordination of graph-based parallel programs
abstract
Declarative programming has been hailed as a promising approach to parallel programming since it makes it easier to reason about programs while hiding the implementation details of parallelism from the programmer. However, its advantage is also its disadvantage as it leaves the programmer with no straightforward way to optimize programs for performance. In this paper, we introduce Coordinated Linear Meld (CLM), a concurrent forward-chaining linear logic programming language, with a declarative way to coordinate the execution of parallel programs allowing the programmer to specify arbitrary scheduling and data partitioning policies. Our approach allows the programmer to write graph-based declarative programs and then optionally to use coordination to fine-tune parallel performance. In this paper we specify the set of coordination facts, discuss their implementation in a parallel virtual machine, and show---through example---how they can be used to optimize parallel execution. We compare the performance of CLM programs against the original uncoordinated Linear Meld and several other frameworks.
Flávio Cruz, Ricardo Rocha 0001, Seth Copen Goldstein
PPoPP2
2016 On the Implementation of an Or-Parallel Prolog System for Clusters of Multicores
abstract
Abstract Nowadays, clusters of multicores are becoming the norm and, although, many or-parallel Prolog systems have been developed in the past, to the best of our knowledge, none of them was specially designed to explore the combination of shared and distributed memory architectures. In recent work, we have proposed a novel computational model specially designed for such combination which introduces a layered model with two scheduling levels, one for workers sharing memory resources, which we named a team of workers, and another for teams of workers (not sharing memory resources). In this work, we present a first implementation of such model and for that we revive and extend the YapOr system to exploit or-parallelism between teams of workers. We also propose a new set of built-in predicates that constitute the syntax to interact with an or-parallel engine in our platform. Experimental results show that our implementation is able to increase speedups as we increase the number of workers per team, thus taking advantage of the maximum number of cores in a machine, and to increase speedups as we increase the number of teams, thus taking advantage of adding more computer nodes to a cluster.
João Santos 0004, Ricardo Rocha 0001
Theory Pract. Log. Program.2
2015 SkILL - A Stochastic Inductive Logic Learner
abstract
Probabilistic Inductive Logic Programming (PILP) is a relatively unexplored area of Statistical Relational Learning which extends classic Inductive Logic Programming (ILP). Within this scope, we introduce SkILL, a Stochastic Inductive Logic Learner, which takes probabilistic annotated data and produces First Order Logic (FOL) theories. Data in several domains such as medicine and bioinformatics have an inherent degree of uncertainty, and because SkILL can handle this type of data, the models produced for these areas are closer to reality. SkILL can then use probabilistic data to extract non-trivial knowledge from databases, and also address efficiency issues by introducing an efficient search strategy for finding hypotheses in PILP environments. SkILL's capabilities are demonstrated using a real world medical dataset in the breast cancer domain.
Joana Côrte-Real, Theofrastos Mantadelis, Inês de Castro Dutra, Ricardo Rocha 0001, Elizabeth S. Burnside
ICMLA4
2015 On Compiling Linear Logic Programs with Comprehensions, Aggregates and Rule Priorities
Flávio Cruz, Ricardo Rocha 0001
PADL2
2014 On the Correctness and Efficiency of Lock-Free Expandable Tries for Tabled Logic Programs
Miguel Areias 0001, Ricardo Rocha 0001
PADL2
2014 Design and Implementation of a Multithreaded Virtual Machine for Executing Linear Logic Programs
abstract
Linear Meld is a concurrent forward-chaining linear logic programming language where logical facts can be asserted and retracted in a structured way. In Linear Meld, a program is seen as a database of logical facts and a set of derivation rules. The database of facts is partitioned by the nodes of a graph structure which leads to parallelism when nodes are executed simultaneously. Due to the foundations on linear logic, rules can retract facts in a declarative and structured fashion, leading to more expressive programs. We present the design and implementation of the virtual machine that we implemented to run Linear Meld on multicores, with particular focus on thread management, code organization, fact indexing, rule execution, and database organization for efficient fact insertion, lookup and deletion. Our results show that the virtual machine is capable of scaling programs with up to 16 threads and also exhibits interesting scalar performance results due to our indexing optimizations.
Flávio Cruz, Ricardo Rocha 0001, Seth Copen Goldstein
PPDP2
2014 A Linear Logic Programming Language for Concurrent Programming over Graph Structures
abstract
Abstract We have designed a new logic programming language called LM (Linear Meld) for programming graph-based algorithms in a declarative fashion. Our language is based on linear logic, an expressive logical system where logical facts can be consumed. Because LM integrates both classical and linear logic, LM tends to be more expressive than other logic programming languages. LM programs are naturally concurrent because facts are partitioned by nodes of a graph data structure. Computation is performed at the node level while communication happens between connected nodes. In this paper, we present the syntax and operational semantics of our language and illustrate its use through a number of examples.
Flávio Cruz, Ricardo Rocha 0001, Seth Copen Goldstein, Frank Pfenning
Theory Pract. Log. Program.2
2014 Tabling, Rational Terms, and Coinduction Finally Together!
abstract
Abstract Tabling is a commonly used technique in logic programming for avoiding cyclic behavior of logic programs and enabling more declarative program definitions. Furthermore, tabling often improves computational performance. Rational term are terms with one or more infinite sub-terms but with a finite representation. Rational terms can be generated in Prolog by omitting the occurs check when unifying two terms. Applications of rational terms include definite clause grammars, constraint handling systems, and coinduction. In this paper, we report our extension of YAP's Prolog tabling mechanism to support rational terms. We describe the internal representation of rational terms within the table space and prove its correctness. We then use this extension to implement a tabling based approach to coinduction. We compare our approach with current coinductive transformations and describe the implementation. In addition, we present an algorithm that ensures a canonical representation for rational terms.
Theofrastos Mantadelis, Ricardo Rocha 0001, Paulo Moura
Theory Pract. Log. Program.2
2013 On the Efficient Implementation of Mode-Directed Tabling
João Santos 0004, Ricardo Rocha 0001
PADL2
2013 Prolog programming with a map-reduce parallel construct
abstract
Map-Reduce is a programming model that has its roots in early functional programming. In addition to producing short and elegant code for problems involving lists or collections, this model has proven very useful for large-scale highly parallel data processing. In this work, we present the design and implementation of a high-level parallel construct that makes the Map-Reduce programming model available for Prolog programmers. To the best of our knowledge, there is no Map-Reduce framework native to Prolog, and so the aim of this work is to offer data processing features from which several applications can greatly benefit; the Inductive Logic Programming field, for instance, can take advantage of a Map-Reduce predicate when proving newly created rules against sets of examples. Our Map-Reduce model was comprehensively tested with different applications. Our experiments, using the Yap Prolog system, show that: (i) the model scales linearly up to 24 processors; (ii) a dynamic distributed scheduling strategy performs better than centralized or static scheduling strategies; and (iii) the performance varies significantly with the number of items being sent to each processor at a time. Overall, our Map-Reduce framework presents as a good alternative for both taking advantage of the currently available low cost multi-core architectures and developing scalable data processing applications, native to the Prolog programming language.
Joana Côrte-Real, Inês de Castro Dutra, Ricardo Rocha 0001
PPDP3
2012 An Efficient and Scalable Memory Allocator for Multithreaded Tabled Evaluation of Logic Programs
abstract
Despite the availability of both multithreading and tabling in some Prolog systems, the implementation of these two features, such that they work together, implies complex ties to one another and to the underlying engine. In recent work, we have proposed an approach to combine multithreading with tabling, implemented on top of the Yap Prolog system, whose primary goal was to reduce memory usage for the table space. Regarding the execution times, we observed some problems related to Yap's memory allocator, which is based on the operating system's default memory allocator, when running programs that allocate a higher number of data structures in the table space. In this paper, we propose a more efficient and scalable memory allocator for multithreaded tabled evaluation of logic programs. Our goal is to minimize the performance degradation that the system suffers when it is exposed to simultaneous memory requests made by multiple threads. For that, we propose a memory allocator based on local and global pages, to split memory among specific data structures and different threads, together with a strategy where data structures of the same type are pre-allocated within a page. Experimental results show that our new memory allocator can effectively reduce the execution time and scale better, when increasing the number of threads, than the original allocator.
Miguel Areias 0001, Ricardo Rocha 0001
ICPADS2
2012 Towards multi-threaded local tabling using a common table space
abstract
Abstract Multi-threading is currently supported by several well-known Prolog systems providing a highly portable solution for applications that can benefit from concurrency. When multi-threading is combined with tabling, we can exploit the power of higher procedural control and declarative semantics. However, despite the availability of both threads and tabling in some Prolog systems, the implementation of these two features implies complex ties to each other and to the underlying engine. Until now, XSB was the only Prolog system combining multi-threading with tabling. In XSB, tables may be either private or shared between threads. While thread-private tables are easier to implement, shared tables have all the associated issues of locking, synchronization and potential deadlocks. In this paper, we propose an alternative view to XSB's approach. In our proposal, each thread views its tables as private but, at the engine level, we use a common table space where tables are shared among all threads. We present three designs for our common table space approach: No-Sharing (NS) (similar to XSB's private tables), Subgoal-Sharing (SS) and Full-Sharing (FS). The primary goal of this work was to reduce the memory usage for the table space but, our experimental results, using the YapTab tabling system with a local evaluation strategy, show that we can also achieve significant reductions on running time.
Miguel Areias 0001, Ricardo Rocha 0001
Theory Pract. Log. Program.2
2012 The YAP Prolog system
abstract
Abstract Yet Another Prolog (YAP) is a Prolog system originally developed in the mid-eighties and that has been under almost constant development since then. This paper presents the general structure and design of the YAP system, focusing on three important contributions to the Logic Programming community. First, it describes the main techniques used in YAP to achieve an efficient Prolog engine. Second, most Logic Programming systems have a rather limited indexing algorithm. YAP contributes to this area by providing a dynamic indexing mechanism, or just-in-time indexer. Third, a important contribution of the YAP system has been the integration of both or-parallelism and tabling in a single Logic Programming system.
Vítor Santos Costa, Ricardo Rocha 0001, Luís Damas
Theory Pract. Log. Program.2
2011 On combining linear-based strategies for tabled evaluation of logic programs
abstract
Abstract Tabled evaluation is a recognized and powerful technique that overcomes some limitations of traditional Prolog systems in dealing with recursion and redundant subcomputations. We can distinguish two main categories of tabling mechanisms: suspension-based tabling and linear tabling. While suspension-based mechanisms are considered to obtain better results in general, they have more memory space requirements and are more complex and harder to implement than linear tabling mechanisms. Arguably, the SLDT and Dynamic Reordering of Alternatives (DRA) strategies are the two most successful extensions to standard linear tabled evaluation. In this work, we propose a new strategy, named dynamic reordering of solutions, and we present a framework, on top of the Yap system, that supports the combination of all these three strategies. Our implementation shares the underlying execution environment and most of the data structures used to implement tabling in Yap. We thus argue that all these common features allows us to make a first and fair comparison between these different linear tabling strategies and, therefore, better understand the advantages and weaknesses of each, when used solely or combined with the others.
Miguel Areias 0001, Ricardo Rocha 0001
Theory Pract. Log. Program.2
2011 Efficient instance retrieval of subgoals for subsumptive tabled evaluation of logic programs
abstract
Abstract Tabled evaluation is an implementation technique that solves some problems of traditional Prolog systems in dealing with recursion and redundant computations. Most tabling engines determine if a tabled subgoal will produce or consume answers by using variant checks. A more refined method, named call subsumption, considers that a subgoal A will consume from a subgoal B if A is subsumed by (an instance of) B, thus allowing greater answer reuse. We recently developed an extension, called Retroactive Call Subsumption, that improves upon call subsumption by supporting bidirectional sharing of answers between subsumed/subsuming subgoals. In this paper, we present both an algorithm and an extension to the table space data structures to efficiently implement instance retrieval of subgoals for subsumptive tabled evaluation of logic programs. Experiments results using the YapTab tabling system show that our implementation performs quite well on some complex benchmarks and is robust enough to handle a large number of subgoals without performance degradation.
Flávio Cruz, Ricardo Rocha 0001
Theory Pract. Log. Program.2
2011 On the implementation of the probabilistic logic programming language ProbLog
abstract
Abstract The past few years have seen a surge of interest in the field of probabilistic logic learning and statistical relational learning. In this endeavor, many probabilistic logics have been developed. ProbLog is a recent probabilistic extension of Prolog motivated by the mining of large biological networks. In ProbLog, facts can be labeled with probabilities. These facts are treated as mutually independent random variables that indicate whether these facts belong to a randomly sampled program. Different kinds of queries can be posed to ProbLog programs. We introduce algorithms that allow the efficient execution of these queries, discuss their implementation on top of the YAP-Prolog system, and evaluate their performance in the context of large networks of biological entities.
Angelika Kimmig, Bart Demoen, Luc De Raedt, Vítor Santos Costa, Ricardo Rocha 0001
Theory Pract. Log. Program.5
2010 Retroactive Subsumption-Based Tabled Evaluation of Logic Programs
Flávio Cruz, Ricardo Rocha 0001
JELIA2
2010 Preprocessing Boolean Formulae for BDDs in a Probabilistic Context
Theofrastos Mantadelis, Ricardo Rocha 0001, Angelika Kimmig, Gerda Janssens
JELIA2
2010 An Efficient Implementation of Linear Tabling Based on Dynamic Reordering of Alternatives
Miguel Areias 0001, Ricardo Rocha 0001
PADL2
2010 Compact Lists for Tabled Evaluation
João Raimundo, Ricardo Rocha 0001
PADL2
2010 Threads and or-parallelism unified
abstract
Abstract One of the main advantages of Logic Programming (LP) is that it provides an excellent framework for the parallel execution of programs. In this work we investigate novel techniques to efficiently exploit parallelism from real-world applications in low cost multi-core architectures. To achieve these goals, we revive and redesign the YapOr system to exploit or-parallelism based on a multi-threaded implementation. Our new approach takes full advantage of the state-of-the-art fast and optimized YAP Prolog engine and shares the underlying execution environment, scheduler and most of the data structures used to support YapOr's model. Initial experiments with our new approach consistently achieve almost linear speedups for most of the applications, proving itself as a good alternative for exploiting implicit parallelism in the currently available low cost multi-core architectures.
Vítor Santos Costa, Inês de Castro Dutra, Ricardo Rocha 0001
Theory Pract. Log. Program.3
2009 A Term-Based Global Trie for Tabled Logic Programs
Jorge Costa, João Raimundo, Ricardo Rocha 0001
ICLP3
2009 One Table Fits All
Jorge Costa, Ricardo Rocha 0001
PADL2
2009 High Level Thread-Based Competitive Or-Parallelism in Logtalk
Paulo Moura, Ricardo Rocha 0001, Sara C. Madeira
PADL2
2009 Improving the efficiency of inductive logic programming systems
abstract
Abstract Inductive logic programming (ILP) is a sub‐field of machine learning that provides an excellent framework for multi‐relational data mining applications. The advantages of ILP have been successfully demonstrated in complex and relevant industrial and scientific problems. However, to produce valuable models, ILP systems often require long running times and large amounts of memory. In this paper we address fundamental issues that have direct impact on the efficiency of ILP systems. Namely, we discuss how improvements in the indexing mechanisms of an underlying logic programming system benefit ILP performance. Furthermore, we propose novel data structures to reduce memory requirements and we suggest a new lazy evaluation technique to search the hypothesis space more efficiently. These proposals have been implemented in the April ILP system and evaluated using several well‐known data sets. The results observed show significant improvements in running time without compromising the accuracy of the models generated. Indeed, the combined techniques achieve several order of magnitudes speedup in some data sets. Moreover, memory requirements are reduced in nearly half of the data sets. Copyright © 2008 John Wiley & Sons, Ltd.
Nuno A. Fonseca, Vítor Santos Costa, Ricardo Rocha 0001, Rui Camacho, Fernando M. A. Silva
Softw. Pract. Exp.3
2008 Global Storing Mechanisms for Tabled Evaluation
Jorge Costa, Ricardo Rocha 0001
ICLP2
2008 On the Efficient Execution of ProbLog Programs
Angelika Kimmig, Vítor Santos Costa, Ricardo Rocha 0001, Bart Demoen, Luc De Raedt
ICLP3
2008 Thread-Based Competitive Or-Parallelism
Paulo Moura, Ricardo Rocha 0001, Sara C. Madeira
ICLP2
2008 An Improved Continuation Call-Based Implementation of Tabling
Pablo Chico de Guzmán, Manuel Carro, Manuel V. Hermenegildo, Cláudio Silva 0001, Ricardo Rocha 0001
PADL5
2008 Compile the Hypothesis Space: Do it Once, Use it Often
Nuno A. Fonseca, Rui Camacho, Ricardo Rocha 0001, Vítor Santos Costa
Fundam. Informaticae3
2007 On Applying Program Transformation to Implement Suspension-Based Tabling in Prolog
Ricardo Rocha 0001, Cláudio Silva 0001, Ricardo Lopes
ICLP1
2007 ILP : - Just Trie It
Rui Camacho, Nuno A. Fonseca, Ricardo Rocha 0001, Vítor Santos Costa
ILP3
2007 On Improving the Efficiency and Robustness of Table Storage Mechanisms for Tabled Evaluation
Ricardo Rocha 0001
PADL1
2006 Handling Incomplete and Complete Tables in Tabled Logic Programs
Ricardo Rocha 0001
ICLP1
2006 An External Module for Implementing Linear Tabling in Prolog
Cláudio Silva 0001, Ricardo Rocha 0001, Ricardo Lopes
ICLP2
2006 Efficient and Scalable Induction of Logic Programs Using a Deductive Database System
Michel Ferreira, Nuno A. Fonseca, Ricardo Rocha 0001, Tiago Soares
ILP3
2006 Generic Cut Actions for External Prolog Predicates
Tiago Soares, Ricardo Rocha 0001, Michel Ferreira
PADL2
2005 On Applying Tabling to Inductive Logic Programming
Ricardo Rocha 0001, Nuno A. Fonseca, Vítor Santos Costa
ECML1
2005 Coupling OPTYAP with a database system
Michel Ferreira, Ricardo Rocha 0001
IADIS AC2
2005 IMPACT: Innovative Models for Prolog with Advanced Control and Tabling
Ricardo Rocha 0001, Ricardo Lopes, Fernando M. A. Silva, Vítor Santos Costa
ICLP1
2005 Dynamic Mixed-Strategy Evaluation of Tabled Logic Programs
Ricardo Rocha 0001, Fernando M. A. Silva, Vítor Santos Costa
ICLP1
2005 On Applying Or-Parallelism and Tabling to Logic Programs
abstract
Logic programming languages, such as Prolog, provide a high-level, declarative approach to programming. Logic Programming offers great potential for implicit parallelism, thus allowing parallel systems to often reduce a program's execution time without programmer intervention. We believe that for complex applications that take several hours, if not days, to return an answer, even limited speedups from parallel execution can directly translate to very significant productivity gains. It has been argued that Prolog's evaluation strategy – SLD resolution – often limits the potential of the logic programming paradigm. The past years have therefore seen widening efforts at increasing Prolog's declarativeness and expressiveness. Tabling has proved to be a viable technique to efficiently overcome SLD's susceptibility to infinite loops and redundant subcomputations. Our research demonstrates that implicit or-parallelism is a natural fit for logic programs with tabling. To substantiate this belief, we have designed and implemented an or-parallel tabling engine – OPTYap – and we used a shared-memory parallel machine to evaluate its performance. To the best of our knowledge, OPTYap is the first implementation of a parallel tabling engine for logic programming systems. OPTYap builds on Yap's efficient sequential Prolog engine. Its execution model is based on the SLG-WAM for tabling, and on the environment copying for or-parallelism. Preliminary results indicate that the mechanisms proposed to parallelize search in the context of SLD resolution can indeed be effectively and naturally generalized to parallelize tabled computations, and that the resulting systems can achieve good performance on shared-memory parallel machines. More importantly, it emphasizes our belief that through applying or-parallelism and tabling to logic programs the range of applications for Logic Programming can be increased.
Ricardo Rocha 0001, Fernando M. A. Silva, Vítor Santos Costa
Theory Pract. Log. Program.1
2004 Concurrent Table Accesses in Parallel Tabled Logic Programs
Ricardo Rocha 0001, Fernando M. A. Silva, Vítor Santos Costa
Euro-Par1
2004 Speculative Computations in Or-Parallel Tabled Logic Programs
Ricardo Rocha 0001, Fernando M. A. Silva, Vítor Santos Costa
ICLP1
2004 The MyYapDB Deductive Database System
Michel Ferreira, Ricardo Rocha 0001
JELIA2
2003 Efficient Data Structures for Inductive Logic Programming
Nuno A. Fonseca, Ricardo Rocha 0001, Rui Camacho, Fernando M. A. Silva
ILP2
2001 On a Tabling Engine That Can Exploit Or-Parallelism
Ricardo Rocha 0001, Fernando M. A. Silva, Vítor Santos Costa
ICLP1
2000 Novel Models for Or-Parallel Logic Programs: A Performance Analysis
Vítor Santos Costa, Ricardo Rocha 0001, Fernando M. A. Silva
Euro-Par2