Busca avançada
Ano de início
Entree

Melhorando o desempenho do cálculo da seção de choque transversal através de anotações de componentes

Processo: 19/04536-9
Linha de fomento:Bolsas no Brasil - Doutorado
Vigência (Início): 01 de abril de 2019
Vigência (Término): 31 de março de 2021
Área do conhecimento:Ciências Exatas e da Terra - Ciência da Computação - Sistemas de Computação
Pesquisador responsável:Guido Costa Souza de Araújo
Beneficiário:Bruno Chinelato Honorio
Instituição-sede: Instituto de Computação (IC). Universidade Estadual de Campinas (UNICAMP). Campinas , SP, Brasil
Vinculado ao auxílio:13/08293-7 - CECC - Centro de Engenharia e Ciências Computacionais, AP.CEPID
Assunto(s):Programação paralela   Análise de desempenho

Resumo

Compiladores contemporâneos implementam várias técnicas de paralelização, porém, essas técnicas geralmente se restringem à laços que não possuem dependências, ou são dependências que são simples de resolver, como no caso de reduções de operações aritméticas. Essas restrições impedem a paralelização de laços que possuem dependências. Laços com dependência podem apresentar dois cenários: (i) o compilador identifica a dependência; (ii) o compilador não consegue provar que não existe dependência em tempo de compilação, mesmo que não se manifeste nenhuma dependência durante a execução. Compiladores do estado da arte e abrangentemente usados, como o LLVM e o GCC, não paralelizam laços com dependências automaticamente. Para resolver esse problema, estudantes de pós-graduação do Instituto de Computação da UNICAMP iniciaram o desenvolvimento de um novo mecanismo que, ao determinar os componentes sequenciais de um laço, o programador pode aplicar um algoritmo de paralelização sobre os componentes paralelizáveis do mesmo. Este trabalho de doutorado tem como objetivo realizar uma série de modificações sobre este mecanismo: torná-lo completamente independente de qualquer aplicação, facilitando a adição de novos algoritmos de paralelização; modificar a semântica do mecanismo, para facilitar a sua utilização; permitir que o mecanismo seja usado em um número maior de laços; e oferecer automatizações sobre a execução do mecanismo. Assim, com essa modificações, desenvolvedores podem adicionar novas funcionalidades ao mecanismo, assim como utilizar o mecanismo de maneira mais fácil e simples para um número maior de aplicações e laços. Esse mecanismo então será aplicado sobre um problema de química real: o cálculo da seção de choque transversal, utilizado para ajudar na identificação e caracterização de um íon. Este cálculo é bastante custoso e alguns trabalhos já criaram técnicas de paralelização para acelerá-lo, mas nenhum visando a aceleração de laços com dependências. Em particular, o mecanismo será aplicado em um software desenvolvido para o cálculo da seção de choque transversal que oferece novas abordagens para realizar este cálculo de maneira mais eficiente. Desta forma, o objetivo deste trabalho se resume em explorar agressivamente laços com dependências e demonstrar, em cima de um problema real, o potencial ganho de desempenho que esses laços podem apresentar. (AU)