Decidindo entre GPU e CPU para Processar Grafos com Base em Métricas de Alto Nível - Moori, Marcelo K.; Rocha, Hiago Mayk G. de A.; Schwarzrock, Janaina; Lorenzon, Arthur F.; Beck, Antonio Carlos S. (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD); 2022: Anais do XXIII Simpósio em Sistemas Computacionais de Alto DesempenhoDO - 10.5753/wscad.2022.226395, 2022)
Apesar dos avanços nas GPUs modernas ter acelerado a execução de aplicações que processam grandes quantidades de dados, acelerar o processamento de grafos nesses sistemas não é uma tarefa trivial: aplicações de grafos são caracterizadas por alto volume de acesso irregular à memória e que varia com a estrutura dos grafos, fazendo com que muitas vezes elas não alcancem seus picos de performance quando executadas em GPUs. Nesses casos, a execução em CPU é mais adequada. Felizmente, as estruturas dos grafos podem ser identificadas por meio de métricas de alto nível (e.g., diâmetro e coeficiente médio de clusterização), e elas podem auxiliar o projetista na tomada de decisão de onde executar a aplicação, se em GPU ou em CPU. Neste trabalho, nós propomos uma metodologia que usa essas características de alto nível em uma Regressão Linear para auxiliar na tomada de decisão de onde processar os grafos, em GPU ou CPU. Assim, sempre que um novo grafo precisar ser processado, a decisão de onde processá-lo será tomada com base nessas métricas, evitando qualquer execução adicional dos algoritmos de grafos. Nosso resultados experimentais, considerando 1 GPU e 2 CPUs, mostram que as métricas mais relevantes dos grafos variam conforme os algoritmo e as máquinas onde esses grafos serão executados. Nossa proposta apresentou uma acurácia média de 85% quando aplicado uma Regressão Linear com as características mais relevantes.