Miguel Areias 0001

dblp:62/7440 · also Miguel João Gonçalves Areias · DBLP profile ↗
← Back
16ranked-venue papers
11as first author
5since 2021 · last 2025
0000-0003-1589-3174ORCID · verified

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

Software engineering, systems software and programming languages · 7 · 6 first-author · 1 since 2021Systems, architecture and hardware · 6 · 3 first-author · 3 since 2021
YearPublicationVenuePosition
2025 On Bridging Prolog and Python to Enhance an Inductive Logic Programming System
Vítor Santos Costa, Miguel Areias 0001
PADL2
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.2
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
ISPDC1
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.1
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.2
2020 A Compression-Based Design for Higher Throughput in a Lock-Free Hash Map
Pedro Moreno, Miguel Areias 0001, Ricardo Rocha 0001
Euro-Par2
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-PAD2
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.1
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.1
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-PAD1
2017 On scaling dynamic programming problems with a multithreaded tabling Prolog system
Miguel Areias 0001, Ricardo Rocha 0001
J. Syst. Softw.1
2014 On the Correctness and Efficiency of Lock-Free Expandable Tries for Tabled Logic Programs
Miguel Areias 0001, Ricardo Rocha 0001
PADL1
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
ICPADS1
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.1
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.1
2010 An Efficient Implementation of Linear Tabling Based on Dynamic Reordering of Alternatives
Miguel Areias 0001, Ricardo Rocha 0001
PADL1