Alcides Fonseca

Alcides Fonseca
University of Lisbon | UL · Department of Informatics

PhD

About

33
Publications
5,536
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
141
Citations

Publications

Publications (33)
Preprint
Full-text available
Type systems provide software developers immediate feedback about a subset of correctness properties of their programs. IDE integrations often take advantage of type systems to present errors, suggest completions and even improve navigation. On the other hand, understanding the time and energy consumption of the execution of a program requires manu...
Conference Paper
Full-text available
Automatic Program Repair (APR) techniques have been used to automatically fix bugs, helping developers save time in this process. These techniques first identify where the error is located in the code, then iteratively apply patches to those locations, verifying if each patch succeeded in fixing the existing bug. This work focus on APR techniques t...
Chapter
Full-text available
Search-Based Software Engineering problems frequently have semantic constraints that can be used to deterministically restrict what type of programs can be generated, improving the performance of Genetic Programming. Strongly-Typed and Grammar-Guided Genetic Programming are two examples of using domain-knowledge to improve performance of Genetic Pr...
Preprint
Full-text available
Bugs that are detected earlier during the development lifecycle are easier and cheaper to fix, whereas bugs that are found during production are difficult and expensive to address, and may have dire consequences. Type systems are particularly effective at identifying and preventing bugs early in the development lifecycle by causing invalid programs...
Article
Full-text available
Model checking has advanced over the last decades to become an effective formal technique for verifying distributed and concurrent systems. As computers grew in memory and processing capacity, it became possible to exhaustively verify systems with billions of states, making it practical to model and verify real-world protocols and algorithms. Howev...
Conference Paper
Automated test generation helps programmers to test their software with minimal intervention. Automated test generation tools produce a set of program inputs that maximize the possible execution paths, presented as a test coverage metric. Proposed approaches fall within three main approaches. Search-based methods work on any program by randomly sea...
Chapter
Full-text available
The performance of Evolutionary Algorithms is frequently hindered by arbitrarily large search spaces. In order to overcome this challenge, domain-specific knowledge is often used to restrict the representation or evaluation of candidate solutions to the problem at hand. Due to the diversity of problems and the unpredictable performance impact, the...
Article
According to recent estimates, computing and communications could account for 20% of energy usage globally by 2025.1 This trend shows no sign of slowing. The annual growth in power consumption of Internet-connected devices is 20%. Data centers alone are now accounting for more than 3% of global emissions. Even if you are not worried about this tren...
Chapter
Full-text available
Lately, Machine Learning has taken a crucial role in the society in different vertical sectors. For complex problems with high-dimensionality, Deep Learning has become an efficient solution for learning in the context of supervisioned learning. Deep Learning [1] consists in using Artificial Neural Networks (ANN or NN) with several hidden layers, ty...
Article
Hardware manufacturing advances along with the popularisation of energy saving techniques are predicted to cause an increase in the soft error rate, which in turn will transfer part of the responsibility for tolerating these errors to the software layer. Since the programming language and its supporting implementation have a determinant impact in t...
Conference Paper
Full-text available
Data processing is one of the most energy-consuming tasks of computing systems. For both environmental and economical reasons, it is necessary to optimize software programs to be more energy efficient. There has been a lazy versus strict evaluation debate in the community, with a special focus on functional programming, with regards to program spee...
Conference Paper
Full-text available
How a program is written has implications in the energy consumption of the running system, with economical and environmental consequences. In this context, understanding the energy consumption of operations on data-structures is crucial when optimizing software to execute under power constricted environments. Existing studies have not focused on th...
Article
Full-text available
The No Free Lunch Theorem establishes that for any algorithm, any elevated performance over one class of problems is offset by performance over another class. Empirically, this is true for Granularity Control algorithms, particularly in Fork-Join style concurrent programs. Cut-off Algorithms make the decision to either continue forking work (parall...
Article
Full-text available
Improving the energy-efficiency of computing systems while ensuring reliability is a challenge in all domains, ranging from low-power embedded devices to large-scale servers. In this context, a key issue is that many techniques aiming to reduce power consumption negatively affect reliability, while fault tolerance techniques require computation or...
Article
Full-text available
Recently, there is a concern about reducing the energy consumption of data centers and clusters for economical and environmental reasons. Furthermore, energy consumption on mobile devices is also important to improve battery life. In this work we address the performance-energy trade-off on shared-memory multicore devices in parallel programs. In pa...
Conference Paper
Full-text available
Parallel programs have the potential of executing several times faster than sequential programs. However, in order to achieve its potential, several aspects of the execution have to be parameterized, such as the number of threads, task granularity, etc. This work studies the task granularity of regular and irregular parallel programs on symmetrical...
Conference Paper
Full-text available
Optimizing parallel programs is a complex task because the interference among many different parameters. Work-stealing runtimes, used to dynamically balance load among different processor cores, are no exception. This work explores the automatic configuration of the following runtime parameters: dynamic granularity control algorithms, granularity c...
Article
Full-text available
Big Data concerns with large-volume complex growing data. Given the fast development of data storage and network, organizations are collecting large ever-growing datasets that can have useful information. In order to extract information from these datasets within useful time, it is important to use distributed and parallel algorithms.One common usa...
Article
Full-text available
There are billions of lines of sequential code inside nowadays’ software which do not benefit from the parallelism available in modern multicore architectures. Automatically parallelizing sequential code, to promote an efficient use of the available parallelism, has been a research goal for some time now. This work proposes a new approach for achie...
Conference Paper
Full-text available
Parallel programs have the potential of executing several times faster than sequential programs. However, in order to achieve its potential, several aspects of the execution have to be parameterized, such as the number of threads, task granularity, stack sizes, etc. In this work we focus on studying the granularity of regular and irregular parallel...
Article
Full-text available
One way to write fast programs is to explore the potential parallelism and take advantage of the high number of cores available in microprocessors. This can be achieved by manually specifying which code executes on which thread, by using compiler parallelization hints (such as OpenMP or Cilk), or by using a parallel programming language (such as X1...
Article
Full-text available
Programming for concurrent platforms, such as multicore cpus, is very time consuming and requires fine tuning of the final program in order to optimize the program parallel layout to the hardware architecture. Parallelization of programs is done by identification parts of code (tasks) that can be executed concurrently and execution in different thr...
Conference Paper
Full-text available
The advent of multi-core systems set off a race to get concurrent programming to the masses. One of the challenging aspects of this type of system is how to deal with exceptional situations, since it is very difficult to assert the precise state of a concurrent program when an exception arises. In this paper we propose an exception-handling model f...
Conference Paper
Full-text available
We propose a model for event-oriented programming under shared memory based on access permissions with explicit parallelism. In order to obtain safe parallelism, programmers need to specify the variable permissions of functions. Blocking operations are non existent, and callback-based APIs are used instead, which can be called in parallel for diffe...
Conference Paper
Full-text available
There are billions of lines of sequential code inside nowadays software which do not benefit from the parallelism available in modern multicore architectures. Transforming legacy sequential code into a parallel version of the same programs is a complex and cumbersome task. Trying to perform such transformation automatically and without the interven...
Article
The aim of ÆMINIUM is to study the implications of having a concurrent-by-default programming language. This includes language design, runtime system, performance and software engineering considerations. We conduct our study through the design of the concurrent-by-default ÆMINIUM programming language. ÆMINIUM leverages the permission flow of object...
Article
Writing concurrent applications is extremely challenging, not only in terms of producing bug-free and maintainable software, but also for enabling developer productivity. In this article we present the Æminium concurrent-by-default programming language. Using Æminium programmers express data dependencies rather than control flow between instruction...
Conference Paper
Full-text available
As a consequence of the immense computational power available in GPUs, the usage of these platforms for running data-intensive general purpose programs has been increasing. Since memory and processor architectures of CPUs and GPUs are substantially different, programs designed for each platform are also very different and often resort to a very dis...
Conference Paper
Full-text available
Multi-core processors are present in everyone's daily life. Consequently, concurrent programming has re-emerged as a pressing concern for everyone interested in exploring all the potential computational power in these ma-chines. But, the emergence of new concurrency models and programming languages also brings new challenges in terms of how one can...

Network

Cited By

Projects

Projects (2)
Project
RAP (EXPL/CCI-COM/1306/2021) aims to provide programmers with immediate feedback on the resource consumption (time, memory, energy) of their programs in the editor. Our approach differs from the state of the art in considering real-world units, and modeling resource consumption in a probabilistic manner.
Project
The goals of the CAMELOT project are to improve the efficiency, accuracy, or quality of the machine learning platform and associated stack using efficient cloud resources.