|
Abstract:
|
A crescente adoção de algoritmos de ML em diferentes áreas aumenta significativamente a demanda por capacidade computacional. Para lidar com grandes volumes de dados, a HPC utiliza arquiteturas heterogêneas que combinam CPUs e GPUs. Entretanto, abordagens tradicionais como OpenMP+MPI realizam alocação estática de recursos, forçando o programador a definir manualmente a proporção de carga entre CPU e GPU antes da execução. Essa rigidez resulta em gargalos e tempo ocioso dos aceleradores, especialmente em cenários distribuídos onde o volume de dados por nodo varia com o número de processos. Este trabalho avalia o uso do runtime StarPU como alternativa ao modelo estático, aplicado ao algoritmo K-Means em ambiente de nuvem. O StarPU adota um paradigma de programação baseado em tarefas: o programador declara o que deve ser computado e quais dados cada operação acessa, delegando ao runtime a decisão de onde e quando cada tarefa será executada. O escalonador DMDA estima o custo computacional e o custo de transferência de dados para cada worker, alocando cada tarefa ao processador que minimiza o tempo de conclusão, sem intervenção manual do programador. Para validar a abordagem, foram implementadas e comparadas três versões do K-Means: uma sequencial como referência de tempo, uma paralela baseada em OpenMP+MPI com alocação estática e uma paralela baseada em StarPU+MPI com agendamento dinâmico. Os experimentos avaliam o desempenho e a escalabilidade das duas abordagens em configurações de um a quatro nodos, cobrindo modos de execução exclusivamente em CPU, exclusivamente em GPU e híbrido. |