Marcelo K. Moori, H. Rocha, Janaína Schwarzrock, A. Lorenzon, A. C. S. Beck
{"title":"Aumentando a Eficiência na Execução de Algoritmos de Grafos em HPC","authors":"Marcelo K. Moori, H. Rocha, Janaína Schwarzrock, A. Lorenzon, A. C. S. Beck","doi":"10.5753/wscad.2021.18518","DOIUrl":null,"url":null,"abstract":"A crescente necessidade de extrair informações de dados massivos - estruturados como grafos - tem impulsionado o desenvolvimento de algoritmos paralelos cada vez mais robustos para este processamento. No entanto, o comportamento voltado à comunicação e a estrutura altamente irregular dos grafos usados cotidianamente são obstáculos para alcançar os mesmos níveis de desempenho e eficiência como os observados em outras aplicações paralelas. Neste artigo, nós mostramos que a escalabilidade de diferentes aplicações de grafos variam de acordo com o algoritmo usado e a sua base de dados e que, em muitos casos, utilizar todos recursos disponíveis (i.e. todos os núcleos do processador para a execução) não é a melhor opção em termos de eficiência. Com base nisso, nós propomos o MultGraph, um framework que permite o processamento simultâneo de vários algoritmos/grafos, distribuindo-os de maneira não uniforme entre os núcleos, ao invés de executá-los serialmente (i.e. um após o outro) com o máximo paralelismo disponível. MultGraph funciona em dois passos: (i) caracterizando os algoritmos/grafos pelos seus níveis de eficiência; (ii) definindo as alocações (agrupamentos de algoritmos e entradas a serem executados concorrentemente), número de threads para cada um deles, e a ordem de execução destes grupos. Resultados experimentais em três processadores multicore (Intel e AMD) mostram que o MultGraph melhora em até 9, 21x e 4, 52x em média o tempo de execução das aplicações em relação à execução padrão de aplicações em sistemas HPC.","PeriodicalId":410043,"journal":{"name":"Anais do XXII Simpósio em Sistemas Computacionais de Alto Desempenho (WSCAD 2021)","volume":"55 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2021-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Anais do XXII Simpósio em Sistemas Computacionais de Alto Desempenho (WSCAD 2021)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.5753/wscad.2021.18518","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1
Abstract
A crescente necessidade de extrair informações de dados massivos - estruturados como grafos - tem impulsionado o desenvolvimento de algoritmos paralelos cada vez mais robustos para este processamento. No entanto, o comportamento voltado à comunicação e a estrutura altamente irregular dos grafos usados cotidianamente são obstáculos para alcançar os mesmos níveis de desempenho e eficiência como os observados em outras aplicações paralelas. Neste artigo, nós mostramos que a escalabilidade de diferentes aplicações de grafos variam de acordo com o algoritmo usado e a sua base de dados e que, em muitos casos, utilizar todos recursos disponíveis (i.e. todos os núcleos do processador para a execução) não é a melhor opção em termos de eficiência. Com base nisso, nós propomos o MultGraph, um framework que permite o processamento simultâneo de vários algoritmos/grafos, distribuindo-os de maneira não uniforme entre os núcleos, ao invés de executá-los serialmente (i.e. um após o outro) com o máximo paralelismo disponível. MultGraph funciona em dois passos: (i) caracterizando os algoritmos/grafos pelos seus níveis de eficiência; (ii) definindo as alocações (agrupamentos de algoritmos e entradas a serem executados concorrentemente), número de threads para cada um deles, e a ordem de execução destes grupos. Resultados experimentais em três processadores multicore (Intel e AMD) mostram que o MultGraph melhora em até 9, 21x e 4, 52x em média o tempo de execução das aplicações em relação à execução padrão de aplicações em sistemas HPC.