@PHDTHESIS{ 2014:1793929959, title = {Um processo de gera??o autom?tica de c?digo paralelo para arquiteturas h?bridas com afinidade de mem?ria}, year = {2014}, url = "http://tede2.pucrs.br/tede2/handle/tede/7390", abstract = "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.", publisher = {Pontif?cia Universidade Cat?lica do Rio Grande do Sul}, scholl = {Programa de P?s-Gradua??o em Ci?ncia da Computa??o}, note = {Faculdade de Inform?tica} }