Demo Data from EDBT 2026 / reviewers in the wild / expert
Péricles Rafael Oliveira Alves
dblp:119/2231 · also Péricles Alves
· DBLP profile ↗
9ranked-venue papers
3as first author
0since 2021 · last 2017
0000-0001-6557-4011ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 6 · 2 first-authorSystems, architecture and hardware · 2Databases, data management, data science and information retrieval · 1 · 1 first-authorTheory of computation · 1 · 1 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
3 papers |
Compilers and program optimization · 59% Software maintenance and evolution · 35% Program analysis · 5% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Parallel and multicore computing · 100% |
Topics — the 8 heaviest of 9, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Compilers and program optimization › parallelization
automatic parallelization |
0.3 | 1 | 2017 | DawnCC: Automatic Annotation for Data Parallelism and Offloading · ACM Trans. Archit. Code Optim. 2017 |
Parallel and multicore computing
parallel programming models |
0.3 | 1 | 2017 | DawnCC: Automatic Annotation for Data Parallelism and Offloading · ACM Trans. Archit. Code Optim. 2017 |
Compilers and program optimization
loop optimization |
0.2 | 1 | 2015 | Runtime pointer disambiguation · OOPSLA 2015 |
Compilers and program optimization › compiler analysis
pointer disambiguation |
0.2 | 1 | 2015 | Runtime pointer disambiguation · OOPSLA 2015 |
Software maintenance and evolution › refactoring
aspect-oriented refactoring |
0.1 | 1 | 2012 | ConcernReCS: Finding code smells in software aspectization · ICSE 2012 |
Software maintenance and evolution › code smell
code smell detection |
0.1 | 1 | 2012 | ConcernReCS: Finding code smells in software aspectization · ICSE 2012 |
Software maintenance and evolution
refactoring |
0.1 | 1 | 2012 | ConcernReCS: Finding code smells in software aspectization · ICSE 2012 |
Program analysis › static analysis
pointer analysis |
0.1 | 1 | 2015 | Runtime pointer disambiguation · OOPSLA 2015 |
Methods — techniques the papers use, named apart from their topics
static analysis · 0.7symbolic range analysis · 0.6versioning · 0.2runtime checks · 0.2concern mapping · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2017 | DawnCC: Automatic Annotation for Data Parallelism and OffloadingabstractDirective-based programming models, such as OpenACC and OpenMP, allow developers to convert a sequential program into a parallel one with minimum human intervention. However, inserting pragmas into production code is a difficult and error-prone task, often requiring familiarity with the target program. This difficulty restricts the ability of developers to annotate code that they have not written themselves. This article provides a suite of compiler-related methods to mitigate this problem. Such techniques rely on symbolic range analysis, a well-known static technique, to achieve two purposes: populate source code with data transfer primitives and to disambiguate pointers that could hinder automatic parallelization due to aliasing. We have materialized our ideas into a tool, DawnCC, which can be used stand-alone or through an online interface. To demonstrate its effectiveness, we show how DawnCC can annotate the programs available in PolyBench without any intervention from users. Such annotations lead to speedups of over 100× in an Nvidia architecture and over 50× in an ARM architecture. Gleison Souza Diniz Mendonca, Breno Campos Ferreira Guimarães, Péricles Rafael Oliveira Alves, Márcio Machado Pereira, Guido Araujo, Fernando Magno Quintão Pereira |
ACM Trans. Archit. Code Optim. | 3 |
| 2016 | Restrictification of function argumentsabstractPointer aliasing still hinders compiler optimizations, in spite of years of research on pointer disambiguation. Because the automatic disambiguation of pointers is a difficult endeavor, several programming languages offer programmers mechanisms to distinguish memory references, such as the “restrict” keyword in C. However, the use of such mechanisms is prone to human mistakes. In this paper we present a suite of automatic techniques that mitigate this problem. We have designed, implemented and tested three different ways to disambiguate pointers passed as arguments of functions. Our techniques combine static analyses to infer symbolic bounds of memory regions and code versioning. We generate a clone for each function whose arguments we can disambiguate and optimize it assuming the absence of aliasing among formal parameters. At runtime, we use the results of the symbolic interval tests to decide which version of a function we should call: the original one or the “restricted” clone, whenever we can prove that no aliasing can occur at runtime. An implementation of our restrictification methods in LLVM shows that we can vectorize up to 63% more operations than what could be accomplished using the -O3 optimization level of said compiler. When applying the optimization on OpenCV benchmarks, we have observed speedups as great as 40%. Victor Hugo Sperle Campos, Péricles Rafael Oliveira Alves, Henrique Nazaré, Fernando Magno Quintão Pereira |
CC | 2 |
| 2016 | Automatic Insertion of Copy Annotation in Data-Parallel ProgramsabstractDirective-based programming models, such as OpenACC and OpenMP arise today as promising techniques to support the development of parallel applications. These systems allow developers to convert a sequential program into a parallel one with minimum human intervention. However, inserting pragmas into production code is a difficult and error-prone task, often requiring familiarity with the target program. This difficulty restricts the ability of developers to annotate code that they have not written themselves. This paper provides one fundamental component in the solution of this problem. We introduce a static program analysis that infers the bounds of memory regions referenced in source code. Such bounds allow us to automatically insert data-transfer primitives, which are needed when the parallelized code is meant to be executed in an accelerator device, such as a GPU. To validate our ideas, we have applied them onto Polybench, using two different architectures: Nvidia and Qualcomm-based. We have successfully analyzed 98% of all the memory accesses in Polybench. This result has enabled us to insert automatic annotations into those benchmarks leading to speedups of over 100x. Gleison Souza Diniz Mendonca, Breno Campos Ferreira Guimarães, Péricles Rafael Oliveira Alves, Fernando Magno Quintão Pereira, Márcio Machado Pereira, Guido Araujo |
SBAC-PAD | 3 |
| 2016 | Avoiding code pitfalls in Aspect-Oriented Programming
Adriano Lages dos Santos, Péricles Rafael Oliveira Alves, Eduardo Figueiredo 0001, Fabiano Cutigi Ferrari |
Sci. Comput. Program. | 2 |
| 2015 | Runtime pointer disambiguationabstractTo optimize code effectively, compilers must deal with memory dependencies. However, the state-of-the-art heuristics available in the literature to track memory dependencies are inherently imprecise and computationally expensive. Consequently, the most advanced code transformations that compilers have today are ineffective when applied on real-world programs. The goal of this paper is to solve this conundrum through dynamic disambiguation of pointers. We provide different ways to determine at runtime when two memory locations can overlap. We then produce two versions of a code region: one that is aliasing-free - hence, easy to optimize - and another that is not. Our checks let us safely branch to the optimizable region. We have applied these ideas on Polly-LLVM, a loop optimizer built on top of the LLVM compilation infrastructure. Our experiments indicate that our method is precise, effective and useful: we can disambiguate every pair of pointer in the loop intensive Polybench benchmark suite. The result of this precision is code quality: the binaries we generate are 10% faster than those that Polly-LLVM produces without our optimization, at the -O3 optimization level of LLVM. Péricles Rafael Oliveira Alves, Fabian Gruber, Johannes Doerfert, Alexandros Lamprineas, Tobias Grosser, Fabrice Rastello, Fernando Magno Quintão Pereira |
OOPSLA | 1 |
| 2015 | A case for a fast trip count predictor
Péricles Rafael Oliveira Alves, Raphael Ernani Rodrigues, Rafael Martins de Souza, Fernando Magno Quintão Pereira |
Inf. Process. Lett. | 1 |
| 2014 | Just-in-time value specialization
Igor Rafael de Assis Costa, Henrique Nazaré, Péricles Rafael Oliveira Alves, Fernando Magno Quintão Pereira |
Comput. Lang. Syst. Struct. | 3 |
| 2013 | Just-in-time value specializationabstractJavaScript emerges today as one of the most important programming languages for the development of client-side web applications. Therefore, it is essential that browsers be able to execute JavaScript programs efficiently. However, the dynamic nature of this programming language makes it very challenging to achieve this much needed efficiency. In this paper we propose parameter-based value specialization as a way to improve the quality of the code produced by JIT engines. We have empirically observed that almost 60% of the JavaScript functions found in the world's 100 most popular websites are called only once, or are called with the same parameters. Capitalizing on this observation, we adapt a number of classic compiler optimizations to specialize code based on the runtime values of function's actual parameters. We have implemented the techniques proposed in this paper in IonMonkey, an industrial quality JavaScript JIT compiler developed in the Mozilla Foundation. Our experiments, run across three popular JavaScript benchmarks, SunSpider, V8 and Kraken, show that, in spite of its highly speculative nature, our optimization pays for itself. As an example, we have been able to speedup SunSpider by 5.38%, and to reduce the size of its native code by 16.72%. Igor Rafael de Assis Costa, Péricles Rafael Oliveira Alves, Henrique Nazaré, Fernando Magno Quintão Pereira |
CGO | 2 |
| 2012 | ConcernReCS: Finding code smells in software aspectizationabstractRefactoring object-oriented (OO) code to aspects is an error-prone task. To support this task, this paper presents ConcernReCS, an Eclipse plug-in to help developers to avoid recurring mistakes during software aspectization. Based on a map of concerns, ConcernReCS automatically finds and reports error-prone scenarios in OO source code; i.e., before the concerns have been refactored to aspects. Péricles Rafael Oliveira Alves, Diogo Santana, Eduardo Figueiredo 0001 |
ICSE | 1 |