Export this record: EndNote BibTex

Please use this identifier to cite or link to this item: https://tede2.pucrs.br/tede2/handle/tede/7390
Document type: Tese
Title: Um processo de geração automática de código paralelo para arquiteturas híbridas com afinidade de memória
Other Titles: An automatic parallel code generation process for hybrid architectures using memory affinity
Author: Raeder, Mateus 
Advisor: Fernandes, Luiz Gustavo Leão
Abstract (native): 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.
Abstract (english): 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.
Keywords: Programação Híbrida
Afinidade de Memória
Cluster de NUMA
CNPQ Knowledge Areas: CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Language: por
Country: Brasil
Publisher: Pontifícia Universidade Católica do Rio Grande do Sul
Institution Acronym: PUCRS
Department: Faculdade de Informática
Program: Programa de Pós-Graduação em Ciência da Computação
Access type: Acesso Aberto
URI: http://tede2.pucrs.br/tede2/handle/tede/7390
Issue Date: 27-Aug-2014
Appears in Collections:Programa de Pós-Graduação em Ciência da Computação

Files in This Item:
File Description SizeFormat 
TES_MATEUS_RAEDER_COMPLETO.pdfTexto Completo6.3 MBAdobe PDFThumbnail

Download/Open Preview


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.