Predição de Desempenho com Graph Neural Networks - do Rosário, Vanderson; Zanella, André Felipe; da Silva, Anderson; Borin, Edson (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD), 2020)
Melhorar o desempenho de uma aplicação em computadores modernos envolve escolhas em um largo espaço de busca, pois tais arquiteturas possuem variadas características que impactam signiﬁcativamente o desempenho das aplicações. Além disso, diferentes aplicações tendem a utilizar essas características de forma diferente, tornando a função que mapeia o desempenho de uma aplicação em um hardware bastante complexa. O que torna a tarefa de gerar códigos que maximizem tal função, por parte de compiladores ou especialistas, uma tarefa difícil. Uma possibilidade é avaliar automaticamente várias possibilidades de compilação, técnica conhecida como autotuning. Porém, o custo de executar a aplicação para medir seu desempenho para cada possibilidade tem um elevado custo. Por isso, é comum a utilização de preditores de desempenho para acelerar essa exploração. Nesse trabalho, implementamos e avaliamos o uso de redes neurais de grafos, mais especiﬁcamente redes convolucionais de grafos, para a tarefa de predizer o desempenho de uma aplicação. Nós treinamos uma rede com 30 mil diferentes planos de compilação aplicados em 300 diferentes aplicações e mostramos que redes baseadas em grafo podem aprender sobre as características do grafo de ﬂuxo de controle, obtendo desempenho melhor do que técnicas que não consideram tal grafo durante a predição de desempenho.