Paralelização automática de laços para arquiteturas multicore

Orientador: Sandro Rigo === Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação === Made available in DSpace on 2018-08-17T08:17:12Z (GMT). No. of bitstreams: 1 Vieira_CristiannoMartins_M.pdf: 1981128 bytes, checksum: 5af9a00808029ad96cd8d02e569b1cda (MD5) Previous...

Full description

Bibliographic Details
Main Author: Vieira, Cristianno Martins
Other Authors: UNIVERSIDADE ESTADUAL DE CAMPINAS
Format: Others
Language:Portuguese
Published: [s.n.] 2010
Subjects:
Online Access:VIEIRA, Cristianno Martins. Paralelização automática de laços para arquiteturas multicore. 2010. 77 f. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: <http://www.repositorio.unicamp.br/handle/REPOSIP/275769>. Acesso em: 17 ago. 2018.
http://repositorio.unicamp.br/jspui/handle/REPOSIP/275769
id ndltd-IBICT-oai-repositorio.unicamp.br-REPOSIP-275769
record_format oai_dc
collection NDLTD
language Portuguese
format Others
sources NDLTD
topic Processadores multicore
Arquitetura de computador
Politopos
Multicore processors
Computer architecture
Polytopes
spellingShingle Processadores multicore
Arquitetura de computador
Politopos
Multicore processors
Computer architecture
Polytopes
Vieira, Cristianno Martins
Paralelização automática de laços para arquiteturas multicore
description Orientador: Sandro Rigo === Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação === Made available in DSpace on 2018-08-17T08:17:12Z (GMT). No. of bitstreams: 1 Vieira_CristiannoMartins_M.pdf: 1981128 bytes, checksum: 5af9a00808029ad96cd8d02e569b1cda (MD5) Previous issue date: 2010 === Resumo: 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ícito === Abstract: 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 parallelism === Mestrado === Ciência da Computação === Mestre em Ciência da Computação
author2 UNIVERSIDADE ESTADUAL DE CAMPINAS
author_facet UNIVERSIDADE ESTADUAL DE CAMPINAS
Vieira, Cristianno Martins
author Vieira, Cristianno Martins
author_sort Vieira, Cristianno Martins
title Paralelização automática de laços para arquiteturas multicore
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
publisher [s.n.]
publishDate 2010
url VIEIRA, Cristianno Martins. Paralelização automática de laços para arquiteturas multicore. 2010. 77 f. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: <http://www.repositorio.unicamp.br/handle/REPOSIP/275769>. Acesso em: 17 ago. 2018.
http://repositorio.unicamp.br/jspui/handle/REPOSIP/275769
work_keys_str_mv AT vieiracristiannomartins paralelizacaoautomaticadelacosparaarquiteturasmulticore
AT vieiracristiannomartins automaticloopparallelizationformulticorearchitectures
_version_ 1718881478157271040
spelling ndltd-IBICT-oai-repositorio.unicamp.br-REPOSIP-2757692019-01-21T21:10:35Z Paralelização automática de laços para arquiteturas multicore Automatic loop parallelization for multicore architectures Vieira, Cristianno Martins UNIVERSIDADE ESTADUAL DE CAMPINAS Rigo, Sandro, 1975- Santos, Ricardo Ribeiro dos Araújo, Guido Costa Souza de Processadores multicore Arquitetura de computador Politopos Multicore processors Computer architecture Polytopes Orientador: Sandro Rigo Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação Made available in DSpace on 2018-08-17T08:17:12Z (GMT). No. of bitstreams: 1 Vieira_CristiannoMartins_M.pdf: 1981128 bytes, checksum: 5af9a00808029ad96cd8d02e569b1cda (MD5) Previous issue date: 2010 Resumo: 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ícito Abstract: 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 parallelism Mestrado Ciência da Computação Mestre em Ciência da Computação 2010 2018-08-17T08:17:12Z 2018-08-17T08:17:12Z 2010-08-11T00:00:00Z info:eu-repo/semantics/publishedVersion info:eu-repo/semantics/masterThesis VIEIRA, Cristianno Martins. Paralelização automática de laços para arquiteturas multicore. 2010. 77 f. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: <http://www.repositorio.unicamp.br/handle/REPOSIP/275769>. Acesso em: 17 ago. 2018. http://repositorio.unicamp.br/jspui/handle/REPOSIP/275769 por info:eu-repo/semantics/openAccess 77 f. application/octet-stream [s.n.] Universidade Estadual de Campinas. Instituto de Computação Programa de Pós-Graduação em Ciência da Computação reponame:Repositório Institucional da Unicamp instname:Universidade Estadual de Campinas instacron:UNICAMP