Estimação de Consumo Energético de Aplicações Executadas em Máquinas Heterogêneas
ODS vinculados
- 9 - Indústria, Inovação e Infraestrutura
- 12 - Consumo e Produção Responsáveis
- 13 - Ação Contra a Mudança Global do Clima
Impacto na Amazônia
- Biodiversidade e Bioeconomia – Meio Ambiente
- Mudanças Climáticas – Mudanças Climáticas
Resumo
As plataformas paralelas e distribuídas disponíveis atualmente estão se tornando cada vez mais \textit{heterogêneas}. Essas arquiteturas heterogêneas, compostas por vários tipos de unidades de computação, têm tido um impacto crescente no desempenho da computação de alto desempenho. Os aceleradores de hardware, como as unidades de processamento gráfico de propósito geral (com abreviatura em inglês, GPUs), costumam ser usados em conjunto com várias unidades centrais de computação (CPUs) na mesma placa-mãe, compartilhando a mesma memória comum. O objetivo em um ambiente heterogêneo é a utilização de diferentes recursos para permitir a realização de uma determinada tarefa no menor tempo possível. Novos paradigmas tal como computação em grade \cite{goldchlegerintegrade} ou computação em nuvem foram introduzidos para usar os recursos de hardware distribuídos geograficamente como um sistema virtual unificado para trabalhar como uma única instalação de computação \cite{grid5}. Por exemplo, o número de plataformas heterogêneas equipadas com aceleradores aumentou significativamente nos últimos anos na lista dos 500 supercomputadores mais rápidos do mundo~\cite{strohmaier2015top500}. No futuro, espera-se que os nós dessas plataformas sejam ainda mais diversificados do que hoje: eles serão compostos por nós de computação rápida, nós de computação híbrida que misturam unidades de uso geral com aceleradores, nós de E/S, nós especializados em análise de dados etc. Hoje em dia os cientistas podem, com muita facilidade, acessar diferentes recursos de computação (aplicações, armazenamento, CPUs, GPUs, sensores remotos, supercomputadores, entre outros) interligado a outros sistemas, distribuindo a tarefa em toda a Internet \cite{Goldman04}. A tendência dos sistemas distribuídos é que os recursos são heterogêneos. Estes não têm necessariamente que ser dedicados e eles devem pertencer a um sistema com alguns componentes essenciais de segurança, administração \cite{Camargo10}, heterogeneidade \cite{Che:2011}, escalonamento de tarefas \cite{GoldmanQ03, FG:ASTEC09}, tolerância a falhas \cite{ALFREDO:DBLP}, balanceamento de cargas \cite{Goldman:07}, etc. O Green Computing é uma área de pesquisa que se concentra em tornar a computação mais sustentável e amigável ao meio ambiente. Pesquisas que abordam soluções para reduzir o consumo de energia em todas as fases do ciclo de vida de um sistema de computação, desde a fabricação até o descarte. No Brasil, a indústria de TI é responsável por cerca de 2\% das emissões de gases de efeito estufa, de acordo com dados do Ministério do Meio Ambiente. No entanto, esse número pode ser maior se considerarmos a cadeia de produção e consumo de eletrônicos em todo o país. Para reduzir esse impacto ambiental é importante sejam adotadas práticas sustentáveis, como o uso de fontes de energia renovável em data centers e a produção de dispositivos eletrônicos mais eficientes em termos energéticos. Algumas das soluções mais comuns para reduzir o consumo de energia em infraestruturas de Tecnologia de Informação (TI) e também a redução de emissão de gases efeito estufa incluem virtualização, gerenciamento energético de hardware, uso de fontes de energia renovável e gerenciamento das aplicações. Nessa última solução se encaixa a presente proposta. Para abordar o gerenciamento energético de uma aplicação é necessário conhecer e estimar o recursos computacionais que serão usados por uma aplicação, e mais ainda quando podem ser projetadas soluções usando diferentes tipos de recursos no contexto de máquinas heterogêneas Nesse sentido serão abordadas práticas de técnicas de estimação de consumo energético de aplicações executadas em máquinas heterogêneas com CPUs e GPUs. Serão arquitetadas estimações para aplicações que executam em redes de sensores distribuídos como para aplicações de alto desempenho.