1 |
A Graphical Representation of Exposed ParallelismRodriguez Villamizar, Gustavo Enrique 01 July 2017 (has links)
Modern-day microprocessors are measured in part by their parallel performance. Parallelizing sequential programs is a complex task, requiring data dependence analysis of the program constructs. Researchers in the field of parallel optimization are working on shifting the optimization effort from the programmer to the compiler. The goal of this work is for the compiler to visually expose the parallel characteristics of the program to researchers as well as programmers for a better understanding of the parallel properties of their programs. In order to do that we developed Exposed Parallelism Visualization (EPV), a statically-generated graphical tool that builds a parallel task graph of source code after it has been converted to the LLVM compiler frameworkq s Intermediate Representation (IR). The goal is for this visual representation of IR to provide new insights about the parallel properties of the program without having to execute the program. This will help researchers and programmers to understand if and where parallelism exists in the program at compile time. With this understanding, researchers will be able to more easily develop compiler algorithms that identify parallelism and improve program performance, and programmers will easily identify parallelizable sections of code that can be executed in multiple cores or accelerators such as GPUs or FPGAs. To the best of our knowledge, EPV is the first static visualization tool made for the identification of parallelism.
|
2 |
HPSM: uma API em linguagem c++ para programas com laços paralelos com suporte a multi-CPUs e Multi-GPUs / HPSM: a c++ API for parallel loops programs Supporting multi-CPUs and multi-GPUsDi Domenico, Daniel 21 December 2016 (has links)
Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPES / Parallel architectures has been ubiquitous for some time now. However, the word ubiquitous
can’t be applied to parallel programs, because there is a greater complexity to code them comparing
to ordinary programs. This fact is aggravated when the programming also involves accelerators,
like GPUs, which demand the use of tools with scpecific resources. Considering this
setting, there are programming models that make easier the codification of parallel applications
to explore accelerators, nevertheless, we don’t know APIs that allow implementing programs
with parallel loops that can be processed simultaneously by multiple CPUs and multiple GPUs.
This works presents a high-level C++ API called HPSM aiming to make easier and more efficient
the codification of parallel programs intended to explore multi-CPU and multi-GPU
architectures. Following this idea, the desire is to improve performance through the sum of
resources. HPSM uses parallel loops and reductions implemented by three parallel back-ends,
being Serial, OpenMP and StarPU. Our hypothesis estimates that scientific applications can explore
heterogeneous processing in multi-CPU and multi-GPU to achieve a better performance
than exploring just accelerators. Comparisons with other parallel programming interfaces demonstrated
that HPSM can reduce a multi-CPU and multi-GPU code in more than 50%. The
use of the new API can introduce impact to program performance, where experiments showed
a variable overhead for each application, that can achieve a maximum value of 16,4%. The experimental
results confirmed the hypothesis, because the N-Body, Hotspot e CFD applications
achieved gains using just CPUs and just GPUs, as well as overcame the performance achieved
by just accelerators (GPUs) through the combination of multi-CPU and multi-GPU. / Arquiteturas paralelas são consideradas ubíquas atualmente. No entanto, o mesmo termo não
pode ser aplicado aos programas paralelos, pois existe uma complexidade maior para codificálos
em relação aos programas convencionais. Este fato é agravado quando a programação envolve
também aceleradores, como GPUs, que demandam o uso de ferramentas com recursos
muito específicos. Neste cenário, apesar de existirem modelos de programação que facilitam
a codificação de aplicações paralelas para explorar aceleradores, desconhece-se a existência de
APIs que permitam a construção de programas com laços paralelos que possam ser processados
simultaneamente em múltiplas CPUs e múltiplas GPUs. Este trabalho apresenta uma API C++
de alto nível, denominada HPSM, visando facilitar e tornar mais eficiente a codificação de programas
paralelos voltados a explorar arquiteturas com multi-CPU e multi-GPU. Seguindo esta
ideia, deseja-se ganhar desempenho através da soma dos recursos. A HPSM é baseada em laços
e reduções paralelas implementadas por meio de três diferentes back-ends paralelos, sendo Serial,
OpenMP e StarPU. A hipótese deste estudo é que aplicações científicas podem valer-se do
processamento heterogêneo em multi-CPU e multi-GPU para alcançar um desempenho superior
em relação ao uso de apenas aceleradores. Comparações com outras interfaces de programação
paralela demonstraram que o uso da HPSM pode reduzir em mais de 50% o tamanho de um
programa multi-CPU e multi-GPU. O uso da nova API pode trazer impacto no desempenho do
programa, sendo que experimentos demonstraram que seu sobrecusto é variável de acordo com
a aplicação, chegando até 16,4%. Os resultados experimentais confirmaram a hipótese, pois
as aplicações N-Body, Hotspot e CFD, além de alcançarem ganhos ao utilizar somente CPUs
e somente GPUs, também superaram o desempenho obtido por somente aceleradores (GPUs)
através da combinação de multi-CPU e multi-GPU.
|
Page generated in 0.0926 seconds