Network


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

Hotspot


Dive into the research topics where Ricardo J. Dias is active.

Publication


Featured researches published by Ricardo J. Dias.


workshop on i/o in parallel and distributed systems | 2009

Understanding the behavior of transactional memory applications

João Lourenço; Ricardo J. Dias; João Luís; Miguel Rebelo; Vasco Pessanha

Transactional memory is a new trend in concurrency control that was boosted by the advent of multi-core processors and the near to come many-core processors. It promises the performance of finer grain with the simplicity of coarse grain threading. However, there is a clear absence of software development tools oriented to the transactional memory programming model, which is confirmed by the very small number of related scientific works published until now. This paper describes ongoing work. We propose a very low overhead monitoring framework, developed specifically for monitoring TM computations, that collects the transactional events into a single log file, sorted in a global order. This framework is then used by a visualization tool to display different types of charts from two categories: statistical charts and thread-time space diagrams. These last diagrams are interactive, allowing to identify conflicting transactions. We use the visualization tool to analyse the behavior of two different, but similar, testing applications, illustrating how it can be used to better understand the behavior of these transactional memory applications.


haifa verification conference | 2012

Precise detection of atomicity violations

Ricardo J. Dias; Vasco Pessanha; João Lourenço

Concurrent programs that are free of unsynchronized accesses to shared data may still exhibit unpredictable concurrency errors, called atomicity violations, which include both high-level data races and stale-value errors. Atomicity violations occur when programmers make wrong assumptions about the atomicity scope of a code block, incorrectly splitting it in two or more atomic blocks and allowing them to be interleaved with other atomic blocks. In this paper we propose a novel static analysis algorithm that works on a dependency graph of program variables and detects both high-level data races and stale-value errors. The algorithm was implemented for a Java Bytecode analyzer and its effectiveness was evaluated with well known faulty programs. The results obtained show that our algorithm performs better than previous approaches, achieving higher precision for small and medium sized programs, making it a good basis for a practical tool.


workshop on i/o in parallel and distributed systems | 2010

Detection of Transactional Memory anomalies using static analysis

Bruno C. Teixeira; João Lourenço; Eitan Farchi; Ricardo J. Dias; Diogo Sousa

Transactional Memory allows programmers to reduce the number of synchronization errors introduced in concurrent programs, but does not ensures its complete elimination. This paper proposes a pattern matching based approach to the static detection of atomicity violation, based on a path-sensitive symbolic execution method to model four anomalies that may affect Transactional Memory programs. The proposed technique may be used to to bring to programmers attention pairs of transactions that the programmer has mis-specified, and should have been combined into a single transaction. The algorithm first traverses the AST tree, removing all the non-transactional blocks and generating a trace tree in the path sensitive manner for each thread. The trace tree is a Trie like data structure, where each path from root to a leaf is a list of transactions. For each pair of threads, erroneous patterns involving two consecutive transactions are then checked in the trace tree. Results allow to conclude that the proposed technique, although triggering a moderate number of false positives, can be successfully applied to Java programs, correctly identifying the vast majority of the relevant erroneous patterns.


international conference on parallel processing | 2012

Efficient support for in-place metadata in transactional memory

Ricardo J. Dias; Tiago M. Vale; João M. Louren

Implementations of Software Transactional Memory (STM) algorithms associate metadata with the memory locations accessed during a transactions lifetime. This metadata may be stored either in-place, by wrapping every memory cell in a container that includes the memory cell itself and the corresponding metadata; or out-place (also called external), by resorting to a mapping function that associates the memory cell address with an external table entry containing the corresponding metadata. The implementation techniques for these two approaches are very different and each STM framework is usually biased towards one of them, only allowing the efficient implementation of STM algorithms following that approach, hence inhibiting the fair comparison with STM algorithms falling into the other. In this paper we introduce a technique to implement in-place metadata that does not wrap memory cells, thus overcoming the bias by allowing STM algorithms to directly access the transactional metadata. The proposed technique is available as an extension to the DeuceSTM framework, and enables the efficient implementation of a wide range of STM algorithms and their fair (unbiased) comparison in a common STM infrastructure. We illustrate the benefits of our approach by analyzing its impact in two popular TM algorithms with two different transactional workloads, TL2 and multi-versioning, with bias to out-place and in-place respectively.


Concurrency and Computation: Practice and Experience | 2013

Efficient support for in-place metadata in Java software transactional memory

Ricardo J. Dias; Tiago M. Vale; João Lourenço

Software transactional memory (STM) algorithms associate metadata with the memory locations accessed during a transactions lifetime. This metadata may be stored in an external table by resorting to a mapping function that associates the address of a memory cell with the table entry containing the corresponding metadata (out‐place or external strategy). Alternatively, the metadata may be stored adjacent to the associated memory cell by wrapping the cell and metadata together (in‐place strategy). The implementation techniques to support these two approaches are very different and each STM framework is usually biased towards one of them, only allowing the efficient implementation of STM algorithms which suit one of the approaches and inhibiting a fair comparison with STM algorithms suiting the other. In this paper, we introduce a technique to implement in‐place metadata that does not wrap memory cells, thus overcoming the bias and allowing STM algorithms to directly access the transactional metadata. The proposed technique is available as an extension to Deuce and enables the efficient implementation of a wide range of STM algorithms and their fair (unbiased) comparison in a common STM framework. We illustrate the benefits of our approach by analyzing its impact in two popular transactional memory algorithms with several transactional workloads, TL2 and multiversioning, each befitting out‐place and in‐place, respectively. Copyright


ACM Transactions on Architecture and Code Optimization | 2015

Efficient Correction of Anomalies in Snapshot Isolation Transactions

Heiner Litz; Ricardo J. Dias; David R. Cheriton

Transactional memory systems providing snapshot isolation enable concurrent access to shared data without incurring aborts on read-write conflicts. Reducing aborts is extremely relevant as it leads to higher concurrency, greater performance, and better predictability. Unfortunately, snapshot isolation does not provide serializability as it allows certain anomalies that can lead to subtle consistency violations. While some mechanisms have been proposed to verify the correctness of a program utilizing snapshot isolation transactions, it remains difficult to repair incorrect applications. To reduce the programmer’s burden in this case, we present a technique based on dynamic code and graph dependency analysis that automatically corrects existing snapshot isolation anomalies in transactional memory programs. Our evaluation shows that corrected applications retain the performance benefits characteristic of snapshot isolation over conventional transactional memory systems.


Bioorganic & Medicinal Chemistry Letters | 2014

Synthesis and biological evaluation of α-hydroxyalkylphosphonates as new antimicrobial agents

Ana Maria Faísca Phillips; Maria Teresa Barros; Marta Pacheco; Ricardo J. Dias

A set of α-quaternary 3-chloro-1-hydroxyalkylphosphonates, analogues of fosfomycin and fosfonochlorin, some of which are new compounds, was synthesized. The compounds were screened for bioactivity against several clinical and standard microbial isolates. Some were found to have moderate activity. The activity was higher with phenyl protection of the phosphoryl ester groups and α-phenyl substitution. Compound 11 was as effective or more potent than fosfomycin or chloramphenicol against several Gram-negative bacteria as well as against some Gram-positive ones.


workshop on i/o in parallel and distributed systems | 2011

Practical verification of high-level dataraces in transactional memory programs

Vasco Pessanha; Ricardo J. Dias; João Lourenço; Eitan Farchi; Diogo Sousa

In this paper we present MoTh, a tool that uses static analysis to enable the automatic verification of concurrency anomalies in Transactional Memory Java programs. Currently MoTh detects high-level dataraces and stale-value errors, but it is extendable by plugging-in sensors, each sensor implementing an anomaly detecting algorithm. We validate and benchmark MoTh by applying it to a set of well known concurrent buggy programs and by close comparison of the results with other similar tools. The results achieved so far are very promising, yielding good accuracy while triggering only a very limited number of false warnings.


Veterinary Microbiology | 2016

Whole-genome mapping reveals a large chromosomal inversion on Iberian Brucella suis biovar 2 strains.

Ana C. Ferreira; Ricardo J. Dias; Maria Inácia Corrêa de Sá; Rogério Tenreiro

Optical mapping is a technology able to quickly generate high resolution ordered whole-genome restriction maps of bacteria, being a proven approach to search for diversity among bacterial isolates. In this work, optical whole-genome maps were used to compare closely-related Brucella suis biovar 2 strains. This biovar is the unique isolated in domestic pigs and wild boars in Portugal and Spain and most of the strains share specific molecular characteristics establishing an Iberian clonal lineage that can be differentiated from another lineage mainly isolated in several Central European countries. We performed the BamHI whole-genome optical maps of five B. suis biovar 2 field strains, isolated from wild boars in Portugal and Spain (three from the Iberian lineage and two from the Central European one) as well as of the reference strain B. suis biovar 2 ATCC 23445 (Central European lineage, Denmark). Each strain showed a distinct, highly individual configuration of 228-231 BamHI fragments. Nevertheless, a low divergence was globally observed in chromosome II (1.6%) relatively to chromosome I (2.4%). Optical mapping also disclosed genomic events associated with B. suis strains in chromosome I, namely one indel (3.5kb) and one large inversion (944kb). By using targeted-PCR in a set of 176 B. suis strains, including all biovars and haplotypes, the indel was found to be specific of the reference strain ATCC 23445 and the large inversion was shown to be an exclusive genomic marker of the Iberian clonal lineage of biovar 2.


international conference on software testing verification and validation | 2017

Verifying Concurrent Programs Using Contracts

Ricardo J. Dias; Carla Ferreira; Jan Fiedor; João Lourenço; Aleš Smrčka; Diogo Sousa; Tomáš Vojnar

The central notion of this paper is that of contracts for concurrency, allowing one to capture the expected atomicity of sequences of method or service calls in a concurrent program. The contracts may be either extracted automatically from the source code, or provided by developers of libraries or software modules to reflect their expected usage in a concurrent setting. We start by extending the so-far considered notion of contracts for concurrency in several ways, improving their expressiveness and enhancing their applicability in practice. Then, we propose two complementary analyses—a static and a dynamic one—to verify programs against the extended contracts. We have implemented both approaches and present promising experimental results from their application on various programs, including real-world ones where our approach unveiled previously unknown errors.

Collaboration


Dive into the Ricardo J. Dias's collaboration.

Top Co-Authors

Avatar

João Lourenço

Universidade Nova de Lisboa

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Tiago M. Vale

Universidade Nova de Lisboa

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Diogo Sousa

Universidade Nova de Lisboa

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Daniel Gonçalves

Instituto Superior Técnico

View shared research outputs
Top Co-Authors

Avatar

João Costa Seco

Universidade Nova de Lisboa

View shared research outputs
Top Co-Authors

Avatar

Nuno Correia

Universidade Nova de Lisboa

View shared research outputs
Top Co-Authors

Avatar

Rui M. Jesus

Instituto Superior de Engenharia de Lisboa

View shared research outputs
Researchain Logo
Decentralizing Knowledge