Cookies Policy
We use cookies to improve our site and your experience. By continuing to browse our site you accept our cookie policy. Find out More
Close
  • Menu
About

About

I'm an Associate Professor at the Department of Computer Science, Faculty of Sciences, University of Porto and a researcher at the CRACS & INESC TEC research unit.

I received my PhD degree in Computer Science from the University of Porto in 2001 and my main research topics are the Design and Implementation of Logic Programming Systems, Tabling in Logic Programming and Parallel and Distributed Computing. Another areas of interest are Inductive Logic Programming, Probabilistic Logic Programming and Deductive Databases. I'm also one of the main developers of the Yap Prolog system with particular focus on the execution models that support tabling and parallel evaluation.

I've published more than 100 refereed papers in international journals, conferences and workshops, served more than 30 events as PC chair or PC member, served the ALP Newsletter as area co-editor for the Implementations and Systems track, supervised several PhD/MSc students and had leading role in two national projects: projects STAMPA and LEAP. Currently, I also serve the ALP Board and the INForum Board as executive committee member.

Interest
Topics
Details

Details

  • Name

    Ricardo Rocha
  • Cluster

    Computer Science
  • Role

    Assistant Centre Coordinator
  • Since

    01st January 2009
001
Publications

2019

Multi-dimensional lock-free arrays for multithreaded mode-directed tabling in Prolog

Authors
Areias, M; Rocha, R;

Publication
Concurrency and Computation: Practice and Experience

Abstract

2018

Table space designs for implicit and explicit concurrent tabled evaluation

Authors
Areias, M; Rocha, R;

Publication
THEORY AND PRACTICE OF LOGIC PROGRAMMING

Abstract
One of the main advantages of Prolog is its potential for the implicit exploitation of parallelism and, as a high-level language, Prolog is also often used as a means to explicitly control concurrent tasks. Tabling is a powerful implementation technique that overcomes some limitations of traditional Prolog systems in dealing with recursion and redundant subcomputations. 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 tradeoffs between concurrency and memory usage. We also motivate for the advantages of using fixed-size and lock freedata structures, elaborate on the key role that the engine's memory allocator plays 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.

2018

Improving Candidate Quality of Probabilistic Logic Models

Authors
Real, JC; Dries, A; Dutra, I; Rocha, R;

Publication
Technical Communications of the 34th International Conference on Logic Programming, ICLP 2018, July 14-17, 2018, Oxford, United Kingdom

Abstract

2018

Technical Communications of the 33rd International Conference on Logic Programming, ICLP 2017, August 28 to September 1, 2017, Melbourne, Australia

Authors
Rocha, R; Son, TC; Mears, C; Saeedloei, N;

Publication
ICLP (Technical Communications)

Abstract

2018

On Extending a Fixed Size, Persistent and Lock-Free Hash Map Design to Store Sorted Keys

Authors
Areias, M; Rocha, R;

Publication
2018 IEEE INT CONF ON PARALLEL & DISTRIBUTED PROCESSING WITH APPLICATIONS, UBIQUITOUS COMPUTING & COMMUNICATIONS, BIG DATA & CLOUD COMPUTING, SOCIAL COMPUTING & NETWORKING, SUSTAINABLE COMPUTING & COMMUNICATIONS

Abstract
Searching is a crucial time-consuming part of many programs, and using a good search method instead of a bad one often leads to a substantial increase in performance. 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 concurrent hash map design that fully supports the concurrent search, insert and remove operations on hash tries designed to store sorted keys. To the best of our knowledge, our design is the first concurrent hash map design that puts together the following characteristics: (i) use fixed size data structures; (ii) use persistent memory references; (iii) be lock-free; and (iv) store sorted keys. Experimental results show that our design is quite competitive when compared against other state-of-the-art designs implemented in Java.

Supervised
thesis

2018

Aplicação Industrial de Técnicas de Análise de Desempenho de Processos

Author
Ana Rita Oliveira e Silva

Institution
UP-FEUP

2015

Linear logic and coordination for parallel programing

Author
Flávio Manuel Fernandes Cruz

Institution
UP-FCUP

2015

Towards intelligent clinical decision support systems

Author
Joana Sílvia Santos Côrte-Real

Institution
UP-FCUP

2015

Multithreaded Tabling for Logic Programming

Author
Miguel João Gonçalves Areias

Institution
UP-FCUP

2015

Logic Programming Environments with Advanced Parallelism

Author
João Pedro Barreiros Nunes dos Santos

Institution
UP-FCUP