Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Péricles Rafael Oliveira Alves

dblp:119/2231 · also Péricles Alves · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Compilers and program optimization › parallelization
automatic parallelization
0.312017
DawnCC: Automatic Annotation for Data Parallelism and Offloading · ACM Trans. Archit. Code Optim. 2017
Parallel and multicore computing
parallel programming models
0.312017
DawnCC: Automatic Annotation for Data Parallelism and Offloading · ACM Trans. Archit. Code Optim. 2017
Compilers and program optimization
loop optimization
0.212015
Runtime pointer disambiguation · OOPSLA 2015
Compilers and program optimization › compiler analysis
pointer disambiguation
0.212015
Runtime pointer disambiguation · OOPSLA 2015
Software maintenance and evolution › refactoring
aspect-oriented refactoring
0.112012
ConcernReCS: Finding code smells in software aspectization · ICSE 2012
Software maintenance and evolution › code smell
code smell detection
0.112012
ConcernReCS: Finding code smells in software aspectization · ICSE 2012
Software maintenance and evolution
refactoring
0.112012
ConcernReCS: Finding code smells in software aspectization · ICSE 2012
Program analysis › static analysis
pointer analysis
0.112015
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
YearPublicationVenuePosition
2017 DawnCC: Automatic Annotation for Data Parallelism and Offloading
abstract
Directive-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 arguments
abstract
Pointer 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
CC2
2016 Automatic Insertion of Copy Annotation in Data-Parallel Programs
abstract
Directive-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-PAD3
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 disambiguation
abstract
To 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
OOPSLA1
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 specialization
abstract
JavaScript 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
CGO2
2012 ConcernReCS: Finding code smells in software aspectization
abstract
Refactoring 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
ICSE1