Spelling suggestions: "subject:"programa??o H?bride"" "subject:"programa??o H?árida""
1 |
Um processo de gera??o autom?tica de c?digo paralelo para arquiteturas h?bridas com afinidade de mem?ria / An automatic parallel code generation process for hybrid architectures using memory affinityRaeder, Mateus 27 August 2014 (has links)
Submitted by Caroline Xavier (caroline.xavier@pucrs.br) on 2017-06-29T13:36:54Z
No. of bitstreams: 1
TES_MATEUS_RAEDER_COMPLETO.pdf: 6448267 bytes, checksum: af90fc3a763acd6de5c2203df411193f (MD5) / Made available in DSpace on 2017-06-29T13:36:54Z (GMT). No. of bitstreams: 1
TES_MATEUS_RAEDER_COMPLETO.pdf: 6448267 bytes, checksum: af90fc3a763acd6de5c2203df411193f (MD5)
Previous issue date: 2014-08-27 / Over the last years, technological advances provide machines with different levels
of parallelism, producing a great impact in high-performance computing area. These advances
allowed developers to improve further the performance of large scale applications. In
this context, clusters of multiprocessor machines with Non-Uniform Memory Access (NUMA)
are a trend in parallel processing. In NUMA architectures, the access time to data depends
on where it is placed in memory. For this reason, managing data location is essential in
this type of machine. In this scenario, developing software for a cluster of NUMA machines
must explore the internode part (multicomputer, with distributed memory) and the intranode
part (multiprocessor, with shared memory) of this architecture. This type of hybrid programming
takes advantage of all features provided by NUMA architectures. However, rewriting
a sequential application so that it exploits the parallelism of the environment correctly is not
a trivial task, but can be facilitated through an automated process. In this sense, our work
presents an automatic parallel code generation process for hybrid architectures. With the
proposed approach, users do not need to know low level routines of parallel programming
libraries. In order to do so, we developed a graphical tool, in which users can dynamically
and intuitively create their parallel models. Thereby, it is possible to create parallel programs
in such a way that is not required to be familiar with libraries commonly used by professionals
of high performance computing area (such as MPI, for example). By using the developed
tool, user draws a directed graph to indicate the number of processes (nodes of the graph)
and the communication between them (edges). From this drawing, user inserts the sequential
code of each process defined in the graphical interface, and the tool automatically
generates the corresponding parallel code. Moreover, weight process and memory mappings
were defined and tested on a NUMA machine cluster, as well as a hybrid mapping. The tool was developed in Java and generates parallel code with MPI for C++, in the same
way that it applies memory affinity policies for NUMA machines through the Memory Affinity
Interface (MAI) library. Some applications were developed with and without our model. The
obtained results evidence that the proposed mapping is valid, providing performance gains
in relation to sequential versions and behaving in a very similar way to traditional parallel
implementations. / Nos ?ltimos anos, avan?os tecnol?gicos t?m disponibilizado m?quinas com diferentes
n?veis de paralelismo, produzindo um grande impacto na ?rea de processamento de
alto desempenho. Estes avan?os permitiram aos desenvolvedores melhorar ainda mais o
desempenho de aplica??es de grande porte. Neste contexto, a cria??o de clusters de m?quinas
multiprocessadas com acesso n?o uniforme ? mem?ria (NUMA - Non-Uniform Memory
Access), surge como uma tend?ncia. Em uma arquitetura NUMA, o tempo de acesso
a um dado depende de sua localiza??o na mem?ria. Por este motivo, gerenciar a localiza??o
dos dados ? essencial em m?quinas deste tipo. Neste cen?rio, o desenvolvimento de
software para um cluster de m?quinas NUMA deve explorar tanto a parte internodo (multicomputador,
com mem?ria distribu?da) quanto a parte intranodo (multiprocessador, mem?ria
compartilhada) desta arquitetura. Este tipo de programa??o h?brida faz melhor uso dos
recursos disponibilizados por arquiteturas NUMA. Entretanto, reescrever uma aplica??o sequencial
de modo que explore o paralelismo do ambiente de forma correta n?o ? uma tarefa
trivial, mas que pode ser facilitada atrav?s de um processo automatizado. Neste sentido, o
presente trabalho apresenta um processo de gera??o autom?tica e transparente de aplica??es
paralelas h?bridas, sem que o usu?rio precise conhecer as rotinas de baixo n?vel das
bibliotecas de programa??o paralela. Foi desenvolvida ent?o, uma ferramenta gr?fica para
que o usu?rio crie seu modelo paralelo de forma din?mica e intuitiva. Assim, ? poss?vel
criar programas paralelos de tal forma que n?o ? necess?rio ser familiarizado com bibliotecas
comumente utilizadas por profissionais da ?rea de alto desempenho (como o MPI, por
exemplo). Atrav?s da ferramenta desenvolvida, o usu?rio desenha um grafo dirigido para
indicar a quantidade de processos (nodos do grafo) e as formas de comunica??o entre eles
(arestas). A partir desse desenho, o usu?rio insere o c?digo sequencial de cada processo definido na interface gr?fica, e a ferramenta gera o c?digo paralelo correspondente. Al?m
disto, mapeamentos de processos pesados e de mem?ria foram definidos e testados em um
cluster de m?quinas NUMA, bem como um mapeamento h?brido. A ferramenta foi desenvolvida
em Java e gera c?digo paralelo com MPI em C++, al?m de aplicar pol?ticas de afinidade
de mem?ria para m?quinas NUMA atrav?s da biblioteca MAI (Memory Affinity Interface). Algumas
aplica??es foram desenvolvidas com e sem a utiliza??o do modelo. Os resultados
demonstram que o mapeamento proposto ? v?lido, j? que houve ganho de desempenho
em rela??o ?s vers?es sequenciais, al?m de um comportamento similar a implementa??es
paralelas tradicionais.
|
Page generated in 0.053 seconds