Research

I am currently working in a number of projects as part of the Computer Systems Laboratory staff. During my carrer, I have been conducting research projects in collaboration with several other researchers from places like UFSC, USP, Unesp, UFPE, AMD Research at Austin, and Rutgers University. I also have a history of university/industry collaboration projects with companies like Microsoft, Serasa Experian, IBM, Samsung, Motorola, Petrobras, and Inmetrics. Below I describe some of the main topics I have been researching and where I have open positions for new graduate and undergraduate students.

  • High-Performance Computing

    I am interested in several aspects of High-Performance Computing. In particular, we have been working on a new program model and runtime called OpenMP Cluster (OMPC), a task-parallel model that extends OpenMP for cluster programming. In short, it is capable of distributing annotaded regions of code across the nodes of a distributed system. We are successfully applying this new model to applications in Geophysics and Chemestry, allowing users to deployment such applications to a cluster without having to tackle with MPI based data distribuition and load balancing.
  • Computer Systems Infrastructure for Machine Learning

    Our research group is investigating several aspects of deploying ML models to large and distributed systems. Model parallelization and training distribuition is very important in order to handle ML models with billions of parameters. We are experimenting with frameworks like Google JAX, Ray, and Alpa to be able to distribute training across nodes of a cluster. In particular, we are interested in working with specific models that may be useful to tackle problems in Geophysics, like Full waveform inversion (FWI), where the amount of data is huge and brings several interesting challenges.
  • Edge Computing and Internet of Things (IoT)

    Advances in information technology, sensors, wireless communication and embedded processors are enabling the deployment of low cost and low power sensors and actuators that will connect our world in a way never seen before. Edge Computing and IoT are two areas of interest. Currently, I am supervising a PhD student who is proposing an architecture model for managing microservices in the Edge.
  • Energy Efficient Computing

    I am interested in several aspects of this problem that cover from server nodes running in datacenters to mobile devices. The main topics in this research are: server characterization, workload characterization, statiscal models for predicting power consumption, power/performance management techniques, adaptative systems, scheduling and resource management, and green datacenters. On the mobile world, I have been looking into power prediction models from smartphones and compiler analysis/optimizations for energy bugs in Android applications.
  • Electronic System Level Design:

    The search for new methodologies and tools suitable to the new Electronic System Level approach to hardware design. I have been working on new technologies related to SystemC and the ArchC architecture description language in order to aid the design on high levels of abstraction. Most recent topics are: using dynamic compilation techniques to speed-up simulation, multicore virtual platform simulation, mixing different simulation techniques to improve performance and debugging/verification capabilities.
  • System's Security:

    We are a small research group from the University of Campinas with topics that range through areas such as network security, compilers, computer architecture, assembly languages, software memory and code flow corruption. We work together with the Computer System's Laboratory (LSC) and researchers from Brown and Columbia University (USA). Control Flow Integrity, Memory protection through hardware enhancements, and System Design Exploitation are amongs the topics we are interested in. Read more ...
  • Code Optimization, Dynamic Compilation:

    Creating new optimizations, or adapting some existent technique, in order to generate efficient code and several aspects of dynamic code generation and its application in virtual machines. I have recently worked on topics like: region formation techniques, evaluating dynamic compilation overhead, and bynary translation based techniques to handle security issues, like program shepperding.

Interested in developing an undergrad, master, or PhD project on one of these topics? Send me an email with a short CV.