(untitled) (Anais do Salão Inovação, Ensino, Pesquisa e Extensão, 2020)
Para satisfazer o aumento da demanda de performance em aplicações modernas, o número de núcleos em um único processador tem aumentado cada vez mais. Contudo, a dissipação de potência e temperatura cresce em uma taxa elevada, acelerando o processo de envelhecimento dos novos processadores. Considerando que um significante número de aplicações paralelas é desbalanceado, em muitos casos a performance sofre uma estagnação depois que um certo número de threads começa a executar. Nesses casos, a elevação da temperatura no processador acontece de forma recorrente, o que reduz drasticamente a sua vida útil. Sabendo disso, nossa proposta baseia-se em uma abordagem transparente para reduzir o envelhecimento a partir do ajuste automático (em tempo de execução) do número de threads usadas em aplicações paralelas implementadas com OpenMP. Nossa ferramenta, é inteiramente transparente para o usuário final, ao passo que até mesmo os binários já compilados podem ser otimizados. Durante a execução de doze benchmarks em duas plataformas multicores, nós mostramos que nossa abordagem pode aumentar a vida útil dos processadores em até 89% em relação à execuções do OpemMP com ajuste dinâmico de threads padrão. Nossa abordagem trabalha com qualquer aplicação OpenMP que explora paralelismo de laços, mas não influencia na execução das aplicações implementados com outras diretivas. Para obter a temperatura atual da CPU diretamente dos contadores de hardware em tempo de execução, utilizamos a aplicação lm-sensors do Linux. Nós compilamos as aplicações com GCC/g++ 8.1, usando a flag de otimização -O3, e OpenMP 4.0. Comparamos nossa abordagem com os seguintes cenários: execução padrão de aplicações OpenMP, onde a aplicação executa com o número máximo de threads disponíveis no sistema e OMP Dynamic, um recurso interno do OpenMP que ajusta dinamicamente o número de threads de cada região paralela, com o objetivo de aproveitar ao máximo o sistema recursos, como memória e processador. Considerando as execuções no sistema AMD de 16 núcleos, o fator de envelhecimento do processador de nossa ferramenta proposta é até 83% e 89% menor que no STD e OMP Dynamic, respectivamente. No geral, o envelhecimento do processador é 35% e 38% menor que o STD e OMP Dynamic, respectivamente. O mesmo comportamento foi observado no sistema Intel de 24 núcleos, mas com taxas distintas. Ao comparar nossa ferramenta com a execução padrão do OpenMP padrão, a taxa de envelhecimento do processador é 29% e 19% menor nos sistemas de 16 e 24 núcleos, respectivamente. Como exemplo, um dado o processador AMD Ryzen, que teria uma estimativa vida útil de 10 anos pode ser estendida para quase 13 anos alternando apenas para nossa ferramenta.