| Processo: | 19/04536-9 |
| Modalidade de apoio: | Bolsas no Brasil - Doutorado |
| Data de Início da vigência: | 01 de abril de 2019 |
| Data de Término da vigência: | 31 de dezembro de 2022 |
| Área de 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 |
| Palavra(s)-Chave do Pesquisador: | Loop Carried Dependence | parallel programming | Perfomance and Debugging | Programação Paralela, Desempenho, Análise de dependência de Laços, Depuração |
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) | |
| Matéria(s) publicada(s) na Agência FAPESP sobre a bolsa: | |
| Mais itensMenos itens | |
| TITULO | |
| Matéria(s) publicada(s) em Outras Mídias ( ): | |
| Mais itensMenos itens | |
| VEICULO: TITULO (DATA) | |
| VEICULO: TITULO (DATA) | |