Titulo Estágio
Low-energy reliable programming
Áreas de especialidade
Engenharia de Software
Local do Estágio
Departamento de Engenharia Informática
Enquadramento
A otimização de programas tem como finalidade, tipicamente, melhorar o desempenho ou a memória necessária para executar o código. No entanto, tem havido um crescimento notável de diversas áreas aplicacionais nas quais otimizar o consumo de energia e a fiabilidade dos programas é tão ou mais importante do que o desempenho só por si (por exemplo em aplicações móveis). Assim, esta dissertação tem como objetivo aplicar e melhorar técnicas que otimizem o consumo energético bem como a fiabilidade do software.
O crescimento notável de áreas aplicacionais como a as aplicações móveis ou a internet das coisas deu origem a mercados onde o baixo consumo de energia por parte do software e dos sistemas é fundamental, sendo que atributos como desempenho e confiabilidade são frequentemente críticos. Essa evolução requer ferramentas de programação e técnicas que reduzam o custo do desenvolvimento de software e diminuam o consumo de energia para computação e comunicação.
Pretende-se fornecer, às organizações que desenvolvem aplicações, os meios para desenvolver software de forma eficiente e gerir critérios que muitas vezes se contradizem, e que surgem no contexto de cada domínio de aplicação específico. Assim, muda-se o habitual foco na otimização do desempenho do código, passando a focar-se também em reduzir o consumo energético e em reduzir a taxa de erros de processamento e comunicação.
A dissertação consistirá em aplicar, avaliar e melhorar um conjunto de técnicas para computação confiável de baixo consumo energético, e integrálas num ambiente de desenvolvimento que possa ser usado por programadores (por exemplo, baseado em LLVM ou GCC). Durante a compilação do software, o ambiente de desenvolvimento permitirá que os programadores tomem decisões relativamente às prioridades (desempenho, energia, fiabilidade, e memória) por forma a escolher entre diversas versões funcionalmente equivalentes do mesmo programa.
Objetivo
Esta dissertação tem dois objetivos principais:
- Estudar e avaliar os métodos de otimização existentes num compilador moderno com o objetivo de melhorar a fiabilidade e o consumo energético dos programas.
- Aplicar, avaliar e melhorar estratégias de otimização com vista a reduzir o consumo energético e a taxa de erros do software.
O primeiro objetivo será abordado através da análise dos métodos de otimização já existentes nos compiladores modernos (possivelmente focando no LLVM). Esta análise será realizada medindo o consumo energético e a fiabilidade dos programas através de duas ferramentas já existentes. O consumo energético será medido usando Running Average Power Limit (RAPL) ou tecnologia equivalente. A fiabilidade será medida usando o ucXception (uma ferramenta de injeção de falhas desenvolvida na Universidade de Coimbra).
O segundo objetivo foca na otimização do consumo energético e da fiabilidade do software, melhorando a fase de geração de código. Uma vez encontradas, através de medição, as melhores estratégias de otimização, pretende-se melhorar as ferramentas de programação por forma a que essas estratégias fiquem facilmente disponíveis e que os programadores possam fazer uso delas em qualquer projeto de software.
Estes dois objetivos resultam assim na dissertação focada em "low-energy reliable programming".
Plano de Trabalhos - Semestre 1
- Estudo do estado da arte. (Meses 1 e 2)
A primeira fase consistirá em aprofundar conhecimentos nos tópicos relacionados com a dissertação, com particular atenção a otimização de código, fiabilidade de software face a erros de hardware e de comunicação, consumo energético de software e otimização de desempenho. O trabalho deve resultar na escrita do capítulo da dissertação sobre o estado da arte.
- Escolha de ferramentas e preparação do ambiente de desenvolvimento. (Meses 2 e 3)
Esta tarefa consiste em escolher as ferramentas a usar para desenvolver software otimizado nas vertentes de consumo energético e fiabilidade. Como base, o plano inicial será utilizar o compilador LLVM. Juntamente, será necessário escolher um conjunto abrangente de benchmarks e fragmentos de código, a partir de projetos open source, sendo que esse será o código a ser otimizado de acordo com os objetivos propostos.
- Avaliação das metodologias de otimização existentes. (Mês 4)
Esta tarefa tem como objetivo avaliar as metodologias de otimização existentes nos compiladores modernos. Esta análise será realizada medindo o consumo energético usando Running Average Power Limit (RAPL), e medindo a fiabilidade usando o ucXception (uma ferramenta de injeção de falhas da Universidade de Coimbra).
- Escrita do relatório intermédio. (Mês 5)
As tarefas realizadas no decorrer do primeiro semestre devem ser documentadas na forma de um relatório intermédio, seguindo-se a sua apresentação pública e discussão. Será importante apresentar nesse relatório os resultados da avaliação das metodologias de teste existentes identificadas no estado da arte.
Plano de Trabalhos - Semestre 2
- Melhoria das estratégias de otimização de software existentes. (Meses 6 e 7)
Com base nos resultados das metodologias de otimização avaliadas anteriormente, será possível identificar quais as as estratégias de otimização que melhor cumprem os objetivos do estágio. O objetivo desta tarefa é agrupar essas mesmas estratégias de forma a que possam facilmente ser utilizadas pelos programadores. Se as melhorias forem promissoras, será recomendada a escrita de um artigo científico.
- Avaliação dos resultados da otimização após melhoramentos. (Meses 8 e 9)
Esta tarefa tem como finalidade construir um ambiente de desenvolvimento integrado, baseado em LLVM, no qual seja possível compilar um programa, estimar o consumo energético (através de RAPL) e estimar a fiabilidade (usando o ucXception). Pretende-se comparar os resultados obtidos por este ambiente de desenvolvimento com os resultados obtidos compilando os programas da forma habitual, usando as opções standard dos compiladores.
- Escrita da dissertação de mestrado. (Mês 10)
Deve ser concluída a escrita da dissertação de mestrado e preparada a respetiva apresentação pública. A dissertação deve documentar todo o trabalho realizado, os resultados e as conclusões obtidas.
Condições
O trabalho irá ser realizado no Departamento de Engenharia Informática da Universidade de Coimbra e o/a estudante terá acesso a um local de trabalho nos laboratórios do DEI bem como ao equipamento informático necessário.
Observações
Esta dissertação poderá ter atribuída uma bolsa de investigação.
Orientador
Raul Barbosa
rbarbosa@dei.uc.pt 📩