Share record |
![]() ![]() |
Please use this identifier to cite or link to this item:
https://tede2.pucrs.br/tede2/handle/tede/11668
Document type: | Dissertação |
Title: | High-level multi-GPU support for multi-core stream parallelism |
Other Titles: | Paralelismo de stream em multi-GPU para multi-cores |
Author: | Fim, Gabriel Rustick |
Advisor: | Griebler, Dalvan Jair |
Abstract (native): | Nowadays, computer architectures often rely on graphics processing units (GPUs) to allow massive parallelism exploitation at a lower cost. This parallelism can be particularly advantageous in stream processing, a domain of applications continuously processing a data flow of often unknown size. Nonetheless, the programmer must employ parallel programming to exploit underlying GPU hardware capabilities efficiently. This can be challenging since it involves refactoring algorithms, using parallelism techniques, and knowing about the environment’s hardware, especially when writing portable code, since GPU vendors and generations offer different capabilities. This challenge becomes even more complex in multi-GPU environments; the programmer must choose which strategy to partition their data, which strategy to schedule their tasks onto the GPUs, how to handle communication needs between tasks, and how to perform GPU asynchronous operations. To address these challenges, researchers have focused on investigating efficient programming techniques for GPUs and developing abstractions that simplify the programming process. One such abstraction is SPar, a domain-specific language (DSL) that enables the expression of stream parallelism without sacrificing performance. Recently, an extension was added to SPar that allows parallel code generation for GPUs in streaming applications. To achieve this, SPar performs source-to-source code transformations and generates GPU code using an intermediate library named GSParLib. Nonetheless, SPar supports code generation for a single GPU environment only. In this work, we investigate how to allow multi-GPU code generation for stream processing and investigate state-of-the-art optimizations and techniques for multi-GPU programming targeting multi-core systems. Our contributions are a set of data stream scheduling algorithms for multi-GPUs, which were integrated in the code generation of SPar, transparently supporting multi-GPU usage in multi-core systems. The experimental results demonstrated that it is possible to simplify the exploitation of multi-GPU for stream applications without sacrificing performance by utilizing scheduling policies specifically targeting multi-GPU through code annotations like the ones provided by SPar, achieving similar results to manual implementations targeting multi-GPU while having close to half the number of lines of code. |
Abstract (english): | Atualmente, as arquiteturas de computadores dependem frequentemente de unidades de processamento gráfico (GPUs) para permitir a exploração massiva do paralelismo a um custo reduzido. Este paralelismo pode ser particularmente vantajoso no processamento de streams, um domínio de aplicações que processam continuamente um fluxo de dados de tamanho muitas vezes desconhecido. No entanto, o programador deve empregar programação paralela para explorar os recursos de hardware da GPU subjacente de forma eficiente. Isso pode ser desafiador, pois envolve refatorar algoritmos, usar técnicas de paralelismo e conhecer o hardware do ambiente, especialmente ao escrever código portável, uma vez que os fornecedores e gerações de GPU oferecem capacidades diferentes. Este desafio torna-se ainda mais complexo em ambientes multi-GPU; o programador deve escolher qual estratégia será utilizada para particionar seus dados, qual estratégia de escalonamento de tarefas será utilizada nas GPUs, como lidar com as necessidades de comunicação entre tarefas e como executar operações assíncronas na GPU. Para enfrentar esses desafios, pesquisadores se concentraram na investigação de técnicas de programação eficientes para GPUs e no desenvolvimento de abstrações que simplificam o processo de programação. Uma dessas abstrações é a SPar, uma linguagem de domínio específico (DSL) que permite a expressão do paralelismo de fluxo sem sacrificar o desempenho. Recentemente, foi adicionada uma extensão a SPar que permite a geração paralela de código para GPUs em aplicações de streaming. Para conseguir isso, a SPar realiza transformações de código fonte e gera código GPU usando uma biblioteca intermediária chamada GSParLib. No entanto, SPar oferece suporte à geração de código somente para ambientes com uma única GPU. Neste trabalho, investigamos como permitir a geração de código multi-GPU para processamento de streams e investigamos otimizações e técnicas para programação multi-GPU direcionado a sistemas multi-core. Nossas contribuições são um conjunto de algoritmos de escalonamento para fluxo de dados em multi-GPUs, que foram integrados na geração de código do SPar, suportando transparentemente o uso de multi-GPU em sistemas multi-core. Os resultados experimentais demonstraram que é possível simplificar a exploração de multi-GPU para aplicações de stream sem sacrificar o desempenho, utilizando políticas de escalonamento visando especificamente multi-GPU por meio de anotações de código como as fornecidas pelo SPar, alcançando resultados semelhantes às implementações manuais visando multi-GPU, enquanto tendo quase metade do número de linhas de código. |
Keywords: | Parallel Pogramming Data Parallelism Stream Processing Structured Parallel Programming GPU Programming Multi-GPU Programming Domain-Specific Language Algorithmic Skeletons High-Performance Computing C C++ Programação Paralela Paralelismo de Dados Processamento de Stream Programação Paralela Estruturada Programação GPU Programação Multi-GPU Linguagem Específica de Domínio Esqueletos Algorítmicos Computação de Alto Desempenho C C++ |
CNPQ Knowledge Areas: | CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO |
Language: | eng |
Country: | Brasil |
Publisher: | Pontifícia Universidade Católica do Rio Grande do Sul |
Institution Acronym: | PUCRS |
Department: | Escola Politécnica |
Program: | Programa de Pós-Graduação em Ciência da Computação |
Access type: | Acesso Aberto |
Fulltext access restriction: | Trabalho não apresenta restrição para publicação |
URI: | https://tede2.pucrs.br/tede2/handle/tede/11668 |
Issue Date: | 28-Mar-2025 |
Appears in Collections: | Programa de Pós-Graduação em Ciência da Computação |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
GABRIEL_RUSTICK_FIM_DIS.pdf | GABRIEL_RUSTICK_FIM_DIS | 3.53 MB | Adobe PDF | ![]() Download/Open Preview |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.