Publicação

Parallel implementations of the cholesky decomposition on CPUs and GPUs

Ver documento

Detalhes bibliográficos
Resumo:À medida que Unidades Centrais de Processamento (CPUs) e Gráfico (GPUs) evoluem progressivamente, diferentes abordagens e modelos para implementação de algoritmos com alta carga de dados devem ser estudados e comparados. Este trabalho compara diversos modelos de algoritmos e APIs de paralelização (como OpenMP, OpenCL e CUDA) para as plataformas CPU e GPU. Nós usamos a decomposição de Cholesky, um algoritmo aritmético de alto nível usado em diversos problemas de álgebra linear, como referência, devido a sua fácil paralelização, bem como apresentar alta dependência de dados entre os elementos. Diversos experimentos foram realizados, utilizando os diferentes modelos e APIs a fim de encontrar as técnicas que fornecem a melhor performance em cada plataforma. Tambémcomparamos essas implementações com soluções profissionais (como LAPACK e cuSOLVER), examinando as discrepâncias de implementação e performance. Os experimentos demonstram que a CPU tende a ter melhor performance que a GPU para esse tipo de algoritmo, devido à sua natureza intensiva em memória e o overhead intrínseco da transferência de dados, e que tentativas de micro-otimizações de código não oferecem nenhuma melhora de performance.
Autores principais:Ruschel, João Paulo Tarasconi
Assunto:Processamento paralelo HPC Parallel programming OpenMP OpenCL CUDA CPU GPU Cholesky
Ano:2017
País:Brasil
Tipo de documento:trabalho de fim de curso
Tipo de acesso:acesso aberto
Instituição associada:IBICT
Idioma:inglês
Origem:Oasisbr
Descrição
Resumo:À medida que Unidades Centrais de Processamento (CPUs) e Gráfico (GPUs) evoluem progressivamente, diferentes abordagens e modelos para implementação de algoritmos com alta carga de dados devem ser estudados e comparados. Este trabalho compara diversos modelos de algoritmos e APIs de paralelização (como OpenMP, OpenCL e CUDA) para as plataformas CPU e GPU. Nós usamos a decomposição de Cholesky, um algoritmo aritmético de alto nível usado em diversos problemas de álgebra linear, como referência, devido a sua fácil paralelização, bem como apresentar alta dependência de dados entre os elementos. Diversos experimentos foram realizados, utilizando os diferentes modelos e APIs a fim de encontrar as técnicas que fornecem a melhor performance em cada plataforma. Tambémcomparamos essas implementações com soluções profissionais (como LAPACK e cuSOLVER), examinando as discrepâncias de implementação e performance. Os experimentos demonstram que a CPU tende a ter melhor performance que a GPU para esse tipo de algoritmo, devido à sua natureza intensiva em memória e o overhead intrínseco da transferência de dados, e que tentativas de micro-otimizações de código não oferecem nenhuma melhora de performance.

Atividades financiadas

Não foram encontrados projetos financiados.