Spelling suggestions: "subject:"cybrid parallel programming"" "subject:"bybrid parallel programming""
1 |
Escalonamento por roubo de tarefas em sistemas Multi-CPU e Multi-GPUPinto, Vinícius Garcia January 2013 (has links)
Nos últimos anos, uma das alternativas adotadas para aumentar o desempenho de sistemas de processamento de alto desempenho têm sido o uso de arquiteturas híbridas. Essas arquiteturas são constituídas de processadores multicore e coprocessadores especializados, como GPUs. Esses coprocessadores atuam como aceleradores em alguns tipos de operações. Por outro lado, as ferramentas e modelos de programação paralela atuais não são adequados para cenários híbridos, produzindo aplicações pouco portáveis. O paralelismo de tarefas considerado um paradigma de programação genérico e de alto nível pode ser adotado neste cenário. Porém, exige o uso de algoritmos de escalonamento dinâmicos, como o algoritmo de roubo de tarefas. Neste contexto, este trabalho apresenta um middleware (WORMS) que oferece suporte ao paralelismo de tarefas com escalonamento por roubo de tarefas em sistemas híbridos multi-CPU e multi-GPU. Esse middleware permite que as tarefas tenham implementação tanto para execução em CPUs quanto em GPUs, decidindo em tempo de execução qual das implementações será executada de acordo com os recursos de hardware disponíveis. Os resultados obtidos com o WORMS mostram ser possível superar, em algumas aplicações, tanto o desempenho de ferramentas de referência para execução em CPU quanto de ferramentas para execução em GPUs. / In the last years, one of alternatives adopted to increase performance in high performance computing systems have been the use of hybrid architectures. These architectures consist of multicore processors and specialized coprocessors, like GPUs. Coprocessors act as accelerators in some types of operations. On the other hand, current parallel programming models and tools are not suitable for hybrid scenarios, generating less portable applications. Task parallelism, considered a generic and high level programming paradigm, can be used in this scenario. However, it requires the use of dynamic scheduling algorithms, such as work stealing. In this context, this work presents a middleware (WORMS) that supports task parallelism with work stealing scheduling in multi-CPU and multi-GPU systems. This middleware allows task implementations for both CPU and GPU, deciding at runtime which implementation will run according to the available hardware resources. The performance results obtained with WORMS showed that is possible to outperform both CPU and GPU reference tools in some applications.
|
2 |
Escalonamento por roubo de tarefas em sistemas Multi-CPU e Multi-GPUPinto, Vinícius Garcia January 2013 (has links)
Nos últimos anos, uma das alternativas adotadas para aumentar o desempenho de sistemas de processamento de alto desempenho têm sido o uso de arquiteturas híbridas. Essas arquiteturas são constituídas de processadores multicore e coprocessadores especializados, como GPUs. Esses coprocessadores atuam como aceleradores em alguns tipos de operações. Por outro lado, as ferramentas e modelos de programação paralela atuais não são adequados para cenários híbridos, produzindo aplicações pouco portáveis. O paralelismo de tarefas considerado um paradigma de programação genérico e de alto nível pode ser adotado neste cenário. Porém, exige o uso de algoritmos de escalonamento dinâmicos, como o algoritmo de roubo de tarefas. Neste contexto, este trabalho apresenta um middleware (WORMS) que oferece suporte ao paralelismo de tarefas com escalonamento por roubo de tarefas em sistemas híbridos multi-CPU e multi-GPU. Esse middleware permite que as tarefas tenham implementação tanto para execução em CPUs quanto em GPUs, decidindo em tempo de execução qual das implementações será executada de acordo com os recursos de hardware disponíveis. Os resultados obtidos com o WORMS mostram ser possível superar, em algumas aplicações, tanto o desempenho de ferramentas de referência para execução em CPU quanto de ferramentas para execução em GPUs. / In the last years, one of alternatives adopted to increase performance in high performance computing systems have been the use of hybrid architectures. These architectures consist of multicore processors and specialized coprocessors, like GPUs. Coprocessors act as accelerators in some types of operations. On the other hand, current parallel programming models and tools are not suitable for hybrid scenarios, generating less portable applications. Task parallelism, considered a generic and high level programming paradigm, can be used in this scenario. However, it requires the use of dynamic scheduling algorithms, such as work stealing. In this context, this work presents a middleware (WORMS) that supports task parallelism with work stealing scheduling in multi-CPU and multi-GPU systems. This middleware allows task implementations for both CPU and GPU, deciding at runtime which implementation will run according to the available hardware resources. The performance results obtained with WORMS showed that is possible to outperform both CPU and GPU reference tools in some applications.
|
3 |
Escalonamento por roubo de tarefas em sistemas Multi-CPU e Multi-GPUPinto, Vinícius Garcia January 2013 (has links)
Nos últimos anos, uma das alternativas adotadas para aumentar o desempenho de sistemas de processamento de alto desempenho têm sido o uso de arquiteturas híbridas. Essas arquiteturas são constituídas de processadores multicore e coprocessadores especializados, como GPUs. Esses coprocessadores atuam como aceleradores em alguns tipos de operações. Por outro lado, as ferramentas e modelos de programação paralela atuais não são adequados para cenários híbridos, produzindo aplicações pouco portáveis. O paralelismo de tarefas considerado um paradigma de programação genérico e de alto nível pode ser adotado neste cenário. Porém, exige o uso de algoritmos de escalonamento dinâmicos, como o algoritmo de roubo de tarefas. Neste contexto, este trabalho apresenta um middleware (WORMS) que oferece suporte ao paralelismo de tarefas com escalonamento por roubo de tarefas em sistemas híbridos multi-CPU e multi-GPU. Esse middleware permite que as tarefas tenham implementação tanto para execução em CPUs quanto em GPUs, decidindo em tempo de execução qual das implementações será executada de acordo com os recursos de hardware disponíveis. Os resultados obtidos com o WORMS mostram ser possível superar, em algumas aplicações, tanto o desempenho de ferramentas de referência para execução em CPU quanto de ferramentas para execução em GPUs. / In the last years, one of alternatives adopted to increase performance in high performance computing systems have been the use of hybrid architectures. These architectures consist of multicore processors and specialized coprocessors, like GPUs. Coprocessors act as accelerators in some types of operations. On the other hand, current parallel programming models and tools are not suitable for hybrid scenarios, generating less portable applications. Task parallelism, considered a generic and high level programming paradigm, can be used in this scenario. However, it requires the use of dynamic scheduling algorithms, such as work stealing. In this context, this work presents a middleware (WORMS) that supports task parallelism with work stealing scheduling in multi-CPU and multi-GPU systems. This middleware allows task implementations for both CPU and GPU, deciding at runtime which implementation will run according to the available hardware resources. The performance results obtained with WORMS showed that is possible to outperform both CPU and GPU reference tools in some applications.
|
4 |
PROGRAMAÇÃO PARALELA HÍBRIDA PARA CPU E GPU: UMA AVALIAÇÃO DO OPENACC FRENTE A OPENMP E CUDA / HYBRID PARALLEL PROGRAMMING FOR CPU AND GPU: AN EVALUATION OF OPENACC AS RELATED TO OPENMP AND CUDASulzbach, Maurício 22 August 2014 (has links)
As a consequence of the CPU and GPU's architectures advance, in the last years there
was a raise of the number of parallel programming APIs for both devices. While OpenMP is
used to make parallel programs for the CPU, CUDA and OpenACC are employed in the
parallel processing in the GPU. In the programming for the GPU, CUDA presents a model
based on functions that make the source code extensive and prone to errors, in addition to
leading to low development productivity. OpenACC emerged aiming to solve these problems
and to be an alternative to the utilization of CUDA. Similar to OpenMP, this API has policies
that ease the development of parallel applications that run on the GPU only. To further
increase performance and take advantage of the parallel aspects of both CPU and GPU, it is
possible to develop hybrid algorithms that split the processing on the two devices. In that
sense, the main objective of this work is to verify if the advantages that OpenACC introduces
are also positively reflected on the hybrid programming using OpenMP, if compared to the
OpenMP + CUDA model. A second objective of this work is to identify aspects of the two
programming models that could limit the performance or on the applications' development.
As a way to accomplish these goals, this work presents the development of three hybrid
parallel algorithms that are based on the Rodinia's benchmark algorithms, namely, RNG,
Hotspot and SRAD, using the hybrid models OpenMP + CUDA and OpenMP + OpenACC.
In these algorithms, the CPU part of the code is programmed using OpenMP, while it's
assigned for the CUDA and OpenACC the parallel processing on the GPU. After the
execution of the hybrid algorithms, the performance, efficiency and the processing's splitting
in each one of the devices were analyzed. It was verified, through the hybrid algorithms' runs,
that, in the two proposed programming models it was possible to outperform the performance
of a parallel application that runs on a single API and in only one of the devices. In addition to
that, in the hybrid algorithms RNG and Hotspot, CUDA's performance was superior to that of
OpenACC, while in the SRAD algorithm OpenACC was faster than CUDA. / Como consequência do avanço das arquiteturas de CPU e GPU, nos últimos anos
houve um aumento no número de APIs de programação paralela para os dois dispositivos.
Enquanto que OpenMP é utilizada no processamento paralelo em CPU, CUDA e OpenACC
são empregadas no processamento paralelo em GPU. Na programação para GPU, CUDA
apresenta um modelo baseado em funções que deixam o código fonte extenso e propenso a
erros, além de acarretar uma baixa produtividade no desenvolvimento. Objetivando solucionar
esses problemas e sendo uma alternativa à utilização de CUDA surgiu o OpenACC.
Semelhante ao OpenMP, essa API disponibiliza diretivas que facilitam o desenvolvimento de
aplicações paralelas, porém para execução em GPU. Para aumentar ainda mais o desempenho
e tirar proveito da capacidade de paralelismo de CPU e GPU, é possível desenvolver
algoritmos híbridos que dividam o processamento nos dois dispositivos. Nesse sentido, este
trabalho objetiva verificar se as facilidades que o OpenACC introduz também refletem
positivamente na programação híbrida com OpenMP, se comparado ao modelo OpenMP +
CUDA. Além disso, o trabalho visa relatar as limitações nos dois modelos de programação
híbrida que possam influenciar no desempenho ou no desenvolvimento de aplicações. Como
forma de cumprir essas metas, este trabalho apresenta o desenvolvimento de três algoritmos
paralelos híbridos baseados nos algoritmos do benchmark Rodinia, a saber, RNG, Hotspot e
SRAD, utilizando os modelos híbridos OpenMP + CUDA e OpenMP + OpenACC. Nesses
algoritmos é atribuída ao OpenMP a execução paralela em CPU, enquanto que CUDA e
OpenACC são responsáveis pelo processamento paralelo em GPU. Após as execuções dos
algoritmos híbridos foram analisados o desempenho, a eficiência e a divisão da execução em
cada um dos dispositivos. Verificou-se através das execuções dos algoritmos híbridos que nos
dois modelos de programação propostos foi possível superar o desempenho de uma aplicação
paralela em uma única API, com execução em apenas um dos dispositivos. Além disso, nos
algoritmos híbridos RNG e Hotspot o desempenho de CUDA foi superior ao desempenho de
OpenACC, enquanto que no algoritmo SRAD a API OpenACC apresentou uma execução
mais rápida, se comparada à API CUDA.
|
Page generated in 0.1106 seconds