Controle de Granularidade com threads em Programas MPI Dinâmicos - Lima, João Vicente F.; Maillard, Nicolas (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD), 2008)
O controle de granularidade é um fator importante no desempenho de programas paralelos. Problemas estáticos adaptam sua granularidade pela decomposição e atribuição de dados a cada tarefa, mas em irregulares não é possível prever a carga de trabalho antes da execução. Os irregulares que utilizam decomposição recursiva, como ordenação, necessitam de dinamismo com suporte a criação de tarefas sob demanda. Alguns ambientes de programação, como Cilk e KAAPI, oferecem dinamismo e trabalham com granularidade através do conceito abstrato de tarefa porém possuem limitações que dificultam seu uso em PAD. O MPI, padrão de fato em PAD, oferece dinamismo de processos e uso de threads mas atribui à implementação especificar o comportamento na criação de uma tarefa. Este trabalho propõe investigar as vantagens no controle de granularidade com threads em programas MPI dinâmicos, através da substituição da criação de processos por tarefas onde um mecanismo (libSpawn) decide entre lançar processo(s) ou thread(s). Os resultados obtidos com o programa de ordenação Cilksort, que segue o modelo Divisão-e-Conquista, demonstram ganhos de até 85% em criação de tarefas e comunicação.