Paralelização automática de laços para arquiteturas multicore
Autor(a) principal: | |
---|---|
Data de Publicação: | 2010 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
Texto Completo: | https://hdl.handle.net/20.500.12733/1614004 |
Resumo: | Orientador: Sandro Rigo |
id |
UNICAMP-30_22dc0f8b533337b97e2c28fb943739a7 |
---|---|
oai_identifier_str |
oai::782519 |
network_acronym_str |
UNICAMP-30 |
network_name_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository_id_str |
|
spelling |
Paralelização automática de laços para arquiteturas multicoreAutomatic loop parallelization for multicore architecturesProcessadores multicoreArquitetura de computadorPolitópicosMulticore processorsComputer architecturePolytopesOrientador: Sandro RigoDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: Embora muitos programas possuam uma forma regular de paralelismo, que pode ser expressa em termos de laços paralelos, muitos exemplos importantes não a possuem. Loop skewing é uma transformação que remodela o espaço de iteração dos laços para que seja possível expressar o paralelismo implícito através de laços paralelos. Como consequência da complexidade em se modificar o espaço de iteração dos laços, e de possíveis problemas causados por transformações deste tipo - como o possível aumento na taxa de miss em caches -, no geral, elas não são largamente utilizadas. Neste projeto, implementamos a transformação loop skewing sobre o compilador da linguagem C presente no GCC (GNU Compiler Collection), de forma a permitir a assistência pelo programador. Utilizamos a ferramenta Graphite como base para a implementação da otimização, apenas representando-a como uma transformação afim sobre um objeto matemático multidimensional chamado polítopo. Mostramos, através de um estudo detalhado sobre o modelo matemático denominado modelo politópico, que laços com estruturas específicas - perfeitamente aninhados, com limites e acesso á memória descritos por funções afins - poderiam ser representados como polítopos, e que transformações aplicadas a estes seriam espelhadas no código gerado a partir desses polítopos. Dessa forma, qualquer transformação que possa ser estruturada como uma transformação afim sobre um polítopo, poderá ser implementada. Mostramos, ainda, durante a análise de desempenho, que transformações deste tipo são viáveis e, apesar de algumas limitações impostas pela infraestrutura do GCC, aumentam relativamente o desempenho das aplicações compiladas com ela - obtivemos um ganho máximo de aproximadamente 115% para o uso de quatro threads em uma das aplicações executadas. Verificamos o impacto do uso de programas já paralelizados manualmente sobre a plataforma, e obtivemos um ganho máximo de 11% nesses casos, mostrando que ainda aplicações paralelizadas podem conter paralelismo implícitoAbstract: Although many programs present a regular form of parallelism, which can be expressed as parallel loops, many important examples do not. Loop skewing is a transformation that reorganizes the iteration space of loops to make it possible to expose the implicit parallelism through parallel loops. In general, as a consequence of the complexity in modifying the iteration space of loops, and possible problems caused by such changes - such as the possibility of increasing the miss rate in caches -, they are not widely used. In this work, the loop skewing transformation was implemented on GCC's C compiler (GNU Compiler Collection), allowing programmer's assistance. Graphite provides us a basis for implementation of the optimization, just representing it as an a_ne transformation on a multidimensional mathematical object called polytope. We show, through a detailed study about the mathematical model called polytope model, that for a very restricted loop structure - perfectly nested, with limits and memory accesses described by a_ne functions - could be represented as polytopes, and transformations applied to these would be carried by the code generated from these polytope. Thus, any transformation that could be structured as an a_ne transformation on a polytope, could be added. We also show, by means of performance analysis, that this type of transformation is feasible and, despite some limitations imposed by the still under development GCC's infrastructure for auto-parallelization, fairly increases the performance of some applications compiled with it - we achived a maximum of about 115% using four threads with one of the applications. We also veriéd the impact of using manually parallelized programs on this platform, and achieved a maximum gain of 11% in these cases, showing that even parallel applications may have implicit parallelismMestradoCiência da ComputaçãoMestre em Ciência da Computação[s.n.]Rigo, Sandro, 1975-Santos, Ricardo Ribeiro dosAraújo, Guido Costa Souza deUniversidade Estadual de Campinas (UNICAMP). Instituto de ComputaçãoPrograma de Pós-Graduação em Ciência da ComputaçãoUNIVERSIDADE ESTADUAL DE CAMPINASVieira, Cristianno Martins20102010-08-11T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdf77 f.https://hdl.handle.net/20.500.12733/1614004https://repositorio.unicamp.br/acervo/detalhe/782519porreponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)instname:Universidade Estadual de Campinas (UNICAMP)instacron:UNICAMPinfo:eu-repo/semantics/openAccess2017-02-18T06:07:33Zoai::782519Biblioteca Digital de Teses e DissertaçõesPUBhttp://repositorio.unicamp.br/oai/tese/oai.aspsbubd@unicamp.bropendoar:2017-02-18T06:07:33Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP)false |
dc.title.none.fl_str_mv |
Paralelização automática de laços para arquiteturas multicore Automatic loop parallelization for multicore architectures |
title |
Paralelização automática de laços para arquiteturas multicore |
spellingShingle |
Paralelização automática de laços para arquiteturas multicore Vieira, Cristianno Martins Processadores multicore Arquitetura de computador Politópicos Multicore processors Computer architecture Polytopes |
title_short |
Paralelização automática de laços para arquiteturas multicore |
title_full |
Paralelização automática de laços para arquiteturas multicore |
title_fullStr |
Paralelização automática de laços para arquiteturas multicore |
title_full_unstemmed |
Paralelização automática de laços para arquiteturas multicore |
title_sort |
Paralelização automática de laços para arquiteturas multicore |
author |
Vieira, Cristianno Martins |
author_facet |
Vieira, Cristianno Martins |
author_role |
author |
dc.contributor.none.fl_str_mv |
Rigo, Sandro, 1975- Santos, Ricardo Ribeiro dos Araújo, Guido Costa Souza de Universidade Estadual de Campinas (UNICAMP). Instituto de Computação Programa de Pós-Graduação em Ciência da Computação UNIVERSIDADE ESTADUAL DE CAMPINAS |
dc.contributor.author.fl_str_mv |
Vieira, Cristianno Martins |
dc.subject.por.fl_str_mv |
Processadores multicore Arquitetura de computador Politópicos Multicore processors Computer architecture Polytopes |
topic |
Processadores multicore Arquitetura de computador Politópicos Multicore processors Computer architecture Polytopes |
description |
Orientador: Sandro Rigo |
publishDate |
2010 |
dc.date.none.fl_str_mv |
2010 2010-08-11T00:00:00Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://hdl.handle.net/20.500.12733/1614004 |
url |
https://hdl.handle.net/20.500.12733/1614004 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
https://repositorio.unicamp.br/acervo/detalhe/782519 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf 77 f. |
dc.publisher.none.fl_str_mv |
[s.n.] |
publisher.none.fl_str_mv |
[s.n.] |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) instname:Universidade Estadual de Campinas (UNICAMP) instacron:UNICAMP |
instname_str |
Universidade Estadual de Campinas (UNICAMP) |
instacron_str |
UNICAMP |
institution |
UNICAMP |
reponame_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
collection |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP) |
repository.mail.fl_str_mv |
sbubd@unicamp.br |
_version_ |
1809189045656354816 |