Fernando Magno Quintão Pereira


 Professor  Adjunto


Bolsa produtividade CNPq nível   2


Doutor, University of California Los Angeles, EUA, 2008

  fernando@dcc.ufmg.br   www
 ICEx/DCC, sala 7315, +55 (31) 3409-5587
Áreas de pesquisa

Informações resumidas do Currículo Lattes


Currículo Lattes atualizado em 10/08/2017

Formação acadêmica

Doutorado em Ciência da Computação na University of California Los Angeles em 2008
Mestrado em Ciências da Computação na Universidade Federal de Minas Gerais em 2004
Graduado em Ciência da Computação na Universidade Federal de Minas Gerais em 2001

Projetos de pesquisa em andamento

2015 a AtualTeste Automático de Código Embarcado
Esta linha de pesquisa existe como decorrência de uma cooperação científica que o candidato vem criando com uma empresa do ramo de rastreamento de veículos, a Maxtrack. Esta empresa foi criada por empreendedores mineiros, e hoje é líder em seu mercado no Brasil, tendo já projetado, implementado e distribuído rastreadores para veículos automotores e trens de carga. O objetivo dessa cooperação científica é projetar, implementar e instalar serviços de teste de software que possam ser usados para ativar, de forma automática, potenciais falhas de segurança em código feito para sistemas embarcados.
Integrantes: Fernando Magno Quintão Pereira (coordenador), Francisco Demontie, Marcus Rodrigues.
2015 a AtualParalelização Automática de Código para Dispositivos Móveis
Este projeto trata-se de uma cooperação entre a Universidade Federal de Minas Gerais e a empresa LG Electronics, e existe no contexto da Lei de Informática e Inovação. O objetivo deste projeto é desenvolver técnicas que permitam a geração de código paralelo para dispositivos móveis como smartphones. O resultado esperado deste projeto é um compilador capaz de assinalar as diferentes partes de um programa a uma CPU multicore, ou a GPU que existe em um smartphone.
Integrantes: Fernando Magno Quintão Pereira (coordenador), Douglas do Couto, Victor Sperle Campos, Pericles Rafael Oliveira Alves, Kezia Andrade, Gleison Souza.
2013 a Atuale-CoSoc: Energy-Efficient Instrumentation to Secure Systems-on-a-Chip Devices
O objetivo deste projeto é desenvolver técnicas que protejam programas escritos em linguagens inseguras, tais como C. As técnicas desenvolvidas precisam ser adequadas para dispositivos embarcados. Assim, uma das principais metas do projeto é a criação de mecanismos de proteção de software que sejam econômicos do ponto de vista energético
Integrantes: Fernando Magno Quintão Pereira (coordenador), Raphael Ernani Rodrigues, Henrique Nazaré Santos, Leonardo Barbosa, Bruno Rodrigues Silva, Izabela Kareninna, Fernando Teixeira.
2012 a AtualRastreamento de Fluxo de Informação em Estruturas de Dados
O rastreamento de fluxo de informaçao é um dos grandes temas de pesquisa abordados pela comunidade de linguagens de programação. Dado uma "informação", o objetivo desse tipo de análise é identificar em que parte de um programa alvo tal conhecimento é produzido, como ele se propaga entre as variáveis desse programa, e que usuários podem ter acesso a ele.
Integrantes: Fernando Magno Quintão Pereira (coordenador), Andrei Alves Rimsa, Gabriel Silva Quadros, Rafael Martins de Sousa, Bruno Rodrigues Silva, NAZARÉ SANTOS, HENRIQUE.
2010 a AtualOtimização de Código para Placas Gráficas
O objetivo deste grupo de pesquisa é permitir, via o desenvolvimento de técnicas de geração e otimização de código, que desenvolvedores de programas melhor usufruam do alto poder de processamento de arquiteturas computacionais paralelas. Tais técnicas possibilitam, portanto, que estes desenvolvedores possam se concentrar em problemas algorítmicos, trabalhando com linguagens de programação de alto nível, enquanto o compilador lhes garante a utilização eficiente do hardware. A pesquisa em compilação para arquiteturas de alto desempenho, no DCC-UFMG, dá-se em duas vertentes. Em primeiro lugar, desenvolvem-se estratégias de "paralelização automática de código". O objetivo deste tipo de pesquisa é transformar programas que foram concebidos para hardware monoprocessado em código equivalente que seja mais eficiente por ser capaz de utilizar diversos processadores simultaneamente. Em segundo lugar, este grupo de pesquisa desenvolve técnicas de otimização de programas que se aplicam diretamente à melhoria de aplicações paralelas. Neste caso, destacam-se, por exemplo, as transformações de código realizadas automaticamente pelo compilador a fim de remover barreiras de sincronização redundantes, coordenar acesso à memória compartilhada e aumentar o número de processadores em execução simultânea.
Integrantes: Fernando Magno Quintão Pereira (coordenador), Bruno Rocha Coutinho, Diogo Nunes Sampaio, Wagner Meira Jr, Fernando Carvalho Coelho.

Projetos de desenvolvimento em andamento

2010 a AtualDivergence Analysis in the Ocelot compiler
This project consists in the implementation of a divergence analysis to the Ocelot compiler. We have been able to submit more than 10,000 lines of code to this compiler, which is publicly available and widely used by the industry. See the compiler's webpage at http://code.google.com/p/gpuocelot/
Integrantes: Fernando Magno Quintão Pereira (coordenador), Diogo Nunes Sampaio, Sylvain Collange, Elie Gideon.
2010 a AtualCode Specialization in the Mozilla Firefox Browser
This project consists in the implementation of extensions to the Mozilla Firefox JavaScript compiler. These extensions allow the JavaScript compiler to produce better code given the values that are manipulated at runtime. Part of the code is currently available in the IonMonkey compiler that is part of the Mozilla Firefox browser.
Integrantes: Fernando Magno Quintão Pereira (coordenador), Igor Rafael Assis Costa, Pericles Rafael Oliveira Alves.
Veja todos os projetos no Currículo Lattes

Últimas publicações

Artigos em periódicos


Trabalhos completos em congressos

Pointer disambiguation via strict inequalities
2017. 2017 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).
Function Call Re-Vectorization
2017. the 22nd ACM SIGPLAN Symposium.
The Computer for the 21st Century: Security & Privacy Challenges After 25 Years
2017. The 26th International Conference on Computer Communications and Networks (ICCCN 2017).
Restrictification of function arguments
2016. the 25th International Conference.
Sparse representation of implicit flows with applications to side-channel detection
2016. the 25th International Conference.
Inference of peak density of indirect branches to detect ROP attacks
2016. the 2016 International Symposium.
Compilação Parcial de Programas Escritos em C
2016. Simpósio Brasileiro de Linguagens de Programação.
Symbolic range analysis of pointers
2016. the 2016 International Symposium.
Definição Semântica de Blocos Everywhere para Programação SIMD
2016. Simpósio Brasileiro de Linguagens de Programação.
An Algebraic Framework for Parallelizing Recurrence in Functional Programming
2016. Brazilian Symposium on Programming Languages.
Paralelização Automática de código com diretivas OpenACC
2016. Simpósio Brasileiro de Linguagens de Programação.
JetsonLeap: A Framework to Measure Energy-Aware Code Optimizations in Embedded and Heterogeneous Systems
2016. Brazilian Symposium on Programming Languages.
Automatic Insertion of Copy Annotation in Data-Parallel Programs.
2016. International Symposium on Computer Architecture and High-Performance Computing.
SMOV: Array Bound-Check and access in a single instruction
2016. 2016 13th IEEE Annual Consumer Communications & Networking Conference (CCNC).
Etino: Colocação Automática de Computação em Hardware Heterogêneo
2015. Simpósio Brasileiro de Linguagens de Programação.
Function Call Fusion
2015. International Symposium on Computer Architecture and High Performance Computing.
Restritificação
2015. Simpósio Brasileiro de Linguagens de Programação.
Automatic Inference of Loop Complexity through Polynomial Interpolation
2015. Simpósio Brasileiro de Linguagens de Programação.
SIoT
2015. the 14th International Conference.
The Dinamica Virtual Machine for Geosciences
2015. Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais.
SMOV: Array Bound-Check and Access in a Single Instruction
2015. Consumer Communications & Networking Conference (CCNC).
Uma Técnica de Análise Estática para Detecção de Canais Laterais Baseados em Tempo
2015. XV Simpósio Brasileiro de Segurança da Informação e Sistemas Computacionais.
Runtime Pointer Disambiguation
2015. OOPSLA.
Siot: Defendendo a Internet das Coisas contra Exploits
2014. Simpósio Brasileiro de Redes de Computadores.
Parameterized Construction of Program Representations for Sparse Dataflow Analyses
2014. International Symposium on Compiler Construction.
Compiler support for selective page migration in NUMA architectures
2014. the 23rd international conference.
Validation of memory accesses through symbolic analyses
2014. the 2014 ACM International Conference.
Prevenção de Ataques em Sistemas Distribuídos via Análise de Intervalos
2014. Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais.
Prevenção Automática de Ataques de Não-Terminação
2013. Simpósio Brasileiro de Linguagens de Programação.
A fast and low-overhead technique to secure programs against integer overflows
2013. International Symposium on Code Generation and Optimization.
Detecção Automática de Vulnerabilidades em Código Protegido por Canários
2013. Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais.
Resolução de Bugs de Desempenho via Clonagem de Funções
2013. Simpósio Brasileiro de Linguagens de Programação.
Verificação Estática de Acessos a Arranjos em C
2013. Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais.
Just-in-time value specialization
2013. International Symposium on Code Generation and Optimization.
Uma Representação Intermediária para a Detecção de Vazamentos Implícitos de Informação
2013. Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais.
Dynamic Detection of Address Leaks
2013. Simpósio Brasileiro de Segurança da Informação e de Sistemas Computacionais (SBSeg).
Spill Code Placement for SIMD Machines
2012. Brazilian Symposium on Programming Languages.
Speed and Precision in Range Analysis
2012. Brazilian Symposium on Programming Languages.
Optimizing a Geomodeling Domain Specific Language
2012. Brazilian Symposium on Programming Languages.
Parameter Based Constant Propagation
2012. Brazilian Symposium on Programming Languages.
Data and Instruction Uniformity in Minimal Multi-threading
2012. IEEE 24th International Symposium on Computer Architecture and High Performance Computing.
Divergence Analysis with Affine Constraints
2012. EEE 24th International Symposium on Computer Architecture and High Performance Computing.
Register Allocation by Puzzle Solving
2008. ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation (PLDI).
A Framework for End-to-End Verification and Evaluation of Register Allocators.
2007. The Fourteenth International Static Analysis Symposium (SAS 2007).
Register Allocation After Classical SSA Elimination is NP-Complete.
2006. Foundations of Software Science and Computation Structures.
Register Allocation via Coloring of Chordal Graphs.
2005. The Third Asian Symposium on Programming Languages and Systems..

Resumos expandidos em congressos

RipRop: A Dynamic Detector of ROP Attacks
2015. CBSoft Tools.
Etino: Colocação Automática de Computação em Hardware Heterogêneo
2015. CBSoft Tools.
Restrictifier: a tool to disambiguate pointers at function call sites
2015. CBSoft Tools.
FlowTracker - Detecção de Código Não Isócrono via Análise Estática de Fluxo
2015. CBSoft Tools.
Asymptus - A Tool for Automatic Inference of Loop Complexity
2015. CBSoft Tools.
Non-Termination Attacks Based on Integer Overflows
2013. Workshop de Teses de Disertações do CBSoft.
Otimizações de Código Sensíveis ao Contexto de Chamada
2013. Workshop de Teses de Disertações do CBSoft.
Flow Tracking: Uma ferramenta para detecção de vazamento de informações sigilosas
2013. CBSoft Tools.
ArAnot - An Array Annotator for C and C++
2013. CBSoft Tools.
A Static Analysis Tool to Detect Address Leaks
2012. CBSoft Seção de Demonstração de Ferramentas.
A Domain Specific Language plus Integrated Development Environment for Geomodeling
2012. CBSoft Seção de Demonstração de Ferramentas.

Resumos em congressos

Paralelización del D-Index para Búsquedas en Espacios Métricos
2012. Workshop de Investigadores en Ciencias de la Computación.

Veja todas as publicações no Currículo Lattes

Orientações em andamento

Mestrado

CAIO ARAÚJO NEPONOCENO DE LIMA. Acelaração de Programas JavaScript via Anotações de Código. Início: 2017. Universidade Federal de Minas Gerais (Orientador principal)
Marcos Yukio Siraichi. Alocação de Qbits para Computação Quântica. Início: 2017. Universidade Federal de Minas Gerais (Orientador principal)
Pedro Henrique Ramos Costa. Mineração de Tarefas em Programas Irregulares. Início: 2016. Universidade Federal de Minas Gerais (Orientador principal)
Marcus Rodrigues de Araújo. Compilação de Código Parcialmente Disponível. Início: 2016. Universidade Federal de Minas Gerais (Orientador principal)
Marcelo Pereira Novaes. Unassisted Mapping of Computations on big.LITTLE Architectures via Reinforcement Learning. Início: 2016. Universidade Federal de Minas Gerais (Orientador principal)
Gabriel Poesia Reis e Silva. Static Scheduling of Computations on Heterogeneous Hardware. Início: 2015. Universidade Federal de Minas Gerais (Orientador principal)

Doutorado

Leandro Terra Cunha Melo. Invisible Typing Oriented Programming. Início: 2016. Universidade Federal de Minas Gerais (Orientador principal)
Andrei Rimsa Alves. Profiling Oriented Optimizations for Heterogeneous Systems. Início: 2015. Universidade Federal de Minas Gerais (Orientador principal)
Mateus Felipe Tymburibá Ferreira. Peephole Detection of ROP-Based Attacks. Início: 2015. Universidade Federal de Minas Gerais (Orientador principal)

Veja todas as orientações no Currículo Lattes